Revision
14315
Author
jmesquita
Date
2009-07-21 22:40:40 -0500 (Tue, 21 Jul 2009)

Log Message

ENHANCEMENT: Ability to search the console. Searching using Regex is also available.

Modified Paths

Added Paths

Diff

Modified: freeswitch/trunk/contrib/jmesquita/fsgui/fsgui.pro (14314 => 14315)


--- freeswitch/trunk/contrib/jmesquita/fsgui/fsgui.pro	2009-07-22 00:15:36 UTC (rev 14314)
+++ freeswitch/trunk/contrib/jmesquita/fsgui/fsgui.pro	2009-07-22 03:40:40 UTC (rev 14315)
@@ -13,7 +13,8 @@
     src/consolepage.cpp \
     src/preferencesdialog.cpp \
     src/completers.cpp \
-    src/pastebindialog.cpp
+    src/pastebindialog.cpp \
+    src/finddialog.cpp
 INCLUDEPATH += ../../../libs/esl/src/include \
     src/include
 HEADERS += src/include/fs_gui.h \
@@ -23,12 +24,14 @@
     src/include/global_defines.h \
     src/include/preferencesdialog.h \
     src/include/completers.h \
-    src/include/pastebindialog.h
+    src/include/pastebindialog.h \
+    src/include/finddialog.h
 FORMS += resources/fs_gui.ui \
     resources/server_manager.ui \
     resources/consolepage.ui \
     resources/preferencesdialog.ui \
-    resources/pastebindialog.ui
+    resources/pastebindialog.ui \
+    resources/finddialog.ui
 LIBS += -L../../../libs/esl \
     -lesl
 RESOURCES += resources/resources.qrc

Added: freeswitch/trunk/contrib/jmesquita/fsgui/resources/finddialog.ui (0 => 14315)


--- freeswitch/trunk/contrib/jmesquita/fsgui/resources/finddialog.ui	                        (rev 0)
+++ freeswitch/trunk/contrib/jmesquita/fsgui/resources/finddialog.ui	2009-07-22 03:40:40 UTC (rev 14315)
@@ -0,0 +1,117 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>findDialog</class>
+ <widget class="QDialog" name="findDialog">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>298</width>
+    <height>171</height>
+   </rect>
+  </property>
+  <property name="windowTitle">
+   <string>Find</string>
+  </property>
+  <layout class="QVBoxLayout" name="verticalLayout_2">
+   <item>
+    <widget class="QGroupBox" name="groupBox">
+     <property name="title">
+      <string>Find Text</string>
+     </property>
+     <layout class="QVBoxLayout" name="verticalLayout">
+      <item>
+       <layout class="QHBoxLayout" name="horizontalLayout_2">
+        <item>
+         <widget class="QLabel" name="label">
+          <property name="text">
+           <string>Find What?</string>
+          </property>
+         </widget>
+        </item>
+        <item>
+         <widget class="QLineEdit" name="lineFind"/>
+        </item>
+       </layout>
+      </item>
+      <item>
+       <layout class="QGridLayout" name="gridLayout">
+        <item row="0" column="0">
+         <widget class="QCheckBox" name="checkRegex">
+          <property name="text">
+           <string>Regular Expression</string>
+          </property>
+         </widget>
+        </item>
+        <item row="0" column="1">
+         <widget class="QCheckBox" name="checkEntire">
+          <property name="text">
+           <string>Entire Word</string>
+          </property>
+         </widget>
+        </item>
+        <item row="1" column="1">
+         <widget class="QCheckBox" name="checkCase">
+          <property name="text">
+           <string>Case Sensitive</string>
+          </property>
+         </widget>
+        </item>
+       </layout>
+      </item>
+     </layout>
+    </widget>
+   </item>
+   <item>
+    <layout class="QHBoxLayout" name="horizontalLayout">
+     <item>
+      <spacer name="horizontalSpacer">
+       <property name="orientation">
+        <enum>Qt::Horizontal</enum>
+       </property>
+       <property name="sizeHint" stdset="0">
+        <size>
+         <width>40</width>
+         <height>20</height>
+        </size>
+       </property>
+      </spacer>
+     </item>
+     <item>
+      <widget class="QPushButton" name="btnFind">
+       <property name="text">
+        <string>Find</string>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <widget class="QPushButton" name="btnCancel">
+       <property name="text">
+        <string>Cancel</string>
+       </property>
+      </widget>
+     </item>
+    </layout>
+   </item>
+  </layout>
+ </widget>
+ <resources/>
+ <connections>
+  <connection>
+   <sender>btnCancel</sender>
+   <signal>clicked(bool)</signal>
+   <receiver>findDialog</receiver>
+   <slot>reject()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>378</x>
+     <y>358</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>530</x>
+     <y>380</y>
+    </hint>
+   </hints>
+  </connection>
+ </connections>
+</ui>

