diff options
| author | 2010-09-03 15:23:27 +0000 | |
|---|---|---|
| committer | 2010-09-03 15:23:27 +0000 | |
| commit | a27933290601425bd856a22da5135f16c5e87f62 (patch) | |
| tree | da7569f32d338d99d5df3811ada75ecb78cfff76 /src | |
| parent | added userlist module: userlist.select userlist.ensureVisible $userlist.selec... (diff) | |
| download | KVIrc-a27933290601425bd856a22da5135f16c5e87f62.tar.gz KVIrc-a27933290601425bd856a22da5135f16c5e87f62.tar.bz2 KVIrc-a27933290601425bd856a22da5135f16c5e87f62.zip | |
added separatorid to defpopup (fixes #938)
enable condition editing for separators in popup editor
git-svn-id: https://svn.kvirc.de/svn/trunk/kvirc@4974 17fca916-40b9-46aa-a4ea-0a15b648b75c
Diffstat (limited to 'src')
| -rw-r--r-- | src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp | 22 | ||||
| -rw-r--r-- | src/modules/popupeditor/popupeditor.cpp | 30 |
2 files changed, 44 insertions, 8 deletions
diff --git a/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp b/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp index cfe7ccf68..9d9d9dd48 100644 --- a/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp +++ b/src/kvirc/kvs/kvi_kvs_parser_specialcommands.cpp @@ -1604,7 +1604,7 @@ KviKvsTreeNodeSpecialCommandDefpopupLabelPopup * KviKvsParser::parseSpecialComma while(KVSP_curCharUnicode != '}') { - // look for 'label', 'prologue', 'epilogue', 'popup', 'item', 'separator' or 'extpopup' label + // look for 'label', 'prologue', 'epilogue', 'popup', 'item', 'separator', 'separatorid' or 'extpopup' label const QChar * pLabelBegin = KVSP_curCharPointer; while(KVSP_curCharIsLetter)KVSP_skipChar; @@ -1617,7 +1617,7 @@ KviKvsTreeNodeSpecialCommandDefpopupLabelPopup * KviKvsParser::parseSpecialComma if(KVSP_curCharPointer == pLabelBegin) { - error(KVSP_curCharPointer,__tr2qs_ctx("Found character %q (unicode %x) where a 'prologue', 'separator', 'label', 'popup', 'item', 'extpopup' or 'epilogue' label was expected","kvs"),KVSP_curCharPointer,KVSP_curCharUnicode); + error(KVSP_curCharPointer,__tr2qs_ctx("Found character %q (unicode %x) where a 'prologue', 'separator', 'separatorid', 'label', 'popup', 'item', 'extpopup' or 'epilogue' label was expected","kvs"),KVSP_curCharPointer,KVSP_curCharUnicode); delete pPopup; return 0; } @@ -1733,13 +1733,20 @@ KviKvsTreeNodeSpecialCommandDefpopupLabelPopup * KviKvsParser::parseSpecialComma if(pParameters)delete pParameters; } else if(szLabelLow == "separator") { - // FIXME: Separators can't have labels here :((((( ///////////////////////////////////////////////////////////////////////////////////////////////// EXTRACT_POPUP_LABEL_CONDITION if(KVSP_curCharUnicode == ';')KVSP_skipChar; - QString szItemName = "dummySeparator"; // <------- FIXME! + QString szItemName = "dummySeparator"; pPopup->addLabel(new KviKvsTreeNodeSpecialCommandDefpopupLabelSeparator(pLabelBegin,szCondition,szItemName)); - + } else if(szLabelLow == "separatorid") + { + ///////////////////////////////////////////////////////////////////////////////////////////////// + EXTRACT_POPUP_LABEL_PARAMETERS + EXTRACT_POPUP_LABEL_CONDITION + if(KVSP_curCharUnicode == ';')KVSP_skipChar; + QString * pItemName = pParameters ? pParameters->first() : 0; + pPopup->addLabel(new KviKvsTreeNodeSpecialCommandDefpopupLabelSeparator(pLabelBegin,szCondition,pItemName ? *pItemName : QString())); + delete pParameters; } else if(szLabelLow == "label") { ///////////////////////////////////////////////////////////////////////////////////////////////// @@ -1867,7 +1874,7 @@ KviKvsTreeNodeSpecialCommandDefpopupLabelPopup * KviKvsParser::parseSpecialComma delete pParameters; } else { ///////////////////////////////////////////////////////////////////////////////////////////////// - error(pLabelBegin,__tr2qs_ctx("Found token '%Q' where a 'prologue', 'separator', 'label', 'popup', 'item', 'extpopup' or 'epilogue' label was expected","kvs"),&szLabel); + error(pLabelBegin,__tr2qs_ctx("Found token '%Q' where a 'prologue', 'separator', 'separatorid', 'label', 'popup', 'item', 'extpopup' or 'epilogue' label was expected","kvs"),&szLabel); delete pPopup; return 0; } @@ -1914,6 +1921,7 @@ KviKvsTreeNodeCommand * KviKvsParser::parseSpecialCommandDefpopup() extpopup(<text>,<name>[,<icon>[,<id>]])[(<expression>)][;] separator[(<expression>)][;] + separatorid[(<id>)][(<expression>)][;] ... } @short: @@ -1941,6 +1949,8 @@ KviKvsTreeNodeCommand * KviKvsParser::parseSpecialCommandDefpopup() basically allows to nest popup menus and define their parts separately. <icon> and <expression> have the same meaning as with the 'item' keyword.[br] The 'separator' keyword adds a straight line between items (separator).[br] + The 'separatorid' keyword adds a straight line between items, but permits to + specify a separator id.[br] The 'label' keywork adds a descriptive label that acts like a separator.[br] The 'prologue' keyword adds a <prologue_command> to be executed just before the popup is filled at [cmd]popup[/cmd] command call.[br] diff --git a/src/modules/popupeditor/popupeditor.cpp b/src/modules/popupeditor/popupeditor.cpp index 02ad0f26d..855e23571 100644 --- a/src/modules/popupeditor/popupeditor.cpp +++ b/src/modules/popupeditor/popupeditor.cpp @@ -129,6 +129,7 @@ void KviPopupTreeWidgetItem::setCondition(const QString & szCondition) case Menu: case Label: case ExtMenu: + case Separator: m_szCondition = szCondition; break; default: @@ -704,6 +705,18 @@ void KviSinglePopupEditor::saveLastSelectedItem() case KviPopupTreeWidgetItem::Label: case KviPopupTreeWidgetItem::ExtMenu: m_pLastSelectedItem->setItemText(m_pTextEditor->text()); + break; + default: + break; + } + + switch(m_pLastSelectedItem->m_type) + { + case KviPopupTreeWidgetItem::Menu: + case KviPopupTreeWidgetItem::Item: + case KviPopupTreeWidgetItem::Label: + case KviPopupTreeWidgetItem::ExtMenu: + case KviPopupTreeWidgetItem::Separator: m_pLastSelectedItem->setCondition(m_pConditionEditor->text()); break; default: @@ -841,8 +854,6 @@ void KviSinglePopupEditor::selectionChanged() case KviPopupTreeWidgetItem::Item: case KviPopupTreeWidgetItem::Label: case KviPopupTreeWidgetItem::ExtMenu: - m_pConditionEditor->setText(((KviPopupTreeWidgetItem *)it)->m_szCondition); - bConditionEditorEnabled = true; m_pTextEditor->setText(((KviPopupTreeWidgetItem *)it)->m_szText); bTextEditorEnabled = true; break; @@ -850,6 +861,20 @@ void KviSinglePopupEditor::selectionChanged() break; } + switch(((KviPopupTreeWidgetItem *)it)->m_type) + { + case KviPopupTreeWidgetItem::Menu: + case KviPopupTreeWidgetItem::Item: + case KviPopupTreeWidgetItem::Label: + case KviPopupTreeWidgetItem::ExtMenu: + case KviPopupTreeWidgetItem::Separator: + m_pConditionEditor->setText(((KviPopupTreeWidgetItem *)it)->m_szCondition); + bConditionEditorEnabled = true; + break; + default: + break; + } + if(((KviPopupTreeWidgetItem *)it)->m_type == KviPopupTreeWidgetItem::ExtMenu) { m_pExtNameEditor->setText(((KviPopupTreeWidgetItem *)it)->m_szCode); @@ -918,6 +943,7 @@ void KviSinglePopupEditor::populateMenu(KviKvsPopupMenu * pop,KviPopupTreeWidget case KviKvsPopupMenuItem::Separator: if(par)theItem = new KviPopupTreeWidgetItem(par,theItem,KviPopupTreeWidgetItem::Separator); else theItem = new KviPopupTreeWidgetItem(m_pTreeWidget,theItem,KviPopupTreeWidgetItem::Separator); + theItem->setCondition(item->kvsCondition() ? item->kvsCondition()->code() : QString()); theItem->setId(item->name()); break; case KviKvsPopupMenuItem::Menu: |
