# HG changeset patch # User John W. Eaton # Date 1385645602 18000 # Node ID 2ef2043a0601f7c13db4b701687d0a5a915a9361 # Parent 9f59f4f749860cb5971bc42bcb22737565ec2870 allow GUI warning bar to be hidden * main-window.h, main-window.cc (main_window::construct_warning_bar): Add buttons to hide warning bar and show more info about the GUI. (main_window::hide_warning_bar, main_window::show_gui_info): New slots. diff -r 9f59f4f74986 -r 2ef2043a0601 libgui/src/main-window.cc --- a/libgui/src/main-window.cc Wed Nov 27 09:11:20 2013 -0800 +++ b/libgui/src/main-window.cc Thu Nov 28 08:33:22 2013 -0500 @@ -1775,9 +1775,10 @@ void main_window::construct_warning_bar (void) { - QDockWidget *warning_bar = new QDockWidget (this); - - QFrame *box = new QFrame (warning_bar); + _warning_bar = new QDockWidget (this); + _warning_bar->setAttribute (Qt::WA_DeleteOnClose); + + QFrame *box = new QFrame (_warning_bar); QLabel *icon = new QLabel (box); QIcon warning_icon @@ -1789,23 +1790,41 @@ QTextBrowser *msg = new QTextBrowser (box); msg->setOpenExternalLinks (true); msg->setText - (tr ("You are using Octave's experimental GUI. " - "It is under continuous improvement and will be the default " - "interface for the 4.0 release. For more information, select " - "the \"Release Notes\" item in the \"Help\" menu of the GUI, " + (tr ("You are using a release candidate of Octave's experimental GUI. " + "Octave is under continuous improvement and the GUI will be the " + "default interface for the 4.0 release. For more information, " + "select the \"Release Notes\" item in the \"Help\" menu of the GUI, " "or visit http://octave.org.")); msg->setStyleSheet ("background-color: #ffd97f; color: black; margin 4px;"); msg->setMinimumWidth (100); - msg->setMinimumHeight (48); - msg->setMaximumHeight (64); + msg->setMinimumHeight (60); + msg->setMaximumHeight (80); msg->setSizePolicy (QSizePolicy (QSizePolicy::Expanding, QSizePolicy::Minimum)); + QPushButton *info_button = new QPushButton (tr ("More Info"), box); + QPushButton *hide_button = new QPushButton (tr ("Hide"), box); + + connect (info_button, SIGNAL (clicked ()), + this, SLOT (show_gui_info ())); + + connect (hide_button, SIGNAL (clicked ()), + this, SLOT (hide_warning_bar ())); + + QVBoxLayout *button_layout = new QVBoxLayout; + + button_layout->addWidget (info_button); + button_layout->addWidget (hide_button); + QHBoxLayout *icon_and_message = new QHBoxLayout; icon_and_message->addWidget (icon); icon_and_message->addSpacing (10); icon_and_message->addWidget (msg); + icon_and_message->addSpacing (10); + icon_and_message->addLayout (button_layout); + + icon_and_message->setAlignment (hide_button, Qt::AlignTop); box->setFrameStyle (QFrame::Box); box->setLineWidth (2); @@ -1813,17 +1832,55 @@ box->adjustSize (); box->setLayout (icon_and_message); - warning_bar->setFeatures (QDockWidget::NoDockWidgetFeatures); - warning_bar->setObjectName ("WarningToolBar"); - warning_bar->setWidget (box); - - addDockWidget (Qt::TopDockWidgetArea, warning_bar); + _warning_bar->setFeatures (QDockWidget::NoDockWidgetFeatures); + _warning_bar->setObjectName ("WarningToolBar"); + _warning_bar->setWidget (box); setCorner (Qt::TopLeftCorner, Qt::TopDockWidgetArea); setCorner (Qt::TopRightCorner, Qt::TopDockWidgetArea); + + addDockWidget (Qt::TopDockWidgetArea, _warning_bar); }; void +main_window::hide_warning_bar (void) +{ + removeDockWidget (_warning_bar); + + QIcon warning_icon + = QIcon::fromTheme ("dialog-warning", + QIcon (":/actions/icons/warning.png")); + + _warning_bar_info_button + = new QPushButton (warning_icon, tr ("Experimental GUI Info")); + + _main_tool_bar->addWidget (_warning_bar_info_button); + + connect (_warning_bar_info_button, SIGNAL (clicked ()), + this, SLOT (show_gui_info ())); +} + +void +main_window::show_gui_info (void) +{ + QString gui_info + (tr ("

You are using a release candidate of Octave's experimental GUI. " + "Octave is under continuous improvement and the GUI will be the " + "default interface for the 4.0 release. For more information, " + "select the \"Release Notes\" item in the \"Help\" menu of the GUI, " + "or visit http://octave.org.

" + "

This message should have more information than the initial " + "warning bar message. Someone needs to write it before we " + "create the first release candidate.

")); + + QMessageBox gui_info_dialog (QMessageBox::Warning, + tr ("Experimental GUI Info"), + gui_info, QMessageBox::Close); + + gui_info_dialog.exec (); +} + +void main_window::construct_tool_bar (void) { _main_tool_bar = addToolBar ("Main"); diff -r 9f59f4f74986 -r 2ef2043a0601 libgui/src/main-window.h --- a/libgui/src/main-window.h Wed Nov 27 09:11:20 2013 -0800 +++ b/libgui/src/main-window.h Thu Nov 28 08:33:22 2013 -0500 @@ -124,6 +124,9 @@ void exit (int status); void reset_windows (void); + void hide_warning_bar (void); + void show_gui_info (void); + void change_directory (const QString& dir); void browse_for_directory (void); void set_current_working_directory (const QString& dir); @@ -294,6 +297,9 @@ QToolBar *_main_tool_bar; + QDockWidget *_warning_bar; + QPushButton *_warning_bar_info_button; + QMenu *_debug_menu; QAction *_debug_continue;