Mercurial > hg > octave-nkf
changeset 17883:3851e5fde76d
GUI: allow only one release notes windows to be open
* libgui/src/main-window.h
(class main-window): Added release_notes_window variable.
* libgui/src/main-window.cpp
(main-window::mainwindow): Initialize release_notes_window variable.
(main-window::~mainwindow): call delete on release_notes_window variable.
(main_window::display_release_notes): Create release_notes_window only if not already created, and always unminimize/show it.
author | John Donoghue <john.donoghue@ieee.org> |
---|---|
date | Thu, 07 Nov 2013 10:39:30 -0500 |
parents | cf3f828f401c |
children | 766ad9be2966 |
files | libgui/src/main-window.cc libgui/src/main-window.h |
diffstat | 2 files changed, 44 insertions(+), 27 deletions(-) [+] |
line wrap: on
line diff
--- a/libgui/src/main-window.cc +++ b/libgui/src/main-window.cc @@ -78,6 +78,7 @@ editor_window (create_default_editor (this)), workspace_window (new workspace_view (this)), find_files_dlg (0), + release_notes_window (0), _octave_main_thread (0), _octave_qt_link (0), _clipboard (QApplication::clipboard ()), @@ -108,6 +109,11 @@ delete find_files_dlg; find_files_dlg = 0; } + if (release_notes_window) + { + delete release_notes_window; + release_notes_window = 0; + } delete _octave_main_thread; delete _octave_qt_link; delete _cmd_queue; @@ -254,43 +260,51 @@ void main_window::display_release_notes (void) { - std::string news_file = Voct_etc_dir + "/NEWS"; - - QString news; - - QFile *file = new QFile (QString::fromStdString (news_file)); - if (file->open (QFile::ReadOnly)) + if (! release_notes_window) { - QTextStream *stream = new QTextStream (file); - news = stream->readAll (); - if (! news.isEmpty ()) + std::string news_file = Voct_etc_dir + "/NEWS"; + + QString news; + + QFile *file = new QFile (QString::fromStdString (news_file)); + if (file->open (QFile::ReadOnly)) { - news.prepend ("<pre>"); - news.append ("</pre>"); + QTextStream *stream = new QTextStream (file); + news = stream->readAll (); + if (! news.isEmpty ()) + { + news.prepend ("<pre>"); + news.append ("</pre>"); + } + else + news = (tr ("The release notes file '%1' is empty.") + . arg (QString::fromStdString (news_file))); } else - news = (tr ("The release notes file '%1' is empty.") + news = (tr ("The release notes file '%1' cannot be read.") . arg (QString::fromStdString (news_file))); - } - else - news = (tr ("The release notes file '%1' cannot be read.") - . arg (QString::fromStdString (news_file))); - QWidget *w = new QWidget; + release_notes_window = new QWidget; - QTextBrowser *browser = new QTextBrowser (w); - browser->setText (news); + QTextBrowser *browser = new QTextBrowser (release_notes_window); + browser->setText (news); + + QVBoxLayout *vlayout = new QVBoxLayout; + vlayout->addWidget (browser); - QVBoxLayout *vlayout = new QVBoxLayout; - vlayout->addWidget (browser); + release_notes_window->setLayout (vlayout); + release_notes_window->setWindowTitle (tr ("Octave Release Notes")); + release_notes_window->setWindowIcon (QIcon (_release_notes_icon)); + } - w->setLayout (vlayout); - w->setWindowTitle (tr ("Octave Release Notes")); - w->setWindowIcon (QIcon (_release_notes_icon)); - w->show (); - w->raise (); - w->activateWindow (); + if (! release_notes_window->isVisible ()) + release_notes_window->show (); + else if (release_notes_window->isMinimized ()) + release_notes_window->showNormal (); + + release_notes_window->raise (); + release_notes_window->activateWindow (); } void