10 #include <QHBoxLayout> 29 m_statusBar (statusBar),
38 connect (&m_statusBar, SIGNAL (messageChanged (
const QString &)),
this, SLOT (slotStatusBarChanged (
const QString &)));
40 m_statusBar.setMaximumHeight (60);
49 void StatusBar::createGroupUnits ()
51 m_cmbUnits =
new QComboBox;
52 m_cmbUnits->setEnabled (
false);
53 m_cmbUnits->addItem (labelCoordsScreen (), QVariant (STATUS_BAR_UNITS_COORDS_SCREEN));
54 m_cmbUnits->addItem (labelCoordsGraph (), QVariant (STATUS_BAR_UNITS_COORDS_GRAPH));
55 m_cmbUnits->addItem (labelResolutionGraph (), QVariant (STATUS_BAR_UNITS_RESOLUTION_GRAPH));
56 m_cmbUnits->setCurrentText (labelCoordsGraph ());
58 m_cmbUnits->setToolTip (tr (
"Select cursor coordinate values to display."));
59 m_cmbUnits->setWhatsThis (tr(
"Select Cursor Coordinate Values\n\n" 60 "Values at cursor coordinates to display. Coordinates are in screen (pixels) or " 61 "graph units. Resolution (which is the number of graph units per pixel) is " 62 "in graph units. Graph units are only available after axis points have been defined."));
63 connect (m_cmbUnits, SIGNAL (activated(
const QString &)),
this, SLOT (slotComboUnits (
const QString &)));
65 m_editCoords =
new QTextEdit;
66 m_editCoords->setEnabled (
false);
67 m_editCoords->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
68 m_editCoords->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
71 m_editCoords->setReadOnly(
true);
72 m_editCoords->setToolTip (tr (
"Cursor coordinate values."));
73 m_editCoords->setWhatsThis (tr (
"Cursor Coordinate Values\n\n" 74 "Values at cursor coordinates. Coordinates are in screen (pixels) or " 75 "graph units. Resolution (which is the number of graph units per pixel) is " 76 "in graph units. Graph units are only available after axis points have been defined."));
78 m_groupUnits =
new QFrame;
79 m_groupUnits->setFrameStyle (QFrame::Box);
81 palette.setColor (QPalette::Foreground, Qt::gray);
82 m_groupUnits->setPalette (palette);
84 QHBoxLayout *groupLayout =
new QHBoxLayout;
85 m_groupUnits->setLayout (groupLayout);
86 groupLayout->setContentsMargins (0, 0, 0, 0);
87 groupLayout->addWidget (m_cmbUnits);
88 groupLayout->addWidget (m_editCoords);
89 groupLayout->setMargin (2);
91 m_statusBar.addPermanentWidget (m_groupUnits);
94 void StatusBar::createZoom ()
96 m_cmbZoom =
new QComboBox ();
97 m_cmbZoom->setEnabled (
false);
126 m_cmbZoom->setMaximumWidth (80);
127 m_cmbZoom->setToolTip (tr (
"Select zoom."));
128 m_cmbZoom->setWhatsThis (tr(
"Select Zoom\n\n" 129 "Points can be more accurately placed by zooming in."));
131 connect (m_cmbZoom, SIGNAL (currentTextChanged(
const QString &)),
this, SLOT (slotComboZoom (
const QString &)));
133 m_statusBar.addPermanentWidget (m_cmbZoom);
136 void StatusBar::createZoomLabels ()
167 void StatusBar::createZoomMaps ()
224 QString StatusBar::labelCoordsGraph ()
const 226 return QString (
"%1:").arg (QObject::tr (
"Coordinates (graph)"));
229 QString StatusBar::labelCoordsScreen ()
const 231 return QString (
"%1:").arg (QObject::tr (
"Coordinates (pixels)"));
234 QString StatusBar::labelResolutionGraph ()
const 236 return QString (
"%1:").arg (QObject::tr (
"Resolution (graph)"));
240 const QString &coordsGraph,
241 const QString &resolutionGraph)
248 if (m_cmbUnits->isEnabled ()) {
250 m_coordsScreen = coordsScreen;
251 m_coordsGraph = coordsGraph;
252 m_resolutionGraph = resolutionGraph;
272 <<
" message=" << message.toLatin1 ().data ();
278 m_timer =
new QTimer;
279 connect (m_timer, SIGNAL (timeout ()),
this, SLOT (slotTimeout()));
280 m_timer->setSingleShot(
true);
287 void StatusBar::slotComboUnits (
const QString &text)
294 void StatusBar::slotComboZoom (
const QString &text)
299 ZoomFactor zoomFactor = m_zoomMapFromLabel [text];
303 void StatusBar::slotStatusBarChanged(
const QString &message)
305 LOG4CPP_DEBUG_S ((*
mainCat)) <<
"StatusBar::slotStatusBarChanged message=" << message.toLatin1 ().data ();
312 void StatusBar::slotTimeout()
329 m_cmbZoom->setCurrentText (m_zoomMapToLabel [zoomFactor]);
332 void StatusBar::updateCoordsText()
334 if (m_cmbUnits->currentText() == labelCoordsScreen ()) {
335 m_editCoords->setText (m_coordsScreen);
336 }
else if (m_cmbUnits->currentText() == labelCoordsGraph ()) {
337 m_editCoords->setText (m_coordsGraph);
339 m_editCoords->setText (m_resolutionGraph);
345 if (!m_cmbUnits->isEnabled ()) {
348 m_cmbZoom->setEnabled (
true);
349 m_cmbUnits->setEnabled (
true);
350 m_editCoords->setEnabled (
true);
const int MAX_HEIGHT_EDIT_COORDS
const QString * LABEL_ZOOM_1_TO_2
const QString * LABEL_ZOOM_16_TO_1_FARTHER
void setStatusBarMode(StatusBarMode statusBarMode)
Set the status bar visibility mode.
const QString * LABEL_ZOOM_1_TO_16_CLOSER
const QString * LABEL_ZOOM_1_TO_1_CLOSER
const QString * LABEL_ZOOM_4_TO_1_CLOSER
const QString * LABEL_ZOOM_8_TO_1_FARTHER
const QString * LABEL_ZOOM_1_TO_1
StatusBar(QStatusBar &statusBar)
Single constructor that accepts the previously-constructed standard QStatusBar.
void setCoordinates(const QString &coordsScreen, const QString &coordsGraph, const QString &resolutionGraph)
Populate the coordinates fields. Unavailable values are empty. Html-encoding to highlight with colors...
const QString * LABEL_ZOOM_16_TO_1
const QString * LABEL_ZOOM_1_TO_8
const int TEMPORARY_MESSAGE_LIFETIME
#define LOG4CPP_INFO_S(logger)
void slotZoom(int)
Receive zoom selection from MainWindow.
const QString * LABEL_ZOOM_1_TO_16
const QString * LABEL_ZOOM_PREVIOUS
const QString * LABEL_ZOOM_8_TO_1_CLOSER
void wakeUp()
Enable all widgets in the status bar. This is called just after a Document becomes active...
void signalZoom(int)
Send zoom factor, that was just selected in the status bar, to MainWindow.
const QString * LABEL_ZOOM_1_TO_1_FARTHER
StatusBarMode statusBarMode() const
Current mode for status bar visibility. This is tracked locally so this class knows when to hide/show...
const QString * LABEL_ZOOM_8_TO_1
const int MIN_WIDTH_COMBO_UNITS
const QString * LABEL_ZOOM_1_TO_8_FARTHER
const int MIN_SIZE_EDIT_COORDS
const QString * LABEL_ZOOM_1_TO_2_CLOSER
void showTemporaryMessage(const QString &message)
Show temporary message in status bar. After a short interval the message will disappear.
log4cpp::Category * mainCat
const QString * LABEL_ZOOM_2_TO_1_CLOSER
const QString * LABEL_ZOOM_4_TO_1
ZoomFactor
Zoom factors ordered by zoom level so next one above/below is the next zoom level.
const QString * LABEL_ZOOM_2_TO_1_FARTHER
const QString * LABEL_ZOOM_1_TO_2_FARTHER
const QString * LABEL_ZOOM_4_TO_1_FARTHER
const QString * LABEL_ZOOM_FILL
QString statusBarModeToString(StatusBarMode statusBarMode)
const QString * LABEL_ZOOM_1_TO_4_CLOSER
const QString * LABEL_ZOOM_1_TO_4
const QString * LABEL_ZOOM_1_TO_4_FARTHER
const QString * LABEL_ZOOM_2_TO_1
#define ENGAUGE_ASSERT(cond)
Drop in replacement for Q_ASSERT if defined(QT_NO_DEBUG) && !defined(QT_FORCE_ASSERTS) define ENGAUGE...
const QString * LABEL_ZOOM_1_TO_8_CLOSER
#define LOG4CPP_DEBUG_S(logger)