]> jfr.im git - irc/kvirc/KVIrc.git/commitdiff
Add a checkbox in the event editor to enable or disable event handlers.
authorwodim <redacted>
Sun, 27 Aug 2017 01:24:11 +0000 (03:24 +0200)
committerwodim <redacted>
Sun, 27 Aug 2017 01:24:11 +0000 (03:24 +0200)
Fixes #2189

src/modules/eventeditor/EventEditorWindow.cpp
src/modules/eventeditor/EventEditorWindow.h

index d54d110d36694ac471ec76ebfe39a955f1f46ba9..effdd44b2a295c6b0aeeb2fc2d7c98d5198092b6 100644 (file)
@@ -39,6 +39,7 @@
 #include "KviQString.h"
 #include "KviKvsEventManager.h"
 #include "KviTalVBox.h"
+#include "KviTalHBox.h"
 
 #include <QMessageBox>
 #include <QSplitter>
@@ -110,8 +111,18 @@ EventEditor::EventEditor(QWidget * par)
        box->setSpacing(0);
        box->setMargin(0);
 
-       m_pNameEditor = new QLineEdit(box);
+       KviTalHBox * hbox = new KviTalHBox(box);
+       hbox->setContentsMargins(10, 0, 10, 0);
+
+       m_pIsEnabled = new QCheckBox(hbox);
+       m_pIsEnabled->setText(__tr2qs_ctx("E&nabled", "editor"));
+       m_pIsEnabled->setEnabled(false);
+       connect(m_pIsEnabled, SIGNAL(clicked(bool)), this, SLOT(toggleCurrentHandlerEnabled()));
+
+       m_pNameEditor = new QLineEdit(hbox);
+       m_pNameEditor->setText(__tr2qs_ctx("No item selected", "editor"));
        m_pNameEditor->setToolTip(__tr2qs_ctx("Edit the event handler name.", "editor"));
+       m_pNameEditor->setEnabled(false);
 
        m_pEditor = KviScriptEditor::createInstance(box);
        m_pEditor->setFocus();
@@ -163,6 +174,14 @@ void EventEditor::eventHandlerDisabled(const QString & szHandler)
        QString szEventName = szHandler.split("::")[0];
        QString szHandlerName = szHandler.split("::")[1];
        qDebug("Handler %s of event %s : disabled", szHandlerName.toUtf8().data(), szEventName.toUtf8().data());
+
+       QTreeWidgetItem * pSelectedItem = nullptr;
+       QList <QTreeWidgetItem *> itemList = m_pTreeWidget->selectedItems();
+       if (!itemList.isEmpty())
+       {
+               pSelectedItem = itemList.first();
+       }
+
        for(int i = 0; i < m_pTreeWidget->topLevelItemCount(); i++)
        {
                EventEditorEventTreeWidgetItem * pItem = (EventEditorEventTreeWidgetItem *)m_pTreeWidget->topLevelItem(i);
@@ -173,6 +192,8 @@ void EventEditor::eventHandlerDisabled(const QString & szHandler)
                        if(KviQString::equalCI(szHandlerName, ((EventEditorHandlerTreeWidgetItem *)pItem->child(j))->name()))
                        {
                                ((EventEditorHandlerTreeWidgetItem *)pItem->child(j))->setEnabled(false);
+                               if (pItem->child(j) == pSelectedItem)
+                                       m_pIsEnabled->setChecked(false);
                                return;
                        }
                }
@@ -310,6 +331,7 @@ void EventEditor::removeCurrentHandler()
                                parent->setIcon(0, QIcon(*(g_pIconManager->getSmallIcon(KviIconManager::EventNoHandlers))));
                }
 
+               m_pIsEnabled->setEnabled(false);
                m_pEditor->setEnabled(false);
                m_pNameEditor->setEnabled(false);
        }
@@ -320,6 +342,7 @@ void EventEditor::toggleCurrentHandlerEnabled()
        KVI_ASSERT(m_bOneTimeSetupDone);
        if(m_pLastEditedItem)
        {
+               m_pIsEnabled->setChecked(!(m_pLastEditedItem->m_bEnabled));
                m_pLastEditedItem->setEnabled(!(m_pLastEditedItem->m_bEnabled));
                m_pTreeWidget->repaint(m_pTreeWidget->visualItemRect(m_pLastEditedItem));
                currentItemChanged(m_pLastEditedItem, nullptr);
@@ -398,6 +421,8 @@ void EventEditor::currentItemChanged(QTreeWidgetItem * it, QTreeWidgetItem *)
        if(it->parent())
        {
                m_pLastEditedItem = (EventEditorHandlerTreeWidgetItem *)it;
+               m_pIsEnabled->setEnabled(true);
+               m_pIsEnabled->setChecked(m_pLastEditedItem->isEnabled());
                m_pNameEditor->setEnabled(true);
                m_pNameEditor->setText(m_pLastEditedItem->name());
                m_pEditor->setEnabled(true);
@@ -408,8 +433,10 @@ void EventEditor::currentItemChanged(QTreeWidgetItem * it, QTreeWidgetItem *)
        else
        {
                m_pLastEditedItem = nullptr;
+               m_pIsEnabled->setEnabled(false);
+               m_pIsEnabled->setChecked(false);
                m_pNameEditor->setEnabled(false);
-               m_pNameEditor->setText("");
+               m_pNameEditor->setText(__tr2qs_ctx("No item selected", "editor"));
                m_pEditor->setEnabled(false);
                QString parms = ((EventEditorEventTreeWidgetItem *)it)->m_szParams;
                if(parms.isEmpty())
index f6ca3644fc993ee9e5c1aff1757725e53e311fe2..7adda9ed34bdc43e2d122bbfbeff550fcacf2aac 100644 (file)
@@ -31,6 +31,7 @@
 #include <QLineEdit>
 #include <QTreeWidget>
 #include <QMenu>
+#include <QCheckBox>
 
 class KviScriptEditor;
 
@@ -73,6 +74,7 @@ public:
        void setName(const QString & szName);
        QString name() const { return m_szName; };
        void setEnabled(const bool bEnabled);
+       bool isEnabled() { return m_bEnabled; };
 };
 
 class EventEditorTreeWidget : public QTreeWidget
@@ -99,6 +101,7 @@ public:
        KviScriptEditor * m_pEditor;
        EventEditorTreeWidget * m_pTreeWidget;
        QLineEdit * m_pNameEditor;
+       QCheckBox * m_pIsEnabled;
        QMenu * m_pContextPopup;
        EventEditorHandlerTreeWidgetItem * m_pLastEditedItem;
        bool m_bOneTimeSetupDone;
@@ -111,6 +114,7 @@ public:
 protected slots:
        void currentItemChanged(QTreeWidgetItem * it, QTreeWidgetItem *);
        void itemPressed(QTreeWidgetItem * it, const QPoint & pnt);
+       void setCurrentHandlerEnabled();
        void toggleCurrentHandlerEnabled();
        void removeCurrentHandler();
        void addHandlerForCurrentEvent();