Modified: freeswitch/trunk/contrib/jmesquita/fsgui/resources/fs_gui.ui (14314 => 14315)


--- freeswitch/trunk/contrib/jmesquita/fsgui/resources/fs_gui.ui	2009-07-22 00:15:36 UTC (rev 14314)
+++ freeswitch/trunk/contrib/jmesquita/fsgui/resources/fs_gui.ui	2009-07-22 03:40:40 UTC (rev 14315)
@@ -75,6 +75,8 @@
     <property name="title">
      <string>&amp;Edit</string>
     </property>
+    <addaction name="actionFind"/>
+    <addaction name="separator"/>
     <addaction name="actionPreferences"/>
    </widget>
    <widget class="QMenu" name="menu_Tools">
@@ -165,6 +167,17 @@
     <string>Ctrl+Y</string>
    </property>
   </action>
+  <action name="actionFind">
+   <property name="enabled">
+    <bool>false</bool>
+   </property>
+   <property name="text">
+    <string>&amp;Find</string>
+   </property>
+   <property name="shortcut">
+    <string>Ctrl+F</string>
+   </property>
+  </action>
  </widget>
  <layoutdefault spacing="6" margin="11"/>
  <resources/>

Modified: freeswitch/trunk/contrib/jmesquita/fsgui/src/consolepage.cpp (14314 => 14315)


--- freeswitch/trunk/contrib/jmesquita/fsgui/src/consolepage.cpp	2009-07-22 00:15:36 UTC (rev 14314)
+++ freeswitch/trunk/contrib/jmesquita/fsgui/src/consolepage.cpp	2009-07-22 03:40:40 UTC (rev 14315)
@@ -91,6 +91,10 @@
 {
     return m_ui->textConsole->toPlainText();
 }
