aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorGravatar Fabio Bas2010-09-03 15:23:27 +0000
committerGravatar Fabio Bas2010-09-03 15:23:27 +0000
commita27933290601425bd856a22da5135f16c5e87f62 (patch)
treeda7569f32d338d99d5df3811ada75ecb78cfff76 /src
parentadded userlist module: userlist.select userlist.ensureVisible $userlist.selec... (diff)
downloadKVIrc-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.cpp22
-rw-r--r--src/modules/popupeditor/popupeditor.cpp30
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: