22#include " ui_server_dialogfindreplace.h"
33
44#include < gui/server_ui.h>
5- #include < gui/server_windowmanager.h>
5+ #include < gui/script/server_scriptmanager.h>
6+ #include < gui/script/server_basescripteditor.h>
67
78#define MAX_FIND_COMBO_SZ 20
89
910mbServerDialogFindReplace::Strings::Strings () :
10- cachePrefix (QStringLiteral(" Ui.Dialogs.FindReplace." )),
11- findComboBox(QStringLiteral(" findComboBox" ))
11+ cachePrefix (QStringLiteral(" Ui.Dialogs.FindReplace." )),
12+ findComboBox (QStringLiteral(" findComboBox" )),
13+ replaceComboBox(QStringLiteral(" replaceComboBox" ))
1214{
1315}
1416
@@ -26,6 +28,8 @@ mbServerDialogFindReplace::mbServerDialogFindReplace(QWidget *parent) :
2628
2729 connect (ui->btnFindNext , &QPushButton::clicked, this , &mbServerDialogFindReplace::findNext );
2830 connect (ui->btnFindPrevious , &QPushButton::clicked, this , &mbServerDialogFindReplace::findPrevious);
31+ connect (ui->btnReplace , &QPushButton::clicked, this , &mbServerDialogFindReplace::replace );
32+ connect (ui->btnReplaceAll , &QPushButton::clicked, this , &mbServerDialogFindReplace::replaceAll );
2933 connect (ui->btnClose , &QPushButton::clicked, this , &mbServerDialogFindReplace::close );
3034}
3135
@@ -39,11 +43,20 @@ MBSETTINGS mbServerDialogFindReplace::cachedSettings() const
3943 const Strings &ds = Strings::instance ();
4044 const QString &prefix = ds.cachePrefix ;
4145
46+ QComboBox *cmb;
4247 QStringList lsFindComboBox;
43- for (int i = 0 ; i < ui->cmbFind ->count (); ++i)
44- lsFindComboBox.append (ui->cmbFind ->itemText (i));
48+ cmb = ui->cmbFind ;
49+ for (int i = 0 ; i < cmb->count (); ++i)
50+ lsFindComboBox.append (cmb->itemText (i));
51+
52+ QStringList lsReplaceComboBox;
53+ cmb = ui->cmbReplace ;
54+ for (int i = 0 ; i < cmb->count (); ++i)
55+ lsReplaceComboBox.append (cmb->itemText (i));
56+
4557 MBSETTINGS m = mbCoreDialogBase::cachedSettings ();
46- m[prefix+ds.findComboBox ] = lsFindComboBox;
58+ m[prefix+ds.findComboBox ] = lsFindComboBox ;
59+ m[prefix+ds.replaceComboBox ] = lsReplaceComboBox;
4760 return m;
4861}
4962
@@ -55,6 +68,7 @@ void mbServerDialogFindReplace::setCachedSettings(const MBSETTINGS &settings)
5568
5669 MBSETTINGS::const_iterator it;
5770 MBSETTINGS::const_iterator end = settings.end ();
71+
5872 it = settings.find (prefix+ds.findComboBox );
5973 if (it != end)
6074 {
@@ -66,38 +80,87 @@ void mbServerDialogFindReplace::setCachedSettings(const MBSETTINGS &settings)
6680 ++i;
6781 }
6882 }
83+
84+ it = settings.find (prefix+ds.replaceComboBox );
85+ if (it != end)
86+ {
87+ QStringList ls = it.value ().toStringList ();
88+ int i = 0 ;
89+ Q_FOREACH (const QString &s, ls)
90+ {
91+ ui->cmbReplace ->insertItem (i, s);
92+ ++i;
93+ }
94+ }
6995}
7096
7197void mbServerDialogFindReplace::execFindReplace (bool replace)
7298{
7399 if (replace)
100+ {
74101 this ->setWindowTitle (" Replace" );
102+ }
75103 else
104+ {
76105 this ->setWindowTitle (" Find" );
106+ }
107+ ui->lblReplace ->setVisible (replace);
108+ ui->cmbReplace ->setVisible (replace);
109+ ui->btnReplace ->setVisible (replace);
110+ ui->btnReplaceAll ->setVisible (replace);
77111 this ->show ();
78- QString text = mbServer::global ()->ui ()->windowManager ()->selectedText ();
79- if (text.size ())
80- ui->cmbFind ->setCurrentText (text);
112+ mbServerBaseScriptEditor *se = mbServer::global ()->ui ()->scriptManager ()->activeScriptEditor ();
113+ if (se)
114+ {
115+ QString text = se->textCursor ().selectedText ();
116+ if (text.size ())
117+ ui->cmbFind ->setCurrentText (text);
118+ }
81119}
82120
83121void mbServerDialogFindReplace::findNext ()
84122{
85- processFindCombo ();
86- int flags = getFindFlags ();
87- mbServer::global ()->ui ()->windowManager ()->find (ui->cmbFind ->currentText (), flags);
123+ processCombo (ui->cmbFind );
124+ mbServerBaseScriptEditor *se = mbServer::global ()->ui ()->scriptManager ()->activeScriptEditor ();
125+ if (se)
126+ {
127+ int flags = getFindFlags ();
128+ se->findText (ui->cmbFind ->currentText (), flags);
129+ }
88130}
89131
90132void mbServerDialogFindReplace::findPrevious ()
91133{
92- processFindCombo ();
93- int flags = getFindFlags ();
94- flags |= mb::FindBackward;
95- mbServer::global ()->ui ()->windowManager ()->find (ui->cmbFind ->currentText (), flags);
134+ processCombo (ui->cmbFind );
135+ mbServerBaseScriptEditor *se = mbServer::global ()->ui ()->scriptManager ()->activeScriptEditor ();
136+ if (se)
137+ {
138+ int flags = getFindFlags ();
139+ flags |= mb::FindBackward;
140+ se->findText (ui->cmbFind ->currentText (), flags);
141+ }
96142}
97143
98144void mbServerDialogFindReplace::replace ()
99145{
146+ processCombo (ui->cmbFind );
147+ processCombo (ui->cmbReplace );
148+ mbServerBaseScriptEditor *se = mbServer::global ()->ui ()->scriptManager ()->activeScriptEditor ();
149+ if (se)
150+ {
151+ se->replaceText (ui->cmbReplace ->currentText ());
152+ }
153+ }
100154
155+ void mbServerDialogFindReplace::replaceAll ()
156+ {
157+ processCombo (ui->cmbFind );
158+ processCombo (ui->cmbReplace );
159+ mbServerBaseScriptEditor *se = mbServer::global ()->ui ()->scriptManager ()->activeScriptEditor ();
160+ if (se)
161+ {
162+ ;// se->replaceTextAll(ui->cmbReplace->currentText());
163+ }
101164}
102165
103166int mbServerDialogFindReplace::getFindFlags ()
@@ -108,9 +171,8 @@ int mbServerDialogFindReplace::getFindFlags()
108171 return flags;
109172}
110173
111- void mbServerDialogFindReplace::processFindCombo ( )
174+ void mbServerDialogFindReplace::processCombo (QComboBox *cmb )
112175{
113- QComboBox *cmb = ui->cmbFind ;
114176 QString text = cmb->currentText ();
115177 if (text.size ())
116178 {
0 commit comments