diff options
| author | 2010-09-01 11:03:05 +0000 | |
|---|---|---|
| committer | 2010-09-01 11:03:05 +0000 | |
| commit | 92e31b9510c8053d0a87fcf7c81e8331d6135001 (patch) | |
| tree | e66280645bc5c4619d3abc73fb142645af62267f /src/modules | |
| parent | fix for #931 (diff) | |
| download | KVIrc-92e31b9510c8053d0a87fcf7c81e8331d6135001.tar.gz KVIrc-92e31b9510c8053d0a87fcf7c81e8331d6135001.tar.bz2 KVIrc-92e31b9510c8053d0a87fcf7c81e8331d6135001.zip | |
implemented #929
git-svn-id: https://svn.kvirc.de/svn/trunk/kvirc@4965 17fca916-40b9-46aa-a4ea-0a15b648b75c
Diffstat (limited to 'src/modules')
| -rw-r--r-- | src/modules/popupeditor/popupeditor.cpp | 46 | ||||
| -rw-r--r-- | src/modules/popupeditor/popupeditor.h | 2 |
2 files changed, 48 insertions, 0 deletions
diff --git a/src/modules/popupeditor/popupeditor.cpp b/src/modules/popupeditor/popupeditor.cpp index b7ab9bb5a..02ad0f26d 100644 --- a/src/modules/popupeditor/popupeditor.cpp +++ b/src/modules/popupeditor/popupeditor.cpp @@ -1003,6 +1003,8 @@ void KviMenuTreeWidgetItem::replacePopup(KviKvsPopupMenu * popup) KviPopupEditor::KviPopupEditor(QWidget * par) : QWidget(par) { + m_bSaving = false; + QGridLayout * l = new QGridLayout(this); QSplitter * spl = new QSplitter(Qt::Horizontal,this); spl->setObjectName("popupeditor_horizontal_splitter"); @@ -1064,6 +1066,48 @@ void KviPopupEditor::oneTimeSetup() connect(m_pTreeWidget,SIGNAL(currentItemChanged(QTreeWidgetItem *,QTreeWidgetItem *)),this,SLOT(currentItemChanged(QTreeWidgetItem *,QTreeWidgetItem *))); connect(m_pTreeWidget,SIGNAL(customContextMenuRequested(const QPoint &)), this,SLOT(customContextMenuRequested(const QPoint &))); + connect(KviKvsPopupManager::instance(),SIGNAL(popupRefresh(const QString &)),this,SLOT(popupRefresh(const QString &))); +} + +void KviPopupEditor::popupRefresh(const QString &szName) +{ + if(m_bSaving) + return; + + KviPointerHashTable<QString,KviKvsPopupMenu> * pTable = KviKvsPopupManager::instance()->popupDict(); + if(!pTable) return; + KviKvsPopupMenu * pPopup = pTable->find(szName); + if(!pPopup) return; + + // if it already exists, replace its popup + for(int i=0; i<m_pTreeWidget->topLevelItemCount();i++) + { + KviMenuTreeWidgetItem * ch = (KviMenuTreeWidgetItem *)m_pTreeWidget->topLevelItem(i); + + if(KviQString::equalCI(szName,ch->m_pPopup->popupName())) + { + if(ch==m_pLastEditedItem) + { + if( + QMessageBox::warning(0,__tr2qs_ctx("OverWrite Current Popup","editor"), + __tr2qs_ctx("An external script has changed the popup you are currently editing. Do you want to accept the external changes?","editor"), + QMessageBox::Yes,QMessageBox::No|QMessageBox::Default|QMessageBox::Escape) != QMessageBox::Yes + ) return; + } + KviKvsPopupMenu * pCopy = new KviKvsPopupMenu(szName); + pCopy->copyFrom(pPopup); + ch->replacePopup(pCopy); + + //refresh current item + if(ch==m_pLastEditedItem) + m_pEditor->edit(m_pLastEditedItem); + return; + } + } + // create it + KviKvsPopupMenu * pCopy = new KviKvsPopupMenu(szName); + pCopy->copyFrom(pPopup); + new KviMenuTreeWidgetItem(m_pTreeWidget,pCopy); } void KviPopupEditor::customContextMenuRequested(const QPoint &pos) @@ -1228,6 +1272,7 @@ void KviPopupEditor::showEvent(QShowEvent *e) void KviPopupEditor::commit() { + m_bSaving = true; if(!m_bOneTimeSetupDone)return; saveLastEditedItem(); @@ -1262,6 +1307,7 @@ void KviPopupEditor::commit() g_pApp->savePopups(); + m_bSaving = false; } void KviPopupEditor::getUniquePopupName(KviMenuTreeWidgetItem *item,QString &buffer) diff --git a/src/modules/popupeditor/popupeditor.h b/src/modules/popupeditor/popupeditor.h index 102d321e3..f6a172be7 100644 --- a/src/modules/popupeditor/popupeditor.h +++ b/src/modules/popupeditor/popupeditor.h @@ -158,6 +158,7 @@ public: bool m_bOneTimeSetupDone; KviTalPopupMenu * m_pContextPopup; KviTalPopupMenu * m_pEmptyContextPopup; + bool m_bSaving; public: void commit(); void exportPopups(bool); @@ -169,6 +170,7 @@ protected slots: void exportSelected(); void exportCurrentPopup(); void removeCurrentPopup(); + void popupRefresh(const QString &szName); protected: void showEvent(QShowEvent *e); void getExportPopupBuffer(QString &buffer,KviMenuTreeWidgetItem * it); |
