Mercurial > octave-nkf
view gui/src/octave-gui.cc @ 15139:bfc220d1de67 gui
include gui in default Octave binary
* Makefile.am (GUIDIR): New variable.
(SUBDIRS): Use it in the list instead of @GUIDIR@. List $(GUIDIR)
before src.
* gui/src/Makefile.am (bin_PROGRAMS): Delete.
(octlib_LTLIBRARIES): New variable.
(liboctgui_la_SOURCES): Rename from octave_gui_SOURCES.
(liboctgui_la_CPPFLAGS): Rename from octave_gui_CPPFLAGS.
(liboctgui_la_LIBADD): Rename from octave_gui_LDADD.
Don't include Octave libraries in the list.
Do include Qt libraries in the list.
(liboctgui_la_LDFLAGS): Rename from octave_gui_LDFLAGS.
Only include -L@QT_LIBDIR@ option in the list.
(moc_%.cpp): Use $(liboctgui_la_CPPFLAGS) in rules, not
$(octave_gui_CPPFLAGS).
* octave-gui.h: New file.
* octave-gui.cc: Include it.
(dissociate_terminal): In parent, wait for child process and exit with
exit status of child.
(octave_start_gui): Rename from main.
* run-octave.in: Start with GUI by default. Rename -gui option -cli
to allow running octave-cli binary.
* main.cc, main-cli.cc: New files.
* main.c: Delete.
* src/Makefile (bin_PROGRAMS): Include octave-cli in the list.
(OCTAVE_CORE_LIBS): New variable.
(octave_cli_SOURCES, octave_cli_LDADD, octave_cli_LDFLAGS):
New variables.
(octave_SOURCES): Define to main.cc, not main.c.
(octave_CPPFLAGS): New variable.
(octave_LDFLAGS): Include -DENABLE_GUI=1 in the list.
(octave_LDADD): Use $(OCTAVE_CORE_LIBS) and link with GUI lib.
* octave.cc (force_gui_option, no_gui_option): New static variables.
(octave_starting_gui): New function.
(usage_string): Update for new options.
(FORCE_GUI_OPTION, NO_GUI_OPTION): New macros.
(long_opts): Include "force-gui" and "no-gui" options in the list.
(octave_main): Handle FORCE_GUI_OPTION and NO_GUI_OPTION cases.
Error if both --force-gui and --no-gui are used.
* octave.h (octave_starting_gui): Provide decl.
author | John W. Eaton <jwe@octave.org> |
---|---|
date | Fri, 10 Aug 2012 10:27:32 -0400 |
parents | 16a6b0a6855d |
children | 9e62d5a3a45e |
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/>. */ #include <QtGui/QApplication> #include <QTranslator> #include <QSettings> #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::instance ()->is_first_run ()) { welcome_wizard welcomeWizard; welcomeWizard.exec (); resource_manager::instance ()->reload_settings (); } else { QSettings *settings = resource_manager::instance ()->get_settings (); QString language = settings->value ("language").toString (); QString translatorFile = resource_manager::instance ()->find_translator_file (language); QTranslator translator; translator.load (translatorFile); application.installTranslator (&translator); resource_manager::instance ()->update_network_settings (); main_window w; w.show (); return application.exec (); } } }