45 namespace Gecode {
namespace Gist {
55 setWindowIcon(myPic2);
58 setMinimumSize(300, 240);
59 setMaximumSize(300, 240);
60 QVBoxLayout* layout =
new QVBoxLayout();
61 QLabel* logo =
new QLabel();
62 logo->setPixmap(myPic);
63 layout->addWidget(logo, 0, Qt::AlignCenter);
65 new QLabel(tr(
"<h2>Gist</h2>"
66 "<p><b>The Gecode Interactive Search Tool</b</p> "
67 "<p>You can find more information about Gecode and Gist "
69 "<p><a href='http://www.gecode.org'>www.gecode.org</a>"
71 aboutLabel->setOpenExternalLinks(
true);
72 aboutLabel->setWordWrap(
true);
73 aboutLabel->setAlignment(Qt::AlignCenter);
74 layout->addWidget(aboutLabel);
76 setWindowTitle(tr(
"About Gist"));
77 setAttribute(Qt::WA_QuitOnClose,
false);
78 setAttribute(Qt::WA_DeleteOnClose,
false);
83 :
opt(opt0), aboutGist(this) {
86 setWindowTitle(tr(
"Gist"));
94 setMinimumSize(400, 200);
98 QMenu* fileMenu =
menuBar->addMenu(tr(
"&File"));
99 fileMenu->addAction(
c->
print);
100 #if QT_VERSION >= 0x040400
103 QAction* quitAction = fileMenu->addAction(tr(
"Quit"));
104 quitAction->setShortcut(QKeySequence(
"Ctrl+Q"));
105 connect(quitAction, SIGNAL(triggered()),
106 this, SLOT(close()));
107 prefAction = fileMenu->addAction(tr(
"Preferences"));
108 connect(prefAction, SIGNAL(triggered()),
this, SLOT(
preferences()));
110 QMenu* nodeMenu =
menuBar->addMenu(tr(
"&Node"));
112 inspectNodeMenu =
new QMenu(
"Inspect");
113 inspectNodeMenu->addAction(
c->
inspect);
114 connect(inspectNodeMenu, SIGNAL(aboutToShow()),
117 inspectNodeBeforeFPMenu =
new QMenu(
"Inspect before fixpoint");
119 connect(inspectNodeBeforeFPMenu, SIGNAL(aboutToShow()),
123 nodeMenu->addMenu(inspectNodeMenu);
124 nodeMenu->addMenu(inspectNodeBeforeFPMenu);
130 bookmarksMenu =
new QMenu(
"Bookmarks");
132 connect(bookmarksMenu, SIGNAL(aboutToShow()),
134 nodeMenu->addMenu(bookmarksMenu);
135 nodeMenu->addSeparator();
136 nodeMenu->addAction(
c->
navUp);
143 nodeMenu->addSeparator();
151 nodeMenu->addSeparator();
153 nodeMenu->addAction(
c->
center);
154 #if QT_VERSION >= 0x040400
158 QMenu* searchMenu =
menuBar->addMenu(tr(
"&Search"));
161 searchMenu->addSeparator();
162 searchMenu->addAction(
c->
stop);
163 searchMenu->addSeparator();
164 searchMenu->addAction(
c->
reset);
166 QMenu* toolsMenu =
menuBar->addMenu(tr(
"&Tools"));
167 doubleClickInspectorsMenu =
new QMenu(
"Double click Inspectors");
168 connect(doubleClickInspectorsMenu, SIGNAL(aboutToShow()),
170 toolsMenu->addMenu(doubleClickInspectorsMenu);
171 solutionInspectorsMenu =
new QMenu(
"Solution inspectors");
172 connect(solutionInspectorsMenu, SIGNAL(aboutToShow()),
174 toolsMenu->addMenu(solutionInspectorsMenu);
175 moveInspectorsMenu =
new QMenu(
"Move inspectors");
176 connect(moveInspectorsMenu, SIGNAL(aboutToShow()),
178 toolsMenu->addMenu(moveInspectorsMenu);
179 comparatorsMenu =
new QMenu(
"Comparators");
180 connect(comparatorsMenu, SIGNAL(aboutToShow()),
182 toolsMenu->addMenu(comparatorsMenu);
184 QMenu* helpMenu =
menuBar->addMenu(tr(
"&Help"));
185 QAction* aboutAction = helpMenu->addAction(tr(
"About"));
186 connect(aboutAction, SIGNAL(triggered()),
187 this, SLOT(
about()));
195 QWidget* stw =
new QWidget();
196 QHBoxLayout* hbl =
new QHBoxLayout();
197 hbl->setContentsMargins(0,0,0,0);
198 hbl->addWidget(
new QLabel(
"Depth:"));
199 depthLabel =
new QLabel(
"0");
200 hbl->addWidget(depthLabel);
202 solvedLabel =
new QLabel(
"0");
203 hbl->addWidget(solvedLabel);
205 failedLabel =
new QLabel(
"0");
206 hbl->addWidget(failedLabel);
208 choicesLabel =
new QLabel(
"0");
209 hbl->addWidget(choicesLabel);
211 openLabel =
new QLabel(
" 0");
212 hbl->addWidget(openLabel);
214 statusBar()->addPermanentWidget(stw);
217 statusBar()->showMessage(
"Ready");
222 connect(
c,SIGNAL(searchFinished(
void)),
this,SLOT(close(
void)));
241 statusBar()->showMessage(
"Ready");
242 prefAction->setEnabled(
true);
243 }
else if (isSearching && finished) {
245 double ms = searchTimer.
stop();
246 double s = std::floor(ms / 1000.0);
248 double m = std::floor(s / 60.0);
250 double h = std::floor(m / 60.0);
264 statusBar()->showMessage(
"Ready");
265 prefAction->setEnabled(
true);
266 }
else if (!isSearching && !finished) {
267 prefAction->setEnabled(
false);
268 statusBar()->showMessage(
"Searching");
274 failedLabel->setNum(stats.
failures);
275 choicesLabel->setNum(stats.
choices);
290 if (setup || pd.exec() == QDialog::Accepted) {
305 doubleClickInspectorsMenu->clear();
306 doubleClickInspectorsMenu->addActions(
308 solutionInspectorsMenu->clear();
310 moveInspectorsMenu->clear();
312 comparatorsMenu->clear();
318 bookmarksMenu->clear();
320 bookmarksMenu->addSeparator();
326 inspectNodeMenu->clear();
327 inspectNodeMenu->addAction(
c->
inspect);
328 inspectNodeMenu->addSeparator();
330 inspectNodeBeforeFPMenu->clear();
332 inspectNodeBeforeFPMenu->addSeparator();