/usr/include/gecode/gist/qtgist.hh is in libgecode-dev 5.1.0-2build1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 | /* -*- mode: C++; c-basic-offset: 2; indent-tabs-mode: nil -*- */
/*
* Main authors:
* Guido Tack <tack@gecode.org>
*
* Copyright:
* Guido Tack, 2006
*
* Last modified:
* $Date: 2013-05-06 09:02:17 +0200 (Mon, 06 May 2013) $ by $Author: tack $
* $Revision: 13613 $
*
* This file is part of Gecode, the generic constraint
* development environment:
* http://www.gecode.org
*
* Permission is hereby granted, free of charge, to any person obtaining
* a copy of this software and associated documentation files (the
* "Software"), to deal in the Software without restriction, including
* without limitation the rights to use, copy, modify, merge, publish,
* distribute, sublicense, and/or sell copies of the Software, and to
* permit persons to whom the Software is furnished to do so, subject to
* the following conditions:
*
* The above copyright notice and this permission notice shall be
* included in all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
* LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
* OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
* WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*
*/
#ifndef GECODE_GIST_QTGIST_HH
#define GECODE_GIST_QTGIST_HH
#include <gecode/gist/treecanvas.hh>
#include <gecode/gist/nodestats.hh>
/*
* Configure linking
*
*/
#if !defined(GIST_STATIC_LIBS) && \
(defined(__CYGWIN__) || defined(__MINGW32__) || defined(_MSC_VER))
#ifdef GECODE_BUILD_GIST
#define GECODE_GIST_EXPORT __declspec( dllexport )
#else
#define GECODE_GIST_EXPORT __declspec( dllimport )
#endif
#else
#ifdef GECODE_GCC_HAS_CLASS_VISIBILITY
#define GECODE_GIST_EXPORT __attribute__ ((visibility("default")))
#else
#define GECODE_GIST_EXPORT
#endif
#endif
// Configure auto-linking
#ifndef GECODE_BUILD_GIST
#define GECODE_LIBRARY_NAME "Gist"
#include <gecode/support/auto-link.hpp>
#endif
namespace Gecode { namespace Gist {
/**
* \brief %Gecode Interactive %Search Tool
*
* This class provides an interactive search tree viewer and explorer as
* a Qt widget. You can embedd or inherit from this widget to use %Gist
* in your own project.
*
* \ingroup TaskGist
*/
class GECODE_GIST_EXPORT Gist : public QWidget {
Q_OBJECT
private:
/// The canvas implementation
TreeCanvas* canvas;
/// The time slider
QSlider* timeBar;
/// Context menu
QMenu* contextMenu;
/// Action used when no solution inspector is registered
QAction* nullSolutionInspector;
/// Menu of solution inspectors
QMenu* solutionInspectorMenu;
/// Action used when no double click inspector is registered
QAction* nullDoubleClickInspector;
/// Menu of double click inspectors
QMenu* doubleClickInspectorMenu;
/// Action used when no double click inspector is registered
QAction* nullMoveInspector;
/// Menu of double click inspectors
QMenu* moveInspectorMenu;
/// Action used when no comparator is registered
QAction* nullComparator;
/// Menu of comparators
QMenu* comparatorMenu;
/// Action used when no bookmark exists
QAction* nullBookmark;
/// Bookmark menu
QMenu* bookmarksMenu;
/// Menu for direct node inspection
QMenu* inspectNodeMenu;
/// Menu for direct node inspection before fixpoint
QMenu* inspectNodeBeforeFPMenu;
/// Information about individual nodes
NodeStatInspector* nodeStatInspector;
public:
/// Inspect current node
QAction* inspect;
/// Inspect current node before fixpoint
QAction* inspectBeforeFP;
/// Stop search
QAction* stop;
/// Reset %Gist
QAction* reset;
/// Navigate to parent node
QAction* navUp;
/// Navigate to leftmost child node
QAction* navDown;
/// Navigate to left sibling
QAction* navLeft;
/// Navigate to right sibling
QAction* navRight;
/// Navigate to root node
QAction* navRoot;
/// Navigate to next solution (to the left)
QAction* navNextSol;
/// Navigate to previous solution (to the right)
QAction* navPrevSol;
/// Search next solution in current subtree
QAction* searchNext;
/// Search all solutions in current subtree
QAction* searchAll;
/// Toggle whether current node is hidden
QAction* toggleHidden;
/// Hide failed subtrees under current node
QAction* hideFailed;
/// Unhide all hidden subtrees under current node
QAction* unhideAll;
/// Label branches under current node
QAction* labelBranches;
/// Label branches on path to root
QAction* labelPath;
/// Zoom tree to fit window
QAction* zoomToFit;
/// Center on current node
QAction* center;
/// Export PDF of current subtree
QAction* exportPDF;
/// Export PDF of whole tree
QAction* exportWholeTreePDF;
/// Print tree
QAction* print;
/// Bookmark current node
QAction* bookmarkNode;
/// Compare current node to other node
QAction* compareNode;
/// Compare current node to other node before fixpoint
QAction* compareNodeBeforeFP;
/// Set path from current node to the root
QAction* setPath;
/// Inspect all nodes on selected path
QAction* inspectPath;
/// Open node statistics inspector
QAction* showNodeStats;
/// Bookmark current node
QAction* toggleStop;
/// Bookmark current node
QAction* unstopAll;
/// Group of all actions for solution inspectors
QActionGroup* solutionInspectorGroup;
/// Group of all actions for double click inspectors
QActionGroup* doubleClickInspectorGroup;
/// Group of all actions for move inspectors
QActionGroup* moveInspectorGroup;
/// Group of all actions for comparators
QActionGroup* comparatorGroup;
/// Group of all actions for bookmarks
QActionGroup* bookmarksGroup;
/// Group of all actions for direct inspector selection
QActionGroup* inspectGroup;
/// Group of all actions for direct inspector selection
QActionGroup* inspectBeforeFPGroup;
public:
/// Constructor
Gist(Space* root, bool bab, QWidget* parent, const Options& opt);
/// Destructor
~Gist(void);
/// Add double click inspector \a i0
void addDoubleClickInspector(Inspector* i0);
/// Add solution inspector \a i0
void addSolutionInspector(Inspector* i0);
/// Add move inspector \a i0
void addMoveInspector(Inspector* i0);
/// Add comparator \a c0
void addComparator(Comparator* c0);
/// Set preference whether to automatically hide failed subtrees
void setAutoHideFailed(bool b);
/// Set preference whether to automatically zoom to fit
void setAutoZoom(bool b);
/// Return preference whether to automatically hide failed subtrees
bool getAutoHideFailed(void);
/// Return preference whether to automatically zoom to fit
bool getAutoZoom(void);
/// Set preference whether to show copies in the tree
void setShowCopies(bool b);
/// Return preference whether to show copies in the tree
bool getShowCopies(void);
/// Set refresh rate
void setRefresh(int i);
/// Set refresh pause in msec
void setRefreshPause(int i);
/// Return preference whether to use smooth scrolling and zooming
bool getSmoothScrollAndZoom(void);
/// Set preference whether to use smooth scrolling and zooming
void setSmoothScrollAndZoom(bool b);
/// Return preference whether to move cursor during search
bool getMoveDuringSearch(void);
/// Set preference whether to move cursor during search
void setMoveDuringSearch(bool b);
/// Set recomputation parameters \a c_d and \a a_d
void setRecompDistances(int c_d, int a_d);
/// Return recomputation distance
int getCd(void);
/// Return adaptive recomputation distance
int getAd(void);
/// Stop search and wait until finished
bool finish(void);
/// Handle resize event
void resizeEvent(QResizeEvent*);
Q_SIGNALS:
/// Signals that the tree has changed
void statusChanged(const Statistics&, bool);
/// Signals that a solution has been found
void solution(const Space*);
/// Signals that %Gist is ready to be closed
void searchFinished(void);
private Q_SLOTS:
/// Displays the context menu for a node
void on_canvas_contextMenu(QContextMenuEvent*);
/// Reacts on status changes
void on_canvas_statusChanged(VisualNode*, const Statistics&, bool);
/// Reacts on double click inspector selection
void selectDoubleClickInspector(QAction*);
/// Reacts on solution inspector selection
void selectSolutionInspector(QAction*);
/// Reacts on move inspector selection
void selectMoveInspector(QAction*);
/// Reacts on comparator selection
void selectComparator(QAction*);
/// Reacts on bookmark selection
void selectBookmark(QAction*);
/// Reacts on adding a bookmark
void addBookmark(const QString& id);
/// Reacts on removing a bookmark
void removeBookmark(int idx);
/// Populate the inspector menus from the actions found in Gist
void populateInspectors(void);
/// Populate the bookmarks menu
void populateBookmarksMenu(void);
/// Shows node status information
void showStats(void);
/// Inspect current node with inspector described by \a a
void inspectWithAction(QAction* a);
/// Inspect current node with inspector described by \a a
void inspectBeforeFPWithAction(QAction* a);
protected:
/// Add inspector \a i0
void addInspector(Inspector* i, QAction*& nas, QAction*& nad,
QAction*& nam);
};
}}
#endif
// STATISTICS: gist-any
|