+QTextEdit *consolePage::getTextDocument()
+{
+    return m_ui->textConsole;
+}
 void consolePage::doConnect()
 {
     eslConnection->doConnect();

Added: freeswitch/trunk/contrib/jmesquita/fsgui/src/finddialog.cpp (0 => 14315)


--- freeswitch/trunk/contrib/jmesquita/fsgui/src/finddialog.cpp	                        (rev 0)
+++ freeswitch/trunk/contrib/jmesquita/fsgui/src/finddialog.cpp	2009-07-22 03:40:40 UTC (rev 14315)
@@ -0,0 +1,69 @@
+#include <QtGui>
+#include "finddialog.h"
+#include "ui_finddialog.h"
+
+findDialog::findDialog(QWidget *parent, QTextEdit *console) :
+    QDialog(parent),
+    m_ui(new Ui::findDialog),
+    editConsole(console),
+    pos(0)
+{
+    m_ui->setupUi(this);
+
+    connect(m_ui->btnFind, SIGNAL(clicked()),
+            this, SLOT(findClicked()));
+    connect(this, SIGNAL(rejected()),
+            this, SLOT(cancelClicked()));
+}
+
+findDialog::~findDialog()
+{
+    delete m_ui;
+}
+
+void findDialog::changeEvent(QEvent *e)
+{
+    QDialog::changeEvent(e);
+    switch (e->type()) {
+    case QEvent::LanguageChange:
+        m_ui->retranslateUi(this);
+        break;
+    default:
+        break;
+    }
+}
+void findDialog::findClicked()
+{
+    QTextCursor findCursor;
+    QFlags<QTextDocument::FindFlag> options = 0;
+    if (m_ui->checkCase->isChecked())
+        options = options|QTextDocument::FindCaseSensitively;
+    if (m_ui->checkEntire->isChecked())
+        options = options|QTextDocument::FindWholeWords;
+
+    if (m_ui->checkRegex->isChecked())
+    {
+        findCursor = editConsole->document()->find(QRegExp(m_ui->lineFind->text()), pos, options);
+    }
+    else
+    {
+        findCursor = editConsole->document()->find(m_ui->lineFind->text(), pos, options);
+    }
+    if (findCursor.isNull())
+    {
+        QMessageBox::warning(this, tr("Find ..."),
+                    tr("Nothing found"),
+                    QMessageBox::Ok);
+        pos = 0;
+        m_ui->btnFind->setText(tr("Find again"));
+        return;
+    }
+    pos = findCursor.position();
+    editConsole->setTextCursor(findCursor);
+    m_ui->btnFind->setText(tr("Find next"));
+}
+void findDialog::cancelClicked()
+{
+    pos = 0;
+    m_ui->btnFind->setText(tr("Find"));
+}

Modified: freeswitch/trunk/contrib/jmesquita/fsgui/src/fs_gui.cpp (14314 => 14315)


--- freeswitch/trunk/contrib/jmesquita/fsgui/src/fs_gui.cpp	2009-07-22 00:15:36 UTC (rev 14314)
+++ freeswitch/trunk/contrib/jmesquita/fsgui/src/fs_gui.cpp	2009-07-22 03:40:40 UTC (rev 14315)
@@ -39,6 +39,7 @@
 #include "fs_gui.h"
 #include "ui_fs_gui.h"
 #include "consolepage.h"
+#include "finddialog.h"
 #include <QtNetwork>
 
 Cfsgui::Cfsgui(QWidget *parent) :
@@ -47,7 +48,8 @@
     serverDialog(NULL),
     prefDialog(NULL),
     fileDialog(NULL),
-    pasteDialog(NULL)
+    pasteDialog(NULL),
+    findDlg(NULL)
 {
 
     m_ui->setupUi(this);
@@ -64,6 +66,10 @@
             this, SLOT(doDisconnect()));
     connect(m_ui->actionSaveLog, SIGNAL(triggered()),
             this, SLOT(saveLog()));
+    connect(m_ui->actionPreferences, SIGNAL(triggered()),
+            this, SLOT(showPreferences()));
+    connect(m_ui->actionFind, SIGNAL(triggered()),
+            this, SLOT(showFind()));
     connect(m_ui->actionPastebinLog, SIGNAL(triggered()),
             this, SLOT(pastebinLog()));
     connect(m_ui->actionAbout, SIGNAL(triggered()),
@@ -75,8 +81,6 @@
             this, SLOT(closeTab(int)));
     connect(m_ui->tabWidget, SIGNAL(currentChanged(int)),
             this, SLOT(changeTab(int)));
-    connect(m_ui->actionPreferences, SIGNAL(triggered()),
-            this, SLOT(showPreferences()));
 
 }
 Cfsgui::~Cfsgui()
@@ -170,6 +174,7 @@
     m_ui->actionDisconnect->setEnabled(true);
     m_ui->actionSaveLog->setEnabled(true);
     m_ui->actionPastebinLog->setEnabled(true);
