changeset 18042:4502d6d577d5 classdef

maint: Periodic merge of default to classdef
author John W. Eaton <jwe@octave.org>
date Sat, 30 Nov 2013 12:39:54 -0500
parents 6762a6d23010 (current diff) 132667955f66 (diff)
children 39edc0fccf58
files scripts/general/isa.m
diffstat 18 files changed, 519 insertions(+), 280 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>&amp;%1 %2</translation>
     </message>
     <message>
-        <location line="+174"/>
+        <location line="+175"/>
         <source>&amp;New File</source>
         <translation>&amp;Neue Datei</translation>
     </message>
@@ -309,7 +309,7 @@
         <translation>&amp;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&amp;to Line</source>
         <translation>&amp;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 &apos;%1&apos; 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 &lt;a href=&quot;http://octave.org/support.html&quot;&gt;http://octave.org/support.html&lt;/a&gt; (opens in external browser).&lt;/p&gt;
 &lt;/body&gt;&lt;/html&gt;</source>
         <translation>&lt;html&gt;&lt;body&gt;
-&lt;p&gt;Wir hoffen dass Du Octave nützlich findest.&lt;/p&gt;
-&lt;p&gt;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
+&lt;p&gt;Wir hoffen, dass Du Octave nützlich findest.&lt;/p&gt;
+&lt;p&gt;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 &lt;a href=&quot;http://octave.org/support.html&quot;&gt;http://octave.org/support.html&lt;/a&gt; (Wird im externen Browser geöffnet).&lt;/p&gt;
 &lt;/body&gt;&lt;/html&gt;</translation>
     </message>
@@ -734,9 +734,9 @@
 &lt;head/&gt;&lt;body&gt;
 &lt;p&gt;Für weitere Informationen über Octave:&lt;/p&gt;
 &lt;ul&gt;
-&lt;li&gt;Visit &lt;a href=&quot;http://octave.org&quot;&gt;http://octave.org&lt;/a&gt; (Öffnet im externen Browser)&lt;/li&gt;
-&lt;li&gt;Online Dokumentation &lt;a href=&quot;http://www.gnu.org/software/octave/doc/interpreter/index.html&quot;&gt;html&lt;/a&gt;- oder &lt;a href=&quot;http://www.gnu.org/software/octave/octave.pdf&quot;&gt;PDF&lt;/span&gt;&lt;/a&gt;Dokument (Öffnet im externen Browser)&lt;/li&gt;
-&lt;li&gt;Öffnet den Dokumentations-Browser von Octave GUI mit Hilfe-Menü&lt;/li&gt;
+&lt;li&gt;&lt;a href=&quot;http://octave.org&quot;&gt;http://octave.org&lt;/a&gt; (Öffnet im externen Browser)&lt;/li&gt;
+&lt;li&gt;Online Dokumentation &lt;a href=&quot;http://www.gnu.org/software/octave/doc/interpreter/index.html&quot;&gt;html&lt;/a&gt;- oder &lt;a href=&quot;http://www.gnu.org/software/octave/octave.pdf&quot;&gt;PDF&lt;/span&gt;&lt;/a&gt;-Dokument (Öffnet im externen Browser)&lt;/li&gt;
+&lt;li&gt;Benutze den Dokumentations-Browser von Octave GUI im Hilfe-Menü&lt;/li&gt;
 &lt;/ul&gt;
 &lt;/body&gt;&lt;/html&gt;</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 @@
 &lt;p&gt;The configuration file is stored in %1.  If that file exists, you will not see this dialog when Octave starts.&lt;/p&gt;
 &lt;/body&gt;&lt;/html&gt;</source>
         <translation>&lt;html&gt;&lt;body&gt;
-&lt;p&gt;Es scheint als ob die grafische Benutzerschnittstelle zum ersten Mal auf diesem Computer gestartet wurde.
-Klicke auf &apos;weiter&apos; um eine Konfigurationsdatei anzulegen und Octave zu starten.&lt;/p&gt;
+&lt;p&gt;Es scheint, dass die grafische Benutzerschnittstelle (GUI) zum ersten Mal auf diesem Computer gestartet wurde.
+Klicke auf &apos;Weiter&apos; um eine Konfigurationsdatei anzulegen und Octave zu starten.&lt;/p&gt;
 &lt;p&gt;Die Konfigurationsdatei wird in %1 gespeichert. Falls diese Datei existiert, wird dieser Dialog nicht mehr angezeigt.&lt;/p&gt;
 &lt;/body&gt;&lt;/html&gt;</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 &apos;%1&apos; is empty.</source>
         <translation>Die Datei &apos;%1&apos; 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>&lt;html&gt;
 &lt;body&gt;
 &lt;p&gt;
