Mercurial > hg > octave-nkf
changeset 18035:132667955f66
maint: Periodic merge of stable to default.
author | Rik <rik@octave.org> |
---|---|
date | Sat, 30 Nov 2013 08:43:51 -0800 |
parents | 2627aeca5032 (current diff) 482cc05b4f99 (diff) |
children | c404cec84eb4 4502d6d577d5 |
files | NEWS |
diffstat | 15 files changed, 419 insertions(+), 149 deletions(-) [+] |
line wrap: on
line diff
--- a/NEWS +++ b/NEWS @@ -1,10 +1,41 @@ Summary of important user-visible changes for version 3.8: --------------------------------------------------------- - ** A GUI is now available with Octave and is the default when starting - an interactive session. The original command line interface is also - available and can be entered by using the "--no-gui" option when - invoking Octave. + ** One of the biggest new features for Octave 3.8 is a graphical user + interface. It is the one thing that users have requested most + often over the last few years and now it is almost ready. But + because it is not quite as polished as we would like, we have + decided to wait until the 4.0.x release series before making the + GUI the default interface (until then, you can use the --force-gui + option to start the GUI). + + Given the length of time and the number of bug fixes and + improvements since the last major release Octave, we also decided + against delaying the release of all these new improvements any + longer just to perfect the GUI. So please enjoy the 3.8 release of + Octave and the preview of the new GUI. We beleive it is working + reasonably well, but we also know that there are some obvious rough + spots and many things that could be improved. + + WE NEED YOUR HELP. There are many ways that you can help us fix + the remaining problems, complete the GUI, and improve the overall + user experience for both novices and experts alike: + + * If you are a skilled software developer, you can help by + contributing your time to help with Octave's development. See + http://octave.org/get-involved.html for more information. + + * If Octave does not work properly, you are encouraged + report the problems you find. See http://octave.org/bugs.html + for more information about how to report problems. + + * Whether you are a user or developer, you can help to fund the + project. Octave development takes a lot of time and expertise. + Your contributions help to ensure that Octave will continue to + improve. See http://octave.org/donate.html for more details. + + We hope you find Octave to be useful. Please help us make it even + better for the future! ** Octave now uses OpenGL graphics by default with FLTK widgets. If OpenGL libraries or FLTK widgets are not available when Octave is
--- a/configure.ac +++ b/configure.ac @@ -1141,7 +1141,7 @@ ## Check for fontconfig library warn_fontconfig="" - if test -z "$warn_freetype"; then + if test $native_graphics = yes; then PKG_CHECK_MODULES(FONTCONFIG, [fontconfig], [have_fontconfig=yes OPENGL_LIBS="$FONTCONFIG_LIBS $OPENGL_LIBS" @@ -1155,6 +1155,20 @@ OCTAVE_CONFIGURE_WARNING([warn_fontconfig]) fi + ## Check for Xft library (when using X11) + + warn_xft="" + if test $native_graphics = yes && test "$have_x" = yes; then + PKG_CHECK_MODULES(XFT, [xft], + [AC_DEFINE(HAVE_XFT, 1, [Define to 1 if Xft is present.])], + [warn_xft="Xft library not found. Native graphics will be disabled."]) + fi + + if test -n "$warn_xft"; then + native_graphics=no + OCTAVE_CONFIGURE_WARNING([warn_xft]) + fi + ## Check for FLTK (www.fltk.org) library AC_ARG_WITH([fltk-prefix], [ @@ -2462,7 +2476,7 @@ JAVA_HOME=`echo $JAVA_TMP_HOME | $SED -e 's|[[/\\]]bin[[/\\]]\?$||' | $SED -e 's|[[/\\]]jre[[/\\]]\?$||'` fi - case $host_os in + case $build_os in mingw* | msdosmsvc) ## Under Win32 platform, we want JAVA_HOME to be in MSYS format, that is ## without colon and backslashes, as it is also used as path separator. @@ -2470,14 +2484,8 @@ ## (e.g. C:\Program Files\Java\...). if test -n "$JAVA_HOME"; then JAVA_HOME=`cd "$JAVA_HOME" && pwd` - ## Maybe this will be useful in the future, as native Java won't - ## understand MSYS paths. - JAVA_HOME_NATIVE=`cd "$JAVA_HOME" && pwd -W` fi ;; - *) - JAVA_HOME_NATIVE="$JAVA_HOME" - ;; esac ## Amend search path for JAVAC and JAR.
--- a/libgui/languages/de_DE.ts +++ b/libgui/languages/de_DE.ts @@ -149,7 +149,7 @@ <translation>&%1 %2</translation> </message> <message> - <location line="+174"/> + <location line="+175"/> <source>&New File</source> <translation>&Neue Datei</translation> </message> @@ -309,7 +309,7 @@ <translation>&Suchen und Ersetzen</translation> </message> <message> - <location line="-589"/> + <location line="-590"/> <source>Could not open file %1 for read: %2.</source> @@ -338,7 +338,7 @@ %2.</translation> </message> <message> - <location line="+554"/> + <location line="+555"/> <source>Go&to Line</source> <translation>&Gehe zu Zeile</translation> </message> @@ -376,7 +376,7 @@ <context> <name>file_editor_tab</name> <message> - <location filename="../src/m-editor/file-editor-tab.cc" line="+787"/> + <location filename="../src/m-editor/file-editor-tab.cc" line="+792"/> <source>Goto line</source> <translation>Gehe zu Zeile</translation> </message> @@ -403,7 +403,7 @@ </message> <message> <location line="+10"/> - <location line="+123"/> + <location line="+122"/> <location line="+111"/> <location line="+64"/> <location line="+22"/> @@ -411,7 +411,7 @@ <translation>Octave Editor</translation> </message> <message> - <location line="-319"/> + <location line="-318"/> <source>The file %1 is about to be closed but has been modified. @@ -422,7 +422,7 @@ %2</translation> </message> <message> - <location line="+202"/> + <location line="+201"/> <source>Octave Files (*.m);;All Files (*)</source> <translation>Octave Dateien (*.m);;All Files (*)</translation> </message> @@ -459,7 +459,7 @@ %2.</translation> </message> <message> - <location line="-962"/> + <location line="-966"/> <source>Line:</source> <translation>Zeile:</translation> </message> @@ -469,7 +469,7 @@ <translation>Spalte:</translation> </message> <message> - <location line="+1134"/> + <location line="+1138"/> <source>It seems that '%1' has been modified by another application. Do you want to reload it?</source> <translation>Die Datei %1 wurde von einer anderen Anwendung verändert. Soll der neue Inhalt geladen werden?</translation> </message> @@ -708,8 +708,8 @@ You can find more information about each of these by visiting <a href="http://octave.org/support.html">http://octave.org/support.html</a> (opens in external browser).</p> </body></html></source> <translation><html><body> -<p>Wir hoffen dass Du Octave nützlich findest.</p> -<p>Wenn Du auf Probleme stoßen solltest, gibt es eine Reihe von Wegen um Hilfe zu bekommen. Neben der Option kommerziellen Support zu erhalten, gibt es noch eine Mailingliste, ein Wiki und andere Community Support Channels +<p>Wir hoffen, dass Du Octave nützlich findest.</p> +<p>Wenn Du auf Probleme stoßen solltest, gibt es eine Reihe von Wegen um Hilfe zu bekommen. Neben der Option kommerziellen Support zu erhalten, gibt es noch eine Mailingliste, ein Wiki und andere Community Support Channels. Mehr über jede Möglichkeit findest Du im Internet unter <a href="http://octave.org/support.html">http://octave.org/support.html</a> (Wird im externen Browser geöffnet).</p> </body></html></translation> </message> @@ -734,9 +734,9 @@ <head/><body> <p>Für weitere Informationen über Octave:</p> <ul> -<li>Visit <a href="http://octave.org">http://octave.org</a> (Öffnet im externen Browser)</li> -<li>Online Dokumentation <a href="http://www.gnu.org/software/octave/doc/interpreter/index.html">html</a>- oder <a href="http://www.gnu.org/software/octave/octave.pdf">PDF</span></a>Dokument (Öffnet im externen Browser)</li> -<li>Öffnet den Dokumentations-Browser von Octave GUI mit Hilfe-Menü</li> +<li><a href="http://octave.org">http://octave.org</a> (Öffnet im externen Browser)</li> +<li>Online Dokumentation <a href="http://www.gnu.org/software/octave/doc/interpreter/index.html">html</a>- oder <a href="http://www.gnu.org/software/octave/octave.pdf">PDF</span></a>-Dokument (Öffnet im externen Browser)</li> +<li>Benutze den Dokumentations-Browser von Octave GUI im Hilfe-Menü</li> </ul> </body></html></translation> </message> @@ -1005,7 +1005,7 @@ <message> <location filename="../src/history-dock-widget.cc" line="+43"/> <source>Browse and search the command history.</source> - <translation>Durchsuchen Sie die Befehlshistorie.</translation> + <translation>Durchsuchen der Befehlshistorie.</translation> </message> <message> <location line="+24"/> @@ -1043,7 +1043,7 @@ <message> <location filename="../src/welcome-wizard.cc" line="-179"/> <source>Welcome to Octave!</source> - <translation>Willkommen zu Octave!</translation> + <translation>Willkommen bei Octave!</translation> </message> <message> <location line="+3"/> @@ -1063,8 +1063,8 @@ <p>The configuration file is stored in %1. If that file exists, you will not see this dialog when Octave starts.</p> </body></html></source> <translation><html><body> -<p>Es scheint als ob die grafische Benutzerschnittstelle zum ersten Mal auf diesem Computer gestartet wurde. -Klicke auf 'weiter' um eine Konfigurationsdatei anzulegen und Octave zu starten.</p> +<p>Es scheint, dass die grafische Benutzerschnittstelle (GUI) zum ersten Mal auf diesem Computer gestartet wurde. +Klicke auf 'Weiter' um eine Konfigurationsdatei anzulegen und Octave zu starten.</p> <p>Die Konfigurationsdatei wird in %1 gespeichert. Falls diese Datei existiert, wird dieser Dialog nicht mehr angezeigt.</p> </body></html></translation> </message> @@ -1073,13 +1073,13 @@ <name>main_window</name> <message> <location filename="../src/main-window.cc" line="+201"/> - <location line="+1149"/> + <location line="+1161"/> <source>Load Workspace</source> <translation>Lade Arbeitsumgebung</translation> </message> <message> - <location line="-511"/> - <location line="+865"/> + <location line="-520"/> + <location line="+874"/> <source>About Octave</source> <translation>Über Octave</translation> </message> @@ -1144,13 +1144,13 @@ <translation>Einfügen</translation> </message> <message> - <location line="-1247"/> - <location line="+1166"/> + <location line="-1259"/> + <location line="+1178"/> <source>Save Workspace As</source> <translation>Arbeitsumgebung speichern als</translation> </message> <message> - <location line="-1042"/> + <location line="-1054"/> <source>The release notes file '%1' is empty.</source> <translation>Die Datei '%1' mit Versionshinweisen ist leer.</translation> </message> @@ -1165,17 +1165,16 @@ <translation>Versionshinweise zu Octave</translation> </message> <message> - <location line="+185"/> + <location line="+186"/> <source>Octave Community News</source> - <translation>Neuigkeiten aus der Octave Gemeinschaft</translation> + <translation>Neuigkeiten aus der Octave Community</translation> </message> <message> - <location line="+171"/> <source>Set working directory</source> - <translation>Arbeitsverzeichnis setzen</translation> + <translation type="obsolete">Arbeitsverzeichnis setzen</translation> </message> <message> - <location line="+754"/> + <location line="+936"/> <source>Clear Clipboard</source> <translation>Zwischenablage leeren</translation> </message> @@ -1287,7 +1286,7 @@ <message> <location line="+3"/> <source>Community News</source> - <translation>Neuigkeiten der Gemeinschaft</translation> + <translation>Neuigkeiten der Community</translation> </message> <message> <location line="+30"/> @@ -1305,7 +1304,8 @@ <translation>Ein Verzeichnis höher</translation> </message> <message> - <location line="+3"/> + <location line="-1120"/> + <location line="+1123"/> <source>Browse directories</source> <translation>Verzeichnis suchen</translation> </message> @@ -1379,7 +1379,7 @@ <context> <name>news_reader</name> <message> - <location line="-1268"/> + <location line="-1279"/> <source><html> <body> <p> @@ -1392,7 +1392,18 @@ </p> <p> <small><em>&mdash; The Octave Developers, </source> - <translation type="unfinished"></translation> + <translation><html> +<body> +<p> +Die Neuigkeiten aus der Octave Community scheinen nicht erreichbar zu sein. +</p> +<p> +Für die aktuellsten Neuigkeiten besuche +<a href="http://octave.org/community-news.html">http://octave.org/community-news.html</a> +sobald Du über eine Verbindung zum Internet verfügst (Link öffnet sich im externen Browser). +</p> +<p> +<small><em>&mdash; Die Entwickler von Octave,</translation> </message> <message> <location line="+18"/> @@ -1409,7 +1420,19 @@ </p> <p> <small><em>&mdash; The Octave Developers, </source> - <translation type="unfinished"></translation> + <translation><html> +<body> +<p> +Die Verbindung zum Internet um aktuelle Neuigkeiten von der Octave Community anzuzeigen wurde deaktiviert. +</p> +<p> +Für aktuelle Neuigkeiten besuche +<a href="http://octave.org/community-news.html">http://octave.org/community-news.html</a> +sobald Du über eine Verbindung zum Internet verfügst (Link öffnet sich im externen Browser) +oder aktiviere die Internetverbindung in den Einstellungen unter Netzwerk. +</p> +<p> +<small><em>&mdash; Die Entwickler von Octave,</translation> </message> </context> <context> @@ -1516,7 +1539,7 @@ <context> <name>resource_manager</name> <message> - <location filename="../src/resource-manager.cc" line="+204"/> + <location filename="../src/resource-manager.cc" line="+224"/> <source>The settings file %1 does not exist and can not be created. @@ -1527,9 +1550,9 @@ <translation>Die Konfigurationsdatei %1 existiert nicht und kann nicht angelegt werden. -Stellen Sie sicher, daß Sie Lese- und Schreibrechte für +Stelle sicher, dass Du Lese- und Schreibrechte für %2 -besitzen. +besitzt. Die Octave Benutzeroberfläche muss jetzt geschlossen werden.</translation> </message> <message> @@ -1703,7 +1726,7 @@ <message> <location line="+36"/> <source><html><head/><body><p>Select font, font size (as a difference from the default size), font style (bold, italic, underline), text color and background color (for the latter, the color pink (255,0,255) is a placeholder for the default background color)</p></body></html></source> - <translation type="unfinished"></translation> + <translation><html><head/><body><p>Auswahl von Schrift, Schriftgröße (als Differenz von der Standardgröße), Schriftstil (<b>f</b>ett, <b>k</b>ursiv, <b>u</b>nterstrichen), Text- und Hintergrundfarbe (für den Hintergrund ist die Farbe Pink (255,0,255) ein Platzhalter für die Standardfarbe)</p></body></html></translation> </message> <message> <location line="+31"/> @@ -1893,7 +1916,7 @@ <message> <location filename="../src/welcome-wizard.cc" line="+44"/> <source>Community News</source> - <translation>Neuigkeiten der Gemeinschaft</translation> + <translation>Neuigkeiten der Community</translation> </message> <message> <location line="+5"/> @@ -1918,7 +1941,12 @@ <p>You may also view the news by selecting the "Community News" item in the "Help" menu in the GUI, or by visiting <a href="http://octave.org/community-news.html">http://octave.org/community-news.html</a>.</p> </body></html></source> - <translation type="unfinished"></translation> + <translation><html><body> +<p>Beim Start der Octave GUI kann die Octave Webseite auf aktuelle Neuigkeiten und Informationen über die Octave Community geprüft werden. +Die Überprüfung findet dann nur einmal am Tag statt und Neuigkeiten werden nur eingeblendet, wenn es seit der letzten Überprüfung etwas Neues gibt.</p> +<p>Du kannst dir die Neuigkeiten auch ansehen, indem Du den Punkt "Neuigkeiten der Community" im Menü auswählst oder folgende Internetseite besuchst: +<a href="http://octave.org/community-news.html">http://octave.org/community-news.html</a>.</p> +</body></html></translation> </message> <message> <location line="+26"/> @@ -1929,7 +1957,13 @@ <head/><body> <p>Allow Octave to connect to the Octave web site when it starts to display current news and information about the Octave community.</p> </body></html></source> - <translation type="unfinished"></translation> + <translation><html><head> +<style> +a:link { text-decoration: underline; color: #0000ff; } +</style> +<head/><body> +<p>Erlaube Octave beim Programmstart eine Verbindung zur Octave Webseite herzustellen um aktuelle Neuigkeiten und Informationen über Octave anzuzeigen.</p> +</body></html></translation> </message> </context> <context> @@ -1958,7 +1992,7 @@ <message> <location filename="../src/welcome-wizard.cc" line="+135"/> <source>Welcome to GNU Octave</source> - <translation>Willkommen zu GNU Octave</translation> + <translation>Willkommen bei GNU Octave</translation> </message> </context> <context> @@ -2010,7 +2044,7 @@ <message> <location line="+1"/> <source>View the variables in the active workspace.</source> - <translation>Sehen Sie die Variablen ein, die sich in der aktiven Arbeitsumgebung befinden.</translation> + <translation>Variablen einsehen, die sich in der aktiven Arbeitsumgebung befinden.</translation> </message> <message> <location line="+76"/>
new file mode 100644 index 0000000000000000000000000000000000000000..b67c262253f2e654074260acf95385e982342bcd GIT binary patch literal 9768 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 CZK;d^
--- a/libgui/src/main-window.cc +++ b/libgui/src/main-window.cc @@ -1150,6 +1150,8 @@ construct_tool_bar (); + construct_warning_bar (); + connect (qApp, SIGNAL (aboutToQuit ()), this, SLOT (prepare_to_exit ())); @@ -1771,6 +1773,167 @@ } void +main_window::construct_warning_bar (void) +{ + QSettings *settings = resource_manager::get_settings (); + + if (settings + && settings->value ("General/hide_new_gui_warning", false).toBool ()) + { + construct_gui_info_button (); + + return; + } + + _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 + = QIcon::fromTheme ("dialog-warning", + QIcon (":/actions/icons/warning.png")); + QPixmap icon_pixmap = warning_icon.pixmap (QSize (32, 32)); + icon->setPixmap (icon_pixmap); + + QTextBrowser *msg = new QTextBrowser (box); + msg->setOpenExternalLinks (true); + msg->setText + (tr ("<strong>You are using a release candidate of Octave's experimental GUI.</strong> " + "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 <a href=\"http://octave.org\">http://octave.org</a>.")); + + msg->setStyleSheet ("background-color: #ffd97f; color: black; margin 4px;"); + msg->setMinimumWidth (100); + 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); + box->setMaximumWidth (1000); + box->adjustSize (); + box->setLayout (icon_and_message); + + _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::construct_gui_info_button (void) +{ + QIcon warning_icon + = QIcon::fromTheme ("dialog-warning", + QIcon (":/actions/icons/warning.png")); + + _gui_info_button + = new QPushButton (warning_icon, tr ("Experimental GUI Info")); + + _main_tool_bar->addWidget (_gui_info_button); + + connect (_gui_info_button, SIGNAL (clicked ()), + this, SLOT (show_gui_info ())); +} + +void +main_window::hide_warning_bar (void) +{ + QSettings *settings = resource_manager::get_settings (); + + if (settings) + { + settings->setValue ("General/hide_new_gui_warning", true); + + settings->sync (); + } + + removeDockWidget (_warning_bar); + + construct_gui_info_button (); +} + +void +main_window::show_gui_info (void) +{ + QString gui_info + (tr ("<p><strong>A Note about Octave's New GUI</strong></p>" + "<p>One of the biggest new features for Octave 3.8 is a graphical " + "user interface. It is the one thing that users have requested " + "most often over the last few years and now it is almost ready. " + "But because it is not quite as polished as we would like, we " + "have decided to wait until the 4.0.x release series before " + "making the GUI the default interface.</p>" + "<p>Given the length of time and the number of bug fixes and " + "improvements since the last major release Octave, we also " + "decided against delaying the release of all these new " + "improvements any longer just to perfect the GUI. So please " + "enjoy the 3.8 release of Octave and the preview of the new GUI. " + "We beleive it is working reasonably well, but we also know that " + "there are some obvious rough spots and many things that could be " + "improved.</p>" + "<p><strong>We Need Your Help</strong></p>" + "<p>There are many ways that you can help us fix the remaining " + "problems, complete the GUI, and improve the overall user " + "experience for both novices and experts alike (links will open " + "an external browser):</p>" + "<p><ul><li>If you are a skilled software developer, you can " + "help by contributing your time to help " + "<a href=\"http://octave.org/get-involved.html\">develop " + "Octave</a>.</li>" + "<li>If Octave does not work properly, you are encouraged to " + "<a href=\"http://octave.org/bugs.html\">report problems </a> " + "that you find.</li>" + "<li>Whether you are a user or developer, you can " + "<a href=\"http://octave.org/donate.html\">help to fund the " + "project</a>. " + "Octave development takes a lot of time and expertise. " + "Your contributions help to ensure that Octave will continue " + "to improve.</li></ul></p>" + "<p>We hope you find Octave to be useful. Please help us make " + "it even better for the future!</p>")); + + 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");
--- a/libgui/src/main-window.h +++ b/libgui/src/main-window.h @@ -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); @@ -222,6 +225,9 @@ void construct_news_menu (QMenuBar *p); + void construct_warning_bar (void); + void construct_gui_info_button (void); + void construct_tool_bar (void); void establish_octave_link (void); @@ -293,6 +299,9 @@ QToolBar *_main_tool_bar; + QDockWidget *_warning_bar; + QPushButton *_gui_info_button; + QMenu *_debug_menu; QAction *_debug_continue;
--- a/libgui/src/module.mk +++ b/libgui/src/module.mk @@ -67,6 +67,7 @@ src/icons/terminal.png \ src/icons/undo.png \ src/icons/up.png \ + src/icons/warning.png \ src/icons/widget-close.png \ src/icons/widget-dock.png \ src/icons/widget-undock.png \
--- a/libgui/src/octave-gui.cc +++ b/libgui/src/octave-gui.cc @@ -127,28 +127,35 @@ if (start_gui) { QApplication application (argc, argv); + QTranslator gui_tr, qt_tr, qsci_tr; - // Set the codec for all strings + // Set the codec for all strings (before wizard) QTextCodec::setCodecForCStrings (QTextCodec::codecForName ("UTF-8")); + // show wizard if this is the first run if (resource_manager::is_first_run ()) { + resource_manager::config_translators (&qt_tr, &qsci_tr, &gui_tr); // before wizard + application.installTranslator (&qt_tr); + application.installTranslator (&qsci_tr); + application.installTranslator (&gui_tr); + welcome_wizard welcomeWizard; if (welcomeWizard.exec () == QDialog::Rejected) exit (1); - } - - resource_manager::reload_settings (); - // install translators for the gui and qt text - QTranslator gui_tr, qt_tr, qsci_tr; + resource_manager::reload_settings (); // install settings file + } + else + { + resource_manager::reload_settings (); // get settings file - resource_manager::config_translators (&qt_tr, &qsci_tr, &gui_tr); - - application.installTranslator (&qt_tr); - application.installTranslator (&qsci_tr); - application.installTranslator (&gui_tr); + resource_manager::config_translators (&qt_tr, &qsci_tr, &gui_tr); // after settings + application.installTranslator (&qt_tr); + application.installTranslator (&qsci_tr); + application.installTranslator (&gui_tr); + } // update network-settings resource_manager::update_network_settings ();
--- a/libgui/src/resource-manager.cc +++ b/libgui/src/resource-manager.cc @@ -100,35 +100,33 @@ QString qt_trans_dir = QLibraryInfo::location (QLibraryInfo::TranslationsPath); + QString language = "SYSTEM"; // take system language per default + QSettings *settings = resource_manager::get_settings (); if (settings) { - // get the locale from the settings - QString language = settings->value ("language","SYSTEM").toString (); - - if (language == "SYSTEM") - language = QLocale::system ().name (); // get system wide locale + // get the locale from the settings if already available + language = settings->value ("language","SYSTEM").toString (); + } - // load the translator file for qt strings - loaded = qt_tr->load ("qt_" + language, qt_trans_dir); + if (language == "SYSTEM") + language = QLocale::system ().name (); // get system wide locale - if (!loaded) // try lower case - qt_tr->load ("qt_" + language.toLower (), qt_trans_dir); + // load the translator file for qt strings + loaded = qt_tr->load ("qt_" + language, qt_trans_dir); - // load the translator file for qscintilla settings - loaded = qsci_tr->load ("qscintilla_" + language, qt_trans_dir); + if (!loaded) // try lower case + qt_tr->load ("qt_" + language.toLower (), qt_trans_dir); - if (!loaded) // try lower case - qsci_tr->load ("qscintilla_" + language.toLower (), qt_trans_dir); + // load the translator file for qscintilla settings + loaded = qsci_tr->load ("qscintilla_" + language, qt_trans_dir); - // load the translator file for gui strings - gui_tr->load (language, get_gui_translation_dir ()); - } - else - { - // FIXME: Is this an error? If so, what should we do? - } + if (!loaded) // try lower case + qsci_tr->load ("qscintilla_" + language.toLower (), qt_trans_dir); + + // load the translator file for gui strings + gui_tr->load (language, get_gui_translation_dir ()); } bool
--- a/libgui/src/resource.qrc +++ b/libgui/src/resource.qrc @@ -63,6 +63,7 @@ <file>icons/graphic_logo_WorkspaceView.png</file> <file>icons/graphic_logo_DocumentationDockWidget.png</file> <file>icons/graphic_logo_ReleaseWidget.png</file> + <file>icons/warning.png</file> <file>icons/widget-close.png</file> <file>icons/widget-dock.png</file> <file>icons/widget-undock.png</file>
--- a/libinterp/corefcn/syscalls.cc +++ b/libinterp/corefcn/syscalls.cc @@ -378,53 +378,71 @@ } /* -%!test -%! unix_sort = true; -%! cmd = {"sort", "-r"}; -%! if (ispc ()) -%! status = system ("sort /? 2>NUL 1>NUL"); -%! if (status == 0) -%! unix_sort = false; -%! cmd = {"sort", "/R"}; -%! endif -%! endif -%! [in, out, pid] = popen2 (cmd{:}); -%! if (isunix ()) + +%!test # UNIX-style test +%! if (isunix () || ismac ()) +%! [in, out, pid] = popen2 ("sort", "-r"); %! EAGAIN = errno ("EAGAIN"); -%! else -%! EAGAIN = errno ("EINVAL"); -%! endif -%! fputs (in, "these\nare\nsome\nstrings\n"); -%! fclose (in); -%! done = false; -%! str = {}; -%! idx = 0; -%! errs = 0; -%! do -%! if (! isunix ()) -%! errno (0); -%! endif -%! s = fgets (out); -%! if (ischar (s)) -%! idx++; -%! str{idx} = s; -%! elseif (errno () == EAGAIN) -%! fclear (out); -%! sleep (0.1); -%! if (++errs == 100) +%! fputs (in, "these\nare\nsome\nstrings\n"); +%! fclose (in); +%! done = false; +%! str = {}; +%! idx = 0; +%! errs = 0; +%! do +%! if (ismac ()) # FIXME: Is this necessary? +%! errno (0); +%! endif +%! s = fgets (out); +%! if (ischar (s)) +%! idx++; +%! str{idx} = s; +%! elseif (errno () == EAGAIN) +%! fclear (out); +%! sleep (0.1); +%! if (++errs == 100) +%! done = true; +%! endif +%! else %! done = true; %! endif -%! else -%! done = true; -%! endif -%! until (done) -%! fclose (out); -%! waitpid (pid); -%! if (unix_sort) +%! until (done) +%! fclose (out); +%! waitpid (pid); %! assert (str, {"these\n","strings\n","some\n","are\n"}); -%! else +%! endif + +%!test # Windows-style test +%! if (ispc () && ! isunix ()) +%! [in, out, pid] = popen2 ('C:\Windows\system32\sort.exe', "/R"); +%! EAGAIN = errno ("EINVAL"); +%! fputs (in, "these\r\nare\r\nsome\r\nstrings\r\n"); +%! fclose (in); +%! done = false; +%! str = {}; +%! idx = 0; +%! errs = 0; +%! do +%! errno (0); +%! s = fgets (out); +%! if (ischar (s)) +%! idx++; +%! str{idx} = s; +%! elseif (errno () == EAGAIN) +%! fclear (out); +%! sleep (0.1); +%! if (++errs == 100) +%! done = true; +%! endif +%! else +%! done = true; +%! endif +%! until (done) +%! fclose (out); +%! waitpid (pid); %! assert (str, {"these\r\n","strings\r\n","some\r\n","are\r\n"}); %! endif + */ DEFUNX ("fcntl", Ffcntl, args, ,
--- a/scripts/testfun/__run_test_suite__.m +++ b/scripts/testfun/__run_test_suite__.m @@ -28,7 +28,7 @@ fixedtestdir = fullfile (testsdir, "fixed"); fcnfiledir = octave_config_info ("fcnfiledir"); if (nargin == 0) - fcndirs = { libinterptestdir, liboctavetestdir, fcnfiledir }; + fcndirs = { liboctavetestdir, libinterptestdir, fcnfiledir }; fixedtestdirs = { fixedtestdir }; endif global files_with_no_tests = {};
--- a/src/octave-config.in.cc +++ b/src/octave-config.in.cc @@ -51,25 +51,25 @@ " expects to find locally installed .oct files.\n" "\n" " -p VAR, --print VAR Print the value of the given configuration\n" -" variable VAR. Recognized variables are:\n" +" variable VAR. Recognized variables are:\n" "\n" -" API_VERSION LOCALAPIARCHLIBDIR\n" -" CANONICAL_HOST_TYPE LOCALAPIFCNFILEDIR\n" -" DEFAULT_PAGER LOCALAPIOCTFILEDIR\n" -" ARCHLIBDIR LOCALARCHLIBDIR\n" -" BINDIR LOCALFCNFILEDIR\n" -" DATADIR LOCALOCTFILEDIR\n" -" DATAROOTDIR LOCALSTARTUPFILEDIR\n" -" EXEC_PREFIX LOCALVERARCHLIBDIR\n" -" FCNFILEDIR LOCALVERFCNFILEDIR\n" -" LOCALVEROCTFILEDIR MAN1DIR\n" -" IMAGEDIR MANDIR\n" -" MAN1EXT OCTFILEDIR\n" -" INCLUDEDIR OCTINCLUDEDIR\n" -" INFODIR OCTLIBDIR\n" -" INFOFILE PREFIX\n" -" LIBDIR STARTUPFILEDIR\n" -" LIBEXECDIR VERSION\n" +" API_VERSION LOCALAPIARCHLIBDIR\n" +" CANONICAL_HOST_TYPE LOCALAPIFCNFILEDIR\n" +" DEFAULT_PAGER LOCALAPIOCTFILEDIR\n" +" ARCHLIBDIR LOCALARCHLIBDIR\n" +" BINDIR LOCALFCNFILEDIR\n" +" DATADIR LOCALOCTFILEDIR\n" +" DATAROOTDIR LOCALSTARTUPFILEDIR\n" +" EXEC_PREFIX LOCALVERARCHLIBDIR\n" +" FCNFILEDIR LOCALVERFCNFILEDIR\n" +" LOCALVEROCTFILEDIR MAN1DIR\n" +" IMAGEDIR MANDIR\n" +" MAN1EXT OCTFILEDIR\n" +" INCLUDEDIR OCTINCLUDEDIR\n" +" INFODIR OCTLIBDIR\n" +" INFOFILE PREFIX\n" +" LIBDIR STARTUPFILEDIR\n" +" LIBEXECDIR VERSION\n" "\n" " -v, --version Print the Octave version number.\n" "\n";
--- a/src/octave-config.in.sh +++ b/src/octave-config.in.sh @@ -117,7 +117,7 @@ expects to find locally installed .oct files. -p VAR, --print VAR Print the value of the given configuration - variable VAR. Recognized variables are: + variable VAR. Recognized variables are: API_VERSION LOCALAPIOCTFILEDIR ARCHLIBDIR LOCALARCHLIBDIR
--- a/test/fntests.m +++ b/test/fntests.m @@ -43,12 +43,12 @@ testdirs = {currdir, srcdir}; endif +liboctave_tree = canonicalize_file_name (fullfile (topbuilddir, "liboctave")); src_tree = canonicalize_file_name (fullfile (topbuilddir, "libinterp")); -liboctave_tree = canonicalize_file_name (fullfile (topbuilddir, "liboctave")); script_tree = canonicalize_file_name (fullfile (topsrcdir, "scripts")); local_script_tree = canonicalize_file_name (fullfile (currdir, "../scripts")); -fundirs = {src_tree, liboctave_tree, script_tree}; +fundirs = {liboctave_tree, src_tree, script_tree}; if (! strcmp (currdir, srcdir)) fundirs{end+1} = local_script_tree;