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) {
84 c =
new Gist(root,bab,
this,opt);
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 wmpLabel =
new QLabel(
"");
199 hbl->addWidget(wmpLabel);
200 hbl->addWidget(
new QLabel(
"Depth:"));
201 depthLabel =
new QLabel(
"0");
202 hbl->addWidget(depthLabel);
204 solvedLabel =
new QLabel(
"0");
205 hbl->addWidget(solvedLabel);
207 failedLabel =
new QLabel(
"0");
208 hbl->addWidget(failedLabel);
210 choicesLabel =
new QLabel(
"0");
211 hbl->addWidget(choicesLabel);
213 openLabel =
new QLabel(
" 0");
214 hbl->addWidget(openLabel);
216 statusBar()->addPermanentWidget(stw);
219 statusBar()->showMessage(
"Ready");
224 connect(
c,SIGNAL(searchFinished(
void)),
this,SLOT(close(
void)));
243 statusBar()->showMessage(
"Ready");
244 prefAction->setEnabled(
true);
245 }
else if (isSearching && finished) {
247 double ms = searchTimer.
stop();
248 double s = std::floor(ms / 1000.0);
250 double m = std::floor(s / 60.0);
252 double h = std::floor(m / 60.0);
266 statusBar()->showMessage(
"Ready");
267 prefAction->setEnabled(
true);
268 }
else if (!isSearching && !finished) {
269 prefAction->setEnabled(
false);
270 statusBar()->showMessage(
"Searching");
276 failedLabel->setNum(stats.
failures);
277 choicesLabel->setNum(stats.
choices);
280 wmpLabel->setText(
"WMP");
282 wmpLabel->setText(
"");
296 if (setup || pd.exec() == QDialog::Accepted) {
311 doubleClickInspectorsMenu->clear();
312 doubleClickInspectorsMenu->addActions(
314 solutionInspectorsMenu->clear();
316 moveInspectorsMenu->clear();
318 comparatorsMenu->clear();
324 bookmarksMenu->clear();
326 bookmarksMenu->addSeparator();
332 inspectNodeMenu->clear();
333 inspectNodeMenu->addAction(
c->
inspect);
334 inspectNodeMenu->addSeparator();
336 inspectNodeBeforeFPMenu->clear();
338 inspectNodeBeforeFPMenu->addSeparator();