+    m_ui->actionFind->setEnabled(true);
 }
 void Cfsgui::gotDisconnected()
 {
@@ -177,7 +182,22 @@
     m_ui->actionDisconnect->setDisabled(true);
     m_ui->actionSaveLog->setDisabled(true);
     m_ui->actionPastebinLog->setDisabled(true);
+    m_ui->actionFind->setDisabled(true);
 }
+void Cfsgui::showFind()
+{
+    consolePage *tab = static_cast<consolePage *>(m_ui->tabWidget->widget(m_ui->tabWidget->currentIndex()));
+    if (tab)
+    {
+        if (!findDlg)
+        {
+            findDlg = new findDialog(this, tab->getTextDocument());
+        }
+        findDlg->show();
+        findDlg->raise();
+        findDlg->activateWindow();
+    }
+}
 void Cfsgui::backgroundColorChanged()
 {
     for (int i = 0; i < m_ui->tabWidget->count(); i++)

Modified: freeswitch/trunk/contrib/jmesquita/fsgui/src/include/consolepage.h (14314 => 14315)


--- freeswitch/trunk/contrib/jmesquita/fsgui/src/include/consolepage.h	2009-07-22 00:15:36 UTC (rev 14314)
+++ freeswitch/trunk/contrib/jmesquita/fsgui/src/include/consolepage.h	2009-07-22 03:40:40 UTC (rev 14315)
@@ -26,6 +26,7 @@
     void doConnect();
     void doDisconnect();
     QString getConsoleText();
+    QTextEdit *getTextDocument();
 
 protected:
     virtual void changeEvent(QEvent *e);

Added: freeswitch/trunk/contrib/jmesquita/fsgui/src/include/finddialog.h (0 => 14315)


--- freeswitch/trunk/contrib/jmesquita/fsgui/src/include/finddialog.h	                        (rev 0)
+++ freeswitch/trunk/contrib/jmesquita/fsgui/src/include/finddialog.h	2009-07-22 03:40:40 UTC (rev 14315)
@@ -0,0 +1,32 @@
+#ifndef FINDDIALOG_H
+#define FINDDIALOG_H
+
+#include <QtGui/QDialog>
+
+namespace Ui {
+    class findDialog;
+}
+
+class QTextEdit;
+
+class findDialog : public QDialog {
+    Q_OBJECT
+    Q_DISABLE_COPY(findDialog)
+public:
+    explicit findDialog(QWidget *parent, QTextEdit *console);
+    virtual ~findDialog();
+
+protected:
+    virtual void changeEvent(QEvent *e);
+
+private:
+    Ui::findDialog *m_ui;
+    QTextEdit *editConsole;
+    int pos;
+
+private slots:
+    void findClicked();
+    void cancelClicked();
+};
+
+#endif // FINDDIALOG_H

Modified: freeswitch/trunk/contrib/jmesquita/fsgui/src/include/fs_gui.h (14314 => 14315)


--- freeswitch/trunk/contrib/jmesquita/fsgui/src/include/fs_gui.h	2009-07-22 00:15:36 UTC (rev 14314)
+++ freeswitch/trunk/contrib/jmesquita/fsgui/src/include/fs_gui.h	2009-07-22 03:40:40 UTC (rev 14315)
@@ -48,6 +48,8 @@
     class Cfsgui;
 }
 
+class findDialog;
+
 class Cfsgui : public QMainWindow {
     Q_OBJECT
     Q_DISABLE_COPY(Cfsgui)
@@ -73,6 +75,7 @@
     void doDisconnect();
     void gotDisconnected();
     void gotConnected();
+    void showFind();
 
 private:
     Ui::Cfsgui *m_ui;
@@ -80,6 +83,7 @@
     preferencesDialog *prefDialog;
     QFileDialog *fileDialog;
     pastebinDialog *pasteDialog;
+    findDialog *findDlg;
     void saveWindowSettings();
 };