@@ -1392,7 +1392,18 @@
 &lt;/p&gt;
 &lt;p&gt;
 &lt;small&gt;&lt;em&gt;&amp;mdash; The Octave Developers, </source>
-        <translation type="unfinished"></translation>
+        <translation>&lt;html&gt;
+&lt;body&gt;
+&lt;p&gt;
+Die Neuigkeiten aus der Octave Community scheinen nicht erreichbar zu sein.
+&lt;/p&gt;
+&lt;p&gt;
+Für die aktuellsten Neuigkeiten besuche
+&lt;a href=&quot;http://octave.org/community-news.html&quot;&gt;http://octave.org/community-news.html&lt;/a&gt;
+sobald Du über eine Verbindung zum Internet verfügst (Link öffnet sich im externen Browser).
+&lt;/p&gt;
+&lt;p&gt;
+&lt;small&gt;&lt;em&gt;&amp;mdash; Die Entwickler von Octave,</translation>
     </message>
     <message>
         <location line="+18"/>
@@ -1409,7 +1420,19 @@
 &lt;/p&gt;
 &lt;p&gt;
 &lt;small&gt;&lt;em&gt;&amp;mdash; The Octave Developers, </source>
-        <translation type="unfinished"></translation>
+        <translation>&lt;html&gt;
+&lt;body&gt;
+&lt;p&gt;
+Die Verbindung zum Internet um aktuelle Neuigkeiten von der Octave Community anzuzeigen wurde deaktiviert.
+&lt;/p&gt;
+&lt;p&gt;
+Für aktuelle Neuigkeiten besuche
+&lt;a href=&quot;http://octave.org/community-news.html&quot;&gt;http://octave.org/community-news.html&lt;/a&gt;
+sobald Du über eine Verbindung zum Internet verfügst (Link öffnet sich im externen Browser)
+oder aktiviere die Internetverbindung in den Einstellungen unter Netzwerk.
+&lt;/p&gt;
+&lt;p&gt;
+&lt;small&gt;&lt;em&gt;&amp;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>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;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)&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
-        <translation type="unfinished"></translation>
+        <translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Auswahl von Schrift, Schriftgröße (als Differenz von der Standardgröße), Schriftstil (&lt;b&gt;f&lt;/b&gt;ett, &lt;b&gt;k&lt;/b&gt;ursiv, &lt;b&gt;u&lt;/b&gt;nterstrichen), Text- und Hintergrundfarbe (für den Hintergrund ist die Farbe Pink (255,0,255) ein Platzhalter für die Standardfarbe)&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</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 @@
 &lt;p&gt;You may also view the news by selecting the &quot;Community News&quot; item in the &quot;Help&quot; menu in the GUI, or by visiting
 &lt;a href=&quot;http://octave.org/community-news.html&quot;&gt;http://octave.org/community-news.html&lt;/a&gt;.&lt;/p&gt;
 &lt;/body&gt;&lt;/html&gt;</source>
-        <translation type="unfinished"></translation>
+        <translation>&lt;html&gt;&lt;body&gt;
+&lt;p&gt;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.&lt;/p&gt;
+&lt;p&gt;Du kannst dir die Neuigkeiten auch ansehen, indem Du den Punkt &quot;Neuigkeiten der Community&quot; im Menü auswählst oder folgende Internetseite besuchst:
+&lt;a href=&quot;http://octave.org/community-news.html&quot;&gt;http://octave.org/community-news.html&lt;/a&gt;.&lt;/p&gt;
+&lt;/body&gt;&lt;/html&gt;</translation>
     </message>
     <message>
         <location line="+26"/>
@@ -1929,7 +1957,13 @@
 &lt;head/&gt;&lt;body&gt;
 &lt;p&gt;Allow Octave to connect to the Octave web site when it starts to display current news and information about the Octave community.&lt;/p&gt;
 &lt;/body&gt;&lt;/html&gt;</source>
