17 #include <QApplication>
31 m_dark =
new QAction(
"Darkness",
this);
32 m_dark->setCheckable(
true);
33 m_dark->setChecked(
true);
34 m_light =
new QAction(
"Lightness",
this);
35 m_light->setCheckable(
true);
36 m_rgb =
new QAction(
"RGB similarity",
this);
37 m_rgb->setCheckable(
true);
38 m_grad =
new QAction(
"RGB gradient",
this);
39 m_grad->setCheckable(
true);
40 m_curve =
new QAction(
"Curvature",
this);
41 m_curve->setCheckable(
true);
42 m_dist =
new QAction(
"Distance",
this);
43 m_dist->setCheckable(
true);
44 m_scalar =
new QAction(
"Scalar field",
this);
45 m_scalar->setCheckable(
true);
46 m_scalar_inv =
new QAction(
"Inverse scalar field",
this);
47 m_scalar_inv->setCheckable(
true);
57 "Traces follow 'dark' points. Good for shadowed fracture traces.");
59 "Traces follow 'light' points. Good for thin quartz veins etc.");
61 "Traces follow points that have a similar color to the start and "
62 "end points. Useful if structures being traced have a distinct "
65 "Traces follow points in neighbourhoods with high colour "
66 "gradients. Good for contacts.");
68 "Traces follow ridges and valleys. Good for fractures with high "
69 "relief, especially in combination with \"Darkness\".");
71 "Traces take the shortest euclidean path (how booring...)");
73 "Use the active scalar field to define path cost (i.e. the path "
74 "follows low scalar values).");
75 m_scalar_inv->setToolTip(
76 "Use the inverse of the active scalar field to define path cost "
77 "(i.e. the path follows high scalar values).");
79 "Recalculate the selected traces using the latest cost function");
94 ccCompassDlg::connect(m_dark, SIGNAL(triggered()),
this,
96 ccCompassDlg::connect(m_light, SIGNAL(triggered()),
this,
98 ccCompassDlg::connect(m_rgb, SIGNAL(triggered()),
this, SLOT(
setRGBCost()));
99 ccCompassDlg::connect(m_grad, SIGNAL(triggered()),
this,
101 ccCompassDlg::connect(m_curve, SIGNAL(triggered()),
this,
103 ccCompassDlg::connect(m_dist, SIGNAL(triggered()),
this,
105 ccCompassDlg::connect(m_scalar, SIGNAL(triggered()),
this,
107 ccCompassDlg::connect(m_scalar_inv, SIGNAL(triggered()),
this,
126 "If checked, a plane will automatically be fitted to traces "
127 "matching the criteria defined in the ccCompass description.");
129 "If checked, planes will be drawn partially transparent "
131 m_showNormals->setToolTip(
"If checked, plane normals will be drawn.");
133 "If checked, plane orientations will be displayed in the 3D view.");
142 algorithmButton->setPopupMode(QToolButton::InstantPopup);
144 algorithmButton->setEnabled(
true);
153 m_toSVG =
new QAction(
"Export SVG...",
this);
155 m_pinchTool =
new QAction(
"Add pinch nodes",
this);
158 new QAction(
"Measure two-point thickness",
this);
159 m_youngerThan =
new QAction(
"Assign \"Younger-Than\" relationship",
this);
161 m_follows =
new QAction(
"Assign \"Follows\" relationship",
this);
163 m_equivalent =
new QAction(
"Assign \"Equivalent\" relationship",
this);
170 "Add Pinch Node objects to record features such as dyke tips or "
171 "sedimentary units that pinch-out.");
173 "Converts a point cloud containing points (measurement location) "
174 "and dip/dip-direction scalar fields to planes.");
176 "Convert a point cloud containing measurement points and "
177 "trend->plunge scalar fields into foliation objects.");
179 "Export the currently visible trace to a SVG vector graphic using "
180 "an orthographic projection of the current view.");
182 "Add short notes to a point in a point cloud for future "
185 "Select a plane and then a point to measure plane-perpendicular "
188 "Measure the plane-perpendicular distance between two points.");
190 "Pick two GeoObjects to assign a \"younger-than\" (i.e. "
191 "crosscutting, superposition) relationshi.p");
193 "Select two GeoObjects to assign a \"follows\" (i.e. conformable) "
196 "Select two GeoObjects to assign an \"equivalent\" (i.e. coeval) "
199 "Calculates best fit planes for the entire upper/lower surfaces of "
202 "Merge all selected GeoObjects into a single GeoObject.");
204 "Estimate trace structure normals with maximum a-postiori plane "
205 "fitting algorithm.");
235 "Recalculates all fit-planes deriving from traces and GeoObjects "
236 "(but not those calculated with the Plane Tool).");
238 "Converts the selected GeoObject(s) or individual traces to a "
239 "point cloud (typically for proximity analysis).");
241 "Distributes the selected objects into GeoObjects that have "
244 "Uses structure traces and the mesh octree to measure fracture "
247 "Estimate bulk strain tensor from Mode-I dykes and veins with "
248 "structure normal estimates.");
256 extraModeButton->setPopupMode(QToolButton::InstantPopup);
261 p.setColor(backgroundRole(), QColor(240, 240, 240, 200));
263 setAutoFillBackground(
true);
276 if (m_dark->isChecked()) out = out | ccTrace::MODE::DARK;
277 if (m_light->isChecked()) out = out | ccTrace::MODE::LIGHT;
278 if (m_rgb->isChecked()) out = out | ccTrace::MODE::RGB;
279 if (m_curve->isChecked()) out = out | ccTrace::MODE::CURVE;
280 if (m_grad->isChecked()) out = out | ccTrace::MODE::GRADIENT;
281 if (m_dist->isChecked()) out = out | ccTrace::MODE::DISTANCE;
282 if (m_scalar->isChecked()) out = out | ccTrace::MODE::SCALAR;
283 if (m_scalar_inv->isChecked()) out = out | ccTrace::MODE::INV_SCALAR;
286 return ccTrace::MODE::DISTANCE;
297 acceptButton->click();
300 acceptButton->click();
303 closeButton->click();
ccCompassDlg(QWidget *parent=0)
Default constructor.
QAction * m_fitPlaneToGeoObject
QAction * m_measure_thickness_twoPoint
QAction * m_distributeSelection
QAction * m_measure_thickness
QAction * m_estimateNormals
QMenu * m_pairpicking_menu
QMenu * m_cost_algorithm_menu
QAction * m_mergeSelected
QAction * m_estimateStrain
QAction * m_loadLineations
QAction * m_loadFoliations
QAction * m_recalculateFitPlanes
void onShortcutTriggered(int)
To capture overridden shortcuts (pause button, etc.)
Generic overlay dialog interface.
void shortcutTriggered(int key)
Signal emitted when an overridden key shortcut is pressed.
void addOverridenShortcut(Qt::Key key)