// \r
AllWatchBrowserWindow::AllWatchBrowserWindow(QWidget * parent/*= 0*/) : QWidget(parent, Qt::Dialog),\r
layout(new QVBoxLayout),\r
+symbol(new QLineEdit),\r
+search(new QPushButton(tr("Search"))),\r
#ifdef AW_LAYOUTTEXTS\r
text(new QTextBrowser),\r
#else\r
model(new QStandardItemModel),\r
#endif\r
NbWatch(0),\r
+CurrentWatch(0),\r
statusbar(new QStatusBar),\r
PtrWatchInfo(NULL)\r
{\r
setWindowTitle(tr("All Watch"));\r
\r
- // Set the font\r
+ // set the font\r
QFont fixedFont("Lucida Console", 8, QFont::Normal);\r
fixedFont.setStyleHint(QFont::TypeWriter);\r
\r
layout->addWidget(TableView);\r
#endif\r
\r
- // Status bar\r
+ // search bar\r
+ QHBoxLayout * hbox1 = new QHBoxLayout;\r
+ symbol->setPlaceholderText("symbol name");\r
+ hbox1->addWidget(symbol);\r
+ hbox1->addWidget(search);\r
+ layout->addLayout(hbox1);\r
+\r
+ // status bar\r
layout->addWidget(statusbar);\r
setLayout(layout);\r
+\r
+ // connect slot\r
+ connect(search, SIGNAL(clicked()), this, SLOT(SearchSymbol()));\r
+ connect(symbol, SIGNAL(cursorPositionChanged(int, int)), this, SLOT(SelectSearchSymbol()));\r
}\r
\r
\r
}\r
\r
\r
+// Search the symbol in the watch list\r
+void AllWatchBrowserWindow::SearchSymbol(void)
+{
+ bool found = false;
+ size_t i;
+
+ // user cannot enter symbol to allow the search
+ symbol->setDisabled(true);
+
+ // look for the symbol in the watch list
+ for (i = AW_STARTNUMVARIABLE; (i < NbWatch) && !found; i++)\r
+ {\r
+ // check symbol presence\r
+ if (!symbol->text().compare(PtrWatchInfo[i].PtrVariableName, Qt::CaseSensitive))\r
+ {\r
+ found = true;\r
+ }\r
+ }\r
+\r
+ if (found)\r
+ {\r
+ // remove previous highlight\r
+ if (CurrentWatch)\r
+ {\r
+ model->item((int)(CurrentWatch - 1), 0)->setBackground(QColor(255, 255, 255));\r
+ model->item((int)(CurrentWatch - 1), 1)->setBackground(QColor(255, 255, 255));\r
+ model->item((int)(CurrentWatch - 1), 2)->setBackground(QColor(255, 255, 255));\r
+ }\r
+ // Get the slider maximum position\r
+ int MaxSlider = TableView->verticalScrollBar()->maximum(); \r
+ // Number of items displayed in the scroll bar slider\r
+ int DeltaSlider = (int)NbWatch - MaxSlider;\r
+ // set the scroll bar\r
+ TableView->verticalScrollBar()->setSliderPosition((int)i - (DeltaSlider / 2) - 1);\r
+ // highlight watch symbol\r
+ CurrentWatch = i;\r
+ model->item((int)(CurrentWatch - 1), 0)->setBackground(QColor(0xff, 0xfa, 0xcd));\r
+ model->item((int)(CurrentWatch - 1), 1)->setBackground(QColor(0xff, 0xfa, 0xcd));\r
+ model->item((int)(CurrentWatch - 1), 2)->setBackground(QColor(0xff, 0xfa, 0xcd));\r
+ // allow new symbol\r
+ symbol->setText("");\r
+ }\r
+ else\r
+ {\r
+ // invalid symbol\r
+ symbol->setStyleSheet("color: red");\r
+ }\r
+
+ // user can enter a symbol
+ symbol->setEnabled(true);
+ symbol->setFocus();
+}
+
+
+//
+void AllWatchBrowserWindow::SelectSearchSymbol(void)\r
+{\r
+ symbol->setStyleSheet("color: black");\r
+}\r
+\r
+\r
//\r
void AllWatchBrowserWindow::Reset(void)\r
{\r
}\r
\r
\r
-// \r
+// Handle keyboard event\r
void AllWatchBrowserWindow::keyPressEvent(QKeyEvent * e)\r
{\r
+ // ESC to close / hide the window\r
if (e->key() == Qt::Key_Escape)\r
{\r
hide();\r
}\r
+ else\r
+ {\r
+ // select the \r
+ if (e->key() == Qt::Key_Return)\r
+ {\r
+ SearchSymbol();\r
+ }\r
+ }\r
}\r
\r