Mercurial > octave
view gui/src/octave-gui.cc @ 15164:bc801a44bb1f
follow Octave pattern for resource_manager singleton
* resource-manager.h, resource-manager.cc: Don't expose pointer to
instance. Use static forwarding functions to access instance and
perform actions.
* files-dockwidget.cc, file-editor-tab.cc, lexer-octave-gui.cc,
main-window.cc, octave-gui.cc, settings-dialog.cc, workspace-view.cc:
Use resource_manager::METHOD instead of
resource_manager::instance()->METHOD.
author | John W. Eaton <jwe@octave.org> |
---|---|
date | Mon, 13 Aug 2012 12:16:26 -0400 |
parents | 9e62d5a3a45e |
children |
line wrap: on
line source
/* OctaveGUI - A graphical user interface for Octave * Copyright (C) 2011 Jacob Dawid (jacob.dawid@googlemail.com) * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. */ #ifdef HAVE_CONFIG_H #include <config.h> #endif #include <QtGui/QApplication> #include <QTranslator> #include <QSettings> #include <iostream> #include <syswait.h> #include "welcome-wizard.h" #include "resource-manager.h" #include "main-window.h" #include "octave-gui.h" // Dissociate from the controlling terminal, if any. static void dissociate_terminal (void) { #if ! defined (Q_OS_WIN32) || defined (Q_OS_CYGWIN) pid_t pid = fork (); if (pid < 0) { std::cerr << "fork failed!" << std::endl;; exit (1); } else if (pid == 0) { // Child. if (setsid () < 0) { std::cerr << "setsid error" << std::endl; exit (1); } } else { // Parent int status; waitpid (pid, &status, 0); exit (WIFEXITED (status) ? WEXITSTATUS (status) : 127); } #endif } int octave_start_gui (int argc, char *argv[]) { dissociate_terminal (); QApplication application (argc, argv); while (true) { if (resource_manager::is_first_run ()) { welcome_wizard welcomeWizard; welcomeWizard.exec (); resource_manager::reload_settings (); } else { QSettings *settings = resource_manager::get_settings (); // FIXME -- what should happen if settings is 0? QString language = settings->value ("language").toString (); QString translatorFile = resource_manager::find_translator_file (language); QTranslator translator; translator.load (translatorFile); application.installTranslator (&translator); resource_manager::update_network_settings (); main_window w; w.show (); return application.exec (); } } }