-        <translation type="unfinished"></translation>
+        <translation>&lt;html&gt;&lt;head&gt;
+&lt;style&gt;
+a:link { text-decoration: underline; color: #0000ff; }
+&lt;/style&gt;
+&lt;head/&gt;&lt;body&gt;
+&lt;p&gt;Erlaube Octave beim Programmstart eine Verbindung zur Octave Webseite herzustellen um aktuelle Neuigkeiten und Informationen über Octave anzuzeigen.&lt;/p&gt;
+&lt;/body&gt;&lt;/html&gt;</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 e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..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/libinterp/octave-value/ov-class.cc
+++ b/libinterp/octave-value/ov-class.cc
@@ -2016,33 +2016,113 @@
 %!error class ()
 */
 
-DEFUN (__isa_parent__, args, ,
+DEFUN (isa, args, ,
        "-*- texinfo -*-\n\
-@deftypefn {Built-in Function} {} __isa_parent__ (@var{class}, @var{name})\n\
-Undocumented internal function.\n\
+@deftypefn {Function File} {} isa (@var{obj}, @var{classname})\n\
+Return true if @var{obj} is an object from the class @var{classname}.\n\
+\n\
+@var{classname} may also be one of the following class categories:\n\
+\n\
+@table @asis\n\
+@item @qcode{\"float\"}\n\
+Floating point value comprising classes @qcode{\"double\"} and\n\
+@qcode{\"single\"}.\n\
+\n\
+@item @qcode{\"integer\"}\n\
+Integer value comprising classes (u)int8, (u)int16, (u)int32, (u)int64.\n\
+\n\
+@item @qcode{\"numeric\"}\n\
+Numeric value comprising either a floating point or integer value.\n\
+@end table\n\
+\n\
+If @var{classname} is a cell array of string, a logical array of the same\n\
+size is returned, containing true for each class to which @var{obj}\n\
+belongs to.\n\
+\n\
+@seealso{class, typeinfo}\n\
 @end deftypefn")
 {
-  octave_value retval = false;
-
-  if (args.length () == 2)
+  octave_value retval;
+
+  if (args.length () != 2)
+    {
+      print_usage ();
+      return retval;
+    }
+
+  octave_value obj = args(0); // not const because of find_parent_class ()
+  const Array<std::string> cls = args(1).cellstr_value ();
+  if (error_state)
+    {
+      error ("isa: CLASSNAME must be a string or cell attay of strings");
+      return retval;
+    }
+
+  boolNDArray matches (cls.dims (), false);
+  const octave_idx_type n = cls.numel ();
+  for (octave_idx_type idx = 0; idx < n; idx++)
     {
-      octave_value cls = args(0);
-      octave_value nm = args(1);
-
-      if (! error_state)
-        {
-          if (cls.find_parent_class (nm.string_value ()))
-            retval = true;
-        }
-      else
-        error ("__isa_parent__: expecting arguments to be character strings");
+      const std::string cl = cls(idx);
+      if ((cl == "float"   && obj.is_float_type   ()) ||
+          (cl == "integer" && obj.is_integer_type ()) ||
+          (cl == "numeric" && obj.is_numeric_type ()) ||
+          obj.class_name () == cl || obj.find_parent_class (cl))
+        matches(idx) = true;
     }
-  else
-    print_usage ();
-
-  return retval;
+  return octave_value (matches);
 }
 
+/*
+%!assert (isa ("char", "float"), false)
+%!assert (isa (logical (1), "float"), false)
+%!assert (isa (double (13), "float"), true)
+%!assert (isa (single (13), "float"), true)
+%!assert (isa (int8 (13), "float"), false)
+%!assert (isa (int16 (13), "float"), false)
+%!assert (isa (int32 (13), "float"), false)
+%!assert (isa (int64 (13), "float"), false)
+%!assert (isa (uint8 (13), "float"), false)
+%!assert (isa (uint16 (13), "float"), false)
+%!assert (isa (uint32 (13), "float"), false)
+%!assert (isa (uint64 (13), "float"), false)
+%!assert (isa ("char", "numeric"), false)
+%!assert (isa (logical (1), "numeric"), false)
+%!assert (isa (double (13), "numeric"), true)
+%!assert (isa (single (13), "numeric"), true)
+%!assert (isa (int8 (13), "numeric"), true)
+%!assert (isa (int16 (13), "numeric"), true)
+%!assert (isa (int32 (13), "numeric"), true)
+%!assert (isa (int64 (13), "numeric"), true)
+%!assert (isa (uint8 (13), "numeric"), true)
+%!assert (isa (uint16 (13), "numeric"), true)
+%!assert (isa (uint32 (13), "numeric"), true)
+%!assert (isa (uint64 (13), "numeric"), true)
+%!assert (isa (uint8 (13), "integer"), true)
+%!assert (isa (double (13), "integer"), false)
+%!assert (isa (single (13), "integer"), false)
+%!assert (isa (single (13), {"integer", "float", "single"}), [false true true])
+
+%!assert (isa (double (13), "double"))
+%!assert (isa (single (13), "single"))
+%!assert (isa (int8 (13), "int8"))
+%!assert (isa (int16 (13), "int16"))
+%!assert (isa (int32 (13), "int32"))
+%!assert (isa (int64 (13), "int64"))
+%!assert (isa (uint8 (13), "uint8"))
+%!assert (isa (uint16 (13), "uint16"))
+%!assert (isa (uint32 (13), "uint32"))
+%!assert (isa (uint64 (13), "uint64"))
+%!assert (isa ("string", "char"))
+%!assert (isa (true, "logical"))
+%!assert (isa (false, "logical"))
+%!assert (isa ({1, 2}, "cell"))
+%!assert (isa ({1, 2}, {"numeric", "integer", "cell"}), [false false true])
+
+%!test
+%! a.b = 1;
+%! assert (isa (a, "struct"));
+*/
+
 DEFUN (__parent_classes__, args, ,
        "-*- texinfo -*-\n\
 @deftypefn {Built-in Function} {} __parent_classes__ (@var{x})\n\
deleted file mode 100644
--- a/scripts/general/isa.m
+++ /dev/null
@@ -1,110 +0,0 @@
-## Copyright (C) 2004-2013 John W. Eaton
-##
-## This file is part of Octave.
-##
-## Octave 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.
-##
-## Octave 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 Octave; see the file COPYING.  If not, see
-## <http://www.gnu.org/licenses/>.
-
-## -*- texinfo -*-
-## @deftypefn {Function File} {} isa (@var{obj}, @var{classname})
-## Return true if @var{obj} is an object from the class @var{classname}.
-##
-## @var{classname} may also be one of the following class categories: 
-##
-## @table @asis
-## @item @qcode{"float"}
-## Floating point value comprising classes @qcode{"double"} and
-## @qcode{"single"}.
-##
-## @item @qcode{"integer"}
-## Integer value comprising classes (u)int8, (u)int16, (u)int32, (u)int64.
-##
-## @item @qcode{"numeric"}
-## Numeric value comprising either a floating point or integer value.
-## @end table
-## @seealso{class, typeinfo}
-## @end deftypefn
-
-## Author: Paul Kienzle <pkienzle@users.sf.net>
-## Adapted-by: jwe
-
-function retval = isa (obj, classname)
-
-  if (nargin != 2)
-    print_usage ();
-  endif
-
-  if (strcmp (classname, "float"))
-    retval = isfloat (obj);
-  elseif (strcmp (classname, "integer"))
-    retval = isinteger (obj);
-  elseif (strcmp (classname, "numeric"))
-    retval = isnumeric (obj);
-  else
-    class_of_obj = class (obj);
-    retval = strcmp (class_of_obj, classname);
-    if (! retval && isobject (obj))
-      retval = __isa_parent__ (obj, classname);
-    endif
-  endif
-
-endfunction
-
-
-%!assert (isa ("char", "float"), false)
-%!assert (isa (logical (1), "float"), false)
-%!assert (isa (double (13), "float"), true)
-%!assert (isa (single (13), "float"), true)
-%!assert (isa (int8 (13), "float"), false)
-%!assert (isa (int16 (13), "float"), false)
-%!assert (isa (int32 (13), "float"), false)
-%!assert (isa (int64 (13), "float"), false)
-%!assert (isa (uint8 (13), "float"), false)
-%!assert (isa (uint16 (13), "float"), false)
-%!assert (isa (uint32 (13), "float"), false)
-%!assert (isa (uint64 (13), "float"), false)
-%!assert (isa ("char", "numeric"), false)
-%!assert (isa (logical (1), "numeric"), false)
-%!assert (isa (double (13), "numeric"), true)
-%!assert (isa (single (13), "numeric"), true)
-%!assert (isa (int8 (13), "numeric"), true)
-%!assert (isa (int16 (13), "numeric"), true)
-%!assert (isa (int32 (13), "numeric"), true)
-%!assert (isa (int64 (13), "numeric"), true)
-%!assert (isa (uint8 (13), "numeric"), true)
-%!assert (isa (uint16 (13), "numeric"), true)
-%!assert (isa (uint32 (13), "numeric"), true)
-%!assert (isa (uint64 (13), "numeric"), true)
-%!assert (isa (uint8 (13), "integer"), true)
-%!assert (isa (double (13), "integer"), false)
-%!assert (isa (single (13), "integer"), false)
-
-%!assert (isa (double (13), "double"))
-%!assert (isa (single (13), "single"))
-%!assert (isa (int8 (13), "int8"))
-%!assert (isa (int16 (13), "int16"))
-%!assert (isa (int32 (13), "int32"))
-%!assert (isa (int64 (13), "int64"))
-%!assert (isa (uint8 (13), "uint8"))
-%!assert (isa (uint16 (13), "uint16"))
-%!assert (isa (uint32 (13), "uint32"))
-%!assert (isa (uint64 (13), "uint64"))
-%!assert (isa ("string", "char"))
-%!assert (isa (true, "logical"))
-%!assert (isa (false, "logical"))
-%!assert (isa ({1, 2}, "cell"))
-%!test
-%! a.b = 1;
-%! assert (isa (a, "struct"));
-
--- a/scripts/general/module.mk
+++ b/scripts/general/module.mk
@@ -40,7 +40,6 @@
   general/interp3.m \
   general/interpn.m \
   general/interpft.m \
-  general/isa.m \
   general/iscolumn.m \
   general/isdir.m \
   general/isequal.m \
--- 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;