24 #if defined (HAVE_CONFIG_H)
28 #include <QApplication>
31 #include <QHBoxLayout>
47 connect (
this, SIGNAL (visibilityChanged (
bool)),
50 connect (p, SIGNAL (settings_changed (
const QSettings*)),
58 QStyle *st = style ();
59 _icon_size = 0.75*st->pixelMetric (QStyle::PM_SmallIconSize);
61 #if defined (Q_OS_WIN32)
64 setFeatures (QDockWidget::DockWidgetMovable);
67 _dock_action =
new QAction
68 (QIcon (
":/actions/icons/widget-undock.png"),
"",
this);
69 _dock_action-> setToolTip (tr (
"Undock widget"));
70 connect (_dock_action, SIGNAL (triggered (
bool)),
72 _dock_button =
new QToolButton (
this);
73 _dock_button->setDefaultAction (_dock_action);
74 _dock_button->setFocusPolicy (Qt::NoFocus);
77 _close_action =
new QAction
78 (QIcon (
":/actions/icons/widget-close.png"),
"",
this);
79 _close_action-> setToolTip (tr (
"Hide widget"));
80 connect (_close_action, SIGNAL (triggered (
bool)),
82 _close_button =
new QToolButton (
this);
83 _close_button->setDefaultAction (_close_action);
84 _close_button->setFocusPolicy (Qt::NoFocus);
90 QHBoxLayout *h_layout =
new QHBoxLayout ();
91 h_layout->addStretch (100);
92 h_layout->addWidget (_dock_button);
93 h_layout->addWidget (_close_button);
94 h_layout->setSpacing (0);
95 h_layout->setContentsMargins (5,2,2,2);
98 _title_widget->setLayout (h_layout);
99 setTitleBarWidget (_title_widget);
104 setFeatures (QDockWidget::DockWidgetMovable |
105 QDockWidget::DockWidgetClosable |
106 QDockWidget::DockWidgetFloatable);
108 connect (
this, SIGNAL (topLevelChanged (
bool)),
114 connect (p, SIGNAL (copyClipboard_signal ()),
116 connect (p, SIGNAL (pasteClipboard_signal ()),
118 connect (p, SIGNAL (selectAll_signal ()),
121 connect (p, SIGNAL (undo_signal ()),
this, SLOT (
do_undo ()));
123 installEventFilter (
this);
125 setFocusPolicy (Qt::StrongFocus);
132 QString
name = objectName ();
138 settings->beginGroup (
"DockWidgets");
140 #if defined (Q_OS_WIN32)
142 settings->setValue (name+
"_floating_geometry", geometry ());
145 settings->setValue (name, saveGeometry ());
147 settings->setValue (name+
"Visible", isVisible ());
148 settings->setValue (name+
"Floating",
_floating);
149 settings->setValue (name+
"_minimized", isMinimized ());
151 settings->endGroup ();
159 connect (
this, SIGNAL (visibilityChanged (
bool)),
175 #if defined (Q_OS_WIN32)
176 QHBoxLayout* h_layout
177 =
static_cast<QHBoxLayout *
> (titleBarWidget ()->layout ());
178 QLabel *label =
new QLabel (title);
179 label->setStyleSheet (
"background: transparent;");
180 h_layout->insertWidget (0,label);
182 setWindowTitle (title);
199 #if defined (Q_OS_WIN32)
207 settings->setValue (
"DockWidgets/" + objectName () +
"_dock_area",
208 _parent->dockWidgetArea (
this));
209 settings->setValue (
"DockWidgets/" + objectName (), saveGeometry ());
213 setParent (0, Qt::Window);
214 _dock_action->setIcon (QIcon (
":/actions/icons/widget-dock"
216 _dock_action->setToolTip (tr (
"Dock widget"));
219 setGeometry (settings->value (
"DockWidgets/" + objectName ()
220 +
"_floating_geometry",
221 QRect (50,100,480,480)).toRect ());
226 setWindowFlags (Qt::Window);
228 QString css = styleSheet ();
229 css.replace (
"widget-undock",
"widget-dock");
243 #if defined (Q_OS_WIN32)
251 settings->setValue (
"DockWidgets/" + objectName () +
"_floating_geometry",
259 = settings->value (
"DockWidgets/" + objectName () +
"_dock_area",
260 Qt::TopDockWidgetArea).toInt ();
261 _parent->addDockWidget (static_cast<Qt::DockWidgetArea> (area),
this);
265 restoreGeometry (settings->value
266 (
"DockWidgets/" + objectName ()).toByteArray ());
272 _dock_action->setIcon (QIcon (
":/actions/icons/widget-undock"
274 _dock_action->setToolTip (tr (
"Undock widget"));
282 setWindowFlags (Qt::Widget);
284 QString css = styleSheet ();
285 css.replace (
"widget-dock",
"widget-undock");
318 QWidget *
w = QApplication::focusWidget ();
319 if (w && w->focusProxy ()) w = w->focusProxy ();
333 dock_icon =
"widget-dock";
335 dock_icon =
"widget-undock";
337 #if defined (Q_OS_MAC)
338 QString alignment =
"center";
340 QString alignment =
"center left";
345 QColor bg_col, fg_col;
360 QColor bg_col_top, bg_col_bottom;
363 bg_col_top = bg_col.lighter (100 +
_title_3d);
364 bg_col_bottom = bg_col.darker (100 +
_title_3d);
368 bg_col_top = bg_col.darker (100 -
_title_3d);
369 bg_col_bottom = bg_col.lighter (100 -
_title_3d);
373 QString (
"background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1,"
374 " stop: 0 %1, stop: 0.60 %2, stop: 0.95 %2 stop: 1.0 %3);").
375 arg (bg_col_top.name ()).
376 arg (bg_col.name ()).
377 arg (bg_col_bottom.name ());
379 #if defined (Q_OS_WIN32)
380 css = background + QString (
" color: %1 ;").
arg (fg_col.name ());
382 css = QString (
"QDockWidget::title { " + background +
383 " text-align: " + alignment +
";"
384 " padding: 0px 0px 0px 4px;}\n"
385 "QDockWidget { color: %1 ; "
386 " titlebar-close-icon: url(:/actions/icons/widget-close%2.png);"
387 " titlebar-normal-icon: url(:/actions/icons/"+dock_icon+
"%2); }"
388 "QDockWidget::close-button,"
389 "QDockWidget::float-button { border: 0px; icon-size: %3px; width: %3px}"
396 #if defined (Q_OS_WIN32)
399 css = QString (
"QDockWidget::title { text-align: " + alignment +
";"
400 " padding: 0px 0px 0px 4px;}"
402 " titlebar-close-icon: url(:/actions/icons/widget-close.png);"
403 " titlebar-normal-icon: url(:/actions/icons/"+dock_icon+
"); }"
404 "QDockWidget::close-button,"
405 "QDockWidget::float-button { border: 0px; icon-size: %1px; width: %1px}"
410 #if defined (Q_OS_WIN32)
411 _title_widget->setStyleSheet (css);
412 css_button = QString (
"background: transparent; border: 0px;");
413 _dock_button->setStyleSheet (css_button);
414 _close_button->setStyleSheet (css_button);
415 _dock_action->setIcon (QIcon (
":/actions/icons/" + dock_icon + icon_col +
417 _close_action->setIcon (QIcon (
":/actions/icons/widget-close" + icon_col +
428 = settings->value (
"DockWidgets/widget_title_custom_style",
false).toBool ();
431 = settings->value (
"DockWidgets/widget_title_3d",50).toInt ();
433 QColor default_var = QColor (0,0,0);
434 _fg_color = settings->value (
"Dockwidgets/title_fg_color",
435 default_var).value<QColor> ();
436 default_var = QColor (0,0,0);
438 default_var).value<QColor> ();
440 default_var = QColor (255,255,255);
441 _bg_color = settings->value (
"Dockwidgets/title_bg_color",
442 default_var).value<QColor> ();
443 default_var = QColor (192,192,192);
445 default_var).value<QColor> ();
467 if (e->type () == QEvent::NonClientAreaMouseButtonDblClick)
473 return QDockWidget::eventFilter (obj,e);
499 QDockWidget::closeEvent (e);
octave_value arg(void) const
std::complex< double > w(std::complex< double > z, double relerr=0)
static QSettings * get_settings(void)