26#if defined (HAVE_CONFIG_H)
31#include <QApplication>
32#include <QDesktopWidget>
52 m_default_float_button (nullptr), m_default_close_button (nullptr)
54 QStyle *st = style ();
55 m_icon_size = 0.75*st->pixelMetric (QStyle::PM_SmallIconSize);
60 if (buttonlist.size () == 2)
62 if (buttonlist.at (0)->x () < buttonlist.at (1)->x ())
78 (QIcon (
":/actions/icons/widget-undock.png"),
"",
this);
86 (QIcon (
":/actions/icons/widget-close.png"),
"",
this);
93 QString css_button = QString (
"QToolButton {background: transparent; border: 0px;}");
97 QHBoxLayout *h_layout =
new QHBoxLayout ();
98 h_layout->addStretch (100);
101 h_layout->setSpacing (10);
102 h_layout->setContentsMargins (5, 2, 2, 2);
110 connect (p, SIGNAL (copyClipboard_signal ()),
112 connect (p, SIGNAL (pasteClipboard_signal ()),
114 connect (p, SIGNAL (selectAll_signal ()),
118 connect (p, SIGNAL (undo_signal ()),
this, SLOT (
do_undo ()));
126 QHBoxLayout *h_layout
129 label->setStyleSheet (
"background-color: transparent;");
130 h_layout->insertWidget (0, label);
132 setWindowTitle (title);
138 const QString& float_icon,
const QString& float_tooltip,
139 int icon_size,
const QString& titlebar_foreground,
140 const QString& titlebar_background)
142 return QString (
"QDockWidget\n"
146 " titlebar-close-icon: url(%1);\n"
147 " titlebar-normal-icon: url(%2);\n"
150 "QDockWidget::close-button, QDockWidget::float-button\n"
153 " icon-size: %3px;\n"
156 "QAbstractButton#qt_dockwidget_closebutton\n"
158 " qproperty-toolTip: \"%4\";\n"
161 "QAbstractButton#qt_dockwidget_floatbutton\n"
163 " qproperty-toolTip: \"%5\";\n"
166 "QDockWidget::title {\n"
167 " text-align: left;\n"
169 " padding-left: 1px;\n"
172 "QDockWidget::close-button\n"
178 "QDockWidget::float-button\n"
183 ).arg (close_icon).arg (float_icon).arg (icon_size)
184 .arg (close_tooltip).arg (float_tooltip)
185 .arg (titlebar_foreground).arg (titlebar_background)
186 .arg ((icon_size*2)/3).arg((icon_size*7)/3);
192 m_custom_style (false), m_focus_follows_mouse (false),
193 m_recent_float_geom (), m_recent_dock_geom (),
194 m_waiting_for_mouse_button_release (false)
196 setObjectName (obj_name);
203 connect (
this, &octave_dock_widget::topLevelChanged,
205 connect (
this, &octave_dock_widget::visibilityChanged,
217 this, [=] () {
make_widget (); }, Qt::QueuedConnection);
221 m_dock_action->setShortcutContext (Qt::WidgetWithChildrenShortcut);
227 m_close_action->setShortcutContext (Qt::WidgetWithChildrenShortcut);
234 setStyleSheet (
qdockwidget_css (QString (
":/actions/icons/widget-close.png"),
235 QString (
"Close widget"),
236 QString (
":/actions/icons/widget-undock.png"),
237 QString (
"Undock widget"),
242 widget ()->setToolTip (QString (
""));
247 installEventFilter (
this);
249 setFocusPolicy (Qt::StrongFocus);
251 setFeatures (QDockWidget::DockWidgetClosable
252 | QDockWidget::DockWidgetMovable
253 | QDockWidget::DockWidgetFloatable);
269 bool vis = isVisible ();
277 QRect geom = geometry ();
294 setParent (0, Qt::CustomizeWindowHint | Qt::WindowTitleHint |
295 Qt::WindowMinMaxButtonsHint | Qt::WindowCloseButtonHint | Qt::Window);
299 if (! widget_was_dragged)
310 if (titleBarWidget ())
333 emit topLevelChanged (
true);
340 bool vis = isVisible ();
354 m_main_window->addDockWidget (Qt::BottomDockWidgetArea,
this);
369 if (titleBarWidget ())
371 m_dock_action->setIcon (QIcon (
":/actions/icons/widget-undock"
383 QApplication::setActiveWindow (
this);
436 QDockWidget::closeEvent (e);
443 QWidget *
w = QApplication::focusWidget ();
444 if (
w &&
w->focusProxy ())
w =
w->focusProxy ();
453 if ( (
event->type () == QEvent::MouseButtonDblClick && ! isFloating ())
454 || (
event->type () == QEvent::ActivationChange
457 bool retval = QDockWidget::event (
event);
458 if (isFloating () && parent () != 0)
466 return QDockWidget::event (
event);
498 bcol = QWidget::palette ().color (
m_title_widget->backgroundRole ());
503 bcol.getRgb (&r, &g, &b);
509 bcola.getRgb (&r, &g, &b);
521 QApplication::desktop ()->availableGeometry (ref_widget).getRect (&
x, &y, &
w, &h);
522 QRect default_floating_size = QRect (
x+16, y+32,
w/3, h/2);
524 QRect default_dock_size;
529 default_dock_size = QRect (
x+16, y+32,
w/3, h/3);
534 default_dock_size = QRect (0, 0,
w/10, h/10);
539 default_floating_size).toRect ();
544 if (QApplication::desktop ()->screenNumber (&dummy) == -1)
553 if (dock_geom.canConvert (QMetaType::QRect))
563 QToolBar *toolbar = findChild <QToolBar *> ();
567 QMenuBar *menubar = findChild <QMenuBar *> ();
594 QString
name = objectName ();
619 if (e->type () == QEvent::NonClientAreaMouseButtonDblClick)
631 return QDockWidget::eventFilter (obj, e);
653 QDockWidget::moveEvent (
event);
661 QDockWidget::resizeEvent (
event);
698 if (titleBarWidget ())
701 docksig = SIGNAL (triggered (
bool));
706 docksig = SIGNAL (clicked (
bool));
714 connect (dockobj, docksig,
this, SLOT (
default_dock (
bool)));
736 QString css_foreground;
737 QString css_background;
743 QString close_tooltip =
"Close widget";
744 QString dock_tooltip;
748 dock_icon =
"widget-dock";
749 dock_tooltip =
"Dock widget";
753 dock_icon =
"widget-undock";
754 dock_tooltip =
"Undock widget";
757#if defined (Q_OS_MAC)
758 QString alignment =
"center";
760 QString alignment =
"center left";
765 QColor bg_col, fg_col;
780 QColor bg_col_top, bg_col_bottom;
783 bg_col_top = bg_col.lighter (100 +
m_title_3d);
784 bg_col_bottom = bg_col.darker (100 +
m_title_3d);
788 bg_col_top = bg_col.darker (100 -
m_title_3d);
789 bg_col_bottom = bg_col.lighter (100 -
m_title_3d);
792 css_foreground = QString (
" color: %1;\n").arg (fg_col.name ());
795 QString (
" background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1,"
796 " stop: 0 %1, stop: 0.60 %2, stop: 0.95 %2 stop: 1.0 %3);\n").
797 arg (bg_col_top.name ()).
798 arg (bg_col.name ()).
799 arg (bg_col_bottom.name ());
803 css_foreground = QString (
"");
804 css_background = QString (
"");
807 QString full_dock_icon =
":/actions/icons/" + dock_icon + icon_col +
".png";
808 QString full_close_icon =
":/actions/icons/widget-close" + icon_col +
".png";
809 if (titleBarWidget ())
811 titleBarWidget ()->setStyleSheet (css_foreground + css_background);
812 css_button = QString (
"QToolButton {background: transparent; border: 0px;}");
Base class for Octave interfaces that use Qt.
shortcut_manager & get_shortcut_manager(void)
resource_manager & get_resource_manager(void)
Represents the main window.
void pasteClipboard_signal(void)
void selectAll_signal(void)
void copyClipboard_signal(void)
gui_settings * get_settings(void) const
bool update_settings_key(const QString &new_key, const QString &old_key)
void set_shortcut(QAction *action, const sc_pref &scpref, bool enable=true)
const gui_pref dw_title_bg_color("DockWidgets/title_bg_color", QVariant(QColor(255, 255, 255)))
const gui_pref dw_title_fg_color("DockWidgets/title_fg_color", QVariant(QColor(0, 0, 0)))
const gui_pref dw_title_3d("DockWidgets/widget_title_3d", QVariant(50))
const gui_pref dw_title_fg_color_active("DockWidgets/title_fg_color_active", QVariant(QColor(0, 0, 0)))
const gui_pref dw_is_floating("DockWidgets/%1Floating", QVariant(false))
const gui_pref dw_focus_follows_mouse("DockWidgets/focus_follows_mouse", QVariant(false))
const gui_pref dw_dock_geometry("DockWidgets/%1", QVariant(QRect(10, 10, 240, 320)))
const gui_pref dw_is_visible("DockWidgets/%1Visible", QVariant(true))
const gui_pref dw_is_minimized("DockWidgets/%1_minimized", QVariant(false))
const gui_pref dw_title_bg_color_active("DockWidgets/title_bg_color_active", QVariant(QColor(192, 192, 192)))
const gui_pref dw_title_custom_style("DockWidgets/widget_title_custom_style", QVariant(false))
const gui_pref dw_float_geometry("DockWidgets/%1_floating_geometry", QVariant(QRect(50, 50, 480, 640)))
const QString global_menubar_style("QMenuBar {" "margin-top: 0px;" "margin-bottom: 0px;" "padding-top: 0px;" "padding-bottom: 0px;" "}")
const QString gui_obj_name_main_window
const QString global_toolbar_style("QToolBar {" "margin-top: 0px;" "margin-bottom: 0px;" "padding-top: 0px;" "padding-bottom: 0px;" "border-top: 0px;" "border-bottom: 0px;" "}")
const gui_pref mw_state("MainWindow/windowState", QVariant(QByteArray()))
const sc_pref sc_dock_widget_dock(sc_dock_widget+":dock", CTRL_ALT+Qt::Key_D)
const sc_pref sc_dock_widget_close(sc_dock_widget+":close", CTRL_ALT+Qt::Key_C)
F77_RET_T const F77_DBLE * x
std::complex< double > w(std::complex< double > z, double relerr=0)
static QString qdockwidget_css(const QString &close_icon, const QString &close_tooltip, const QString &float_icon, const QString &float_tooltip, int icon_size, const QString &titlebar_foreground, const QString &titlebar_background)