changeset 15196:017f0b2e6933

rename gui directory to libgu * libgui: Rename from gui. * .hgsub (libgui/qterminal): Rename from gui/qterminal. * Makefile.am (GUIDIR): Set to libgui instead of gui if AMCOND_BUILD_GUI is true. * configure.ac (AC_CONFIG_FILES): Update list for directory renaming. * Makefile.am (.NOTPARALLEL): Delete. List octave.html/index.html as the primary HTML target, not octave.html. (octave.html): New target for making the octave.html directory. (octave.pdf): Depend on octave.dvi. * images.awk: In generated rules for png files, depend on octave.html, not octave.html/index.html. * src/Makefile.am (OCTAVE_GUI_CPPFLAGS, OCTAVE_GUI_LIBS): Update for directory renaming. (CLEANFILES): Fix typo. * fntests.m (src_tree): Use libinterp, not src.
author John W. Eaton <jwe@octave.org>
date Sat, 18 Aug 2012 18:10:09 -0400
parents 2fc554ffbc28
children 0c0f4eef30f4
files .hgsub .hgsubstate Makefile.am configure.ac doc/interpreter/Makefile.am doc/interpreter/images.awk gui/Makefile.am gui/default-qt-settings gui/gui.pro gui/kb-layouts/default.keytab gui/kb-layouts/linux.keytab gui/kb-layouts/vt420pc.keytab gui/languages/de-de.qm gui/languages/de-de.ts gui/languages/es-es.qm gui/languages/es-es.ts gui/languages/generic.qm gui/languages/generic.ts gui/languages/pt-br.qm gui/languages/pt-br.ts gui/languages/ru-ru.qm gui/languages/ru-ru.ts gui/languages/translators gui/languages/uk-ua.qm gui/languages/uk-ua.ts gui/src/Makefile.am gui/src/documentation-dockwidget.cc gui/src/documentation-dockwidget.h gui/src/files-dockwidget.cc gui/src/files-dockwidget.h gui/src/history-dockwidget.cc gui/src/history-dockwidget.h gui/src/icons/arrow_right.png gui/src/icons/artsbuilderexecute.png gui/src/icons/bookmark.png gui/src/icons/bp_next.png gui/src/icons/bp_prev.png gui/src/icons/bp_rm_all.png gui/src/icons/bp_toggle.png gui/src/icons/chat.png gui/src/icons/configure.png gui/src/icons/db_cont.png gui/src/icons/db_step.png gui/src/icons/db_step_in.png gui/src/icons/db_step_out.png gui/src/icons/db_stop.png gui/src/icons/editcopy.png gui/src/icons/editcut.png gui/src/icons/editpaste.png gui/src/icons/filenew.png gui/src/icons/fileopen.png gui/src/icons/filesave.png gui/src/icons/filesaveas.png gui/src/icons/find.png gui/src/icons/help_index.png gui/src/icons/icons_license gui/src/icons/jabber_protocol.png gui/src/icons/logo.png gui/src/icons/question.png gui/src/icons/redled.png gui/src/icons/redo.png gui/src/icons/search.png gui/src/icons/star.png gui/src/icons/stop.png gui/src/icons/terminal.png gui/src/icons/undo.png gui/src/icons/up.png gui/src/icons/zoom-in.png gui/src/icons/zoom-out.png gui/src/m-editor/file-editor-interface.h gui/src/m-editor/file-editor-tab.cc gui/src/m-editor/file-editor-tab.h gui/src/m-editor/file-editor.cc gui/src/m-editor/file-editor.h gui/src/m-editor/find-dialog.cc gui/src/m-editor/find-dialog.h gui/src/m-editor/lexer-octave-gui.cc gui/src/m-editor/lexer-octave-gui.h gui/src/main-window.cc gui/src/main-window.h gui/src/msvc-debug.pri gui/src/msvc.pri gui/src/octave-adapter/octave-event-listener.h gui/src/octave-adapter/octave-event-observer.h gui/src/octave-adapter/octave-event.cc gui/src/octave-adapter/octave-event.h gui/src/octave-adapter/octave-link.cc gui/src/octave-adapter/octave-link.h gui/src/octave-adapter/octave-main-thread.cc gui/src/octave-adapter/octave-main-thread.h gui/src/octave-gui.cc gui/src/octave-gui.h gui/src/octave-qt-event-listener.cc gui/src/octave-qt-event-listener.h gui/src/qtinfo/parser.cc gui/src/qtinfo/parser.h gui/src/qtinfo/webinfo.cc gui/src/qtinfo/webinfo.h gui/src/resource-manager.cc gui/src/resource-manager.h gui/src/resource.qrc gui/src/settings-dialog.cc gui/src/settings-dialog.h gui/src/settings-dialog.ui gui/src/src.pro gui/src/symbol-information.cc gui/src/symbol-information.h gui/src/terminal-dockwidget.cc gui/src/terminal-dockwidget.h gui/src/welcome-wizard.cc gui/src/welcome-wizard.h gui/src/welcome-wizard.ui gui/src/workspace-model.cc gui/src/workspace-model.h gui/src/workspace-view.cc gui/src/workspace-view.h libgui/Makefile.am libgui/default-qt-settings libgui/gui.pro libgui/kb-layouts/default.keytab libgui/kb-layouts/linux.keytab libgui/kb-layouts/vt420pc.keytab libgui/languages/de-de.qm libgui/languages/de-de.ts libgui/languages/es-es.qm libgui/languages/es-es.ts libgui/languages/generic.qm libgui/languages/generic.ts libgui/languages/pt-br.qm libgui/languages/pt-br.ts libgui/languages/ru-ru.qm libgui/languages/ru-ru.ts libgui/languages/translators libgui/languages/uk-ua.qm libgui/languages/uk-ua.ts libgui/src/Makefile.am libgui/src/documentation-dockwidget.cc libgui/src/documentation-dockwidget.h libgui/src/files-dockwidget.cc libgui/src/files-dockwidget.h libgui/src/history-dockwidget.cc libgui/src/history-dockwidget.h libgui/src/icons/arrow_right.png libgui/src/icons/artsbuilderexecute.png libgui/src/icons/bookmark.png libgui/src/icons/bp_next.png libgui/src/icons/bp_prev.png libgui/src/icons/bp_rm_all.png libgui/src/icons/bp_toggle.png libgui/src/icons/chat.png libgui/src/icons/configure.png libgui/src/icons/db_cont.png libgui/src/icons/db_step.png libgui/src/icons/db_step_in.png libgui/src/icons/db_step_out.png libgui/src/icons/db_stop.png libgui/src/icons/editcopy.png libgui/src/icons/editcut.png libgui/src/icons/editpaste.png libgui/src/icons/filenew.png libgui/src/icons/fileopen.png libgui/src/icons/filesave.png libgui/src/icons/filesaveas.png libgui/src/icons/find.png libgui/src/icons/help_index.png libgui/src/icons/icons_license libgui/src/icons/jabber_protocol.png libgui/src/icons/logo.png libgui/src/icons/question.png libgui/src/icons/redled.png libgui/src/icons/redo.png libgui/src/icons/search.png libgui/src/icons/star.png libgui/src/icons/stop.png libgui/src/icons/terminal.png libgui/src/icons/undo.png libgui/src/icons/up.png libgui/src/icons/zoom-in.png libgui/src/icons/zoom-out.png libgui/src/m-editor/file-editor-interface.h libgui/src/m-editor/file-editor-tab.cc libgui/src/m-editor/file-editor-tab.h libgui/src/m-editor/file-editor.cc libgui/src/m-editor/file-editor.h libgui/src/m-editor/find-dialog.cc libgui/src/m-editor/find-dialog.h libgui/src/m-editor/lexer-octave-gui.cc libgui/src/m-editor/lexer-octave-gui.h libgui/src/main-window.cc libgui/src/main-window.h libgui/src/msvc-debug.pri libgui/src/msvc.pri libgui/src/octave-adapter/octave-event-listener.h libgui/src/octave-adapter/octave-event-observer.h libgui/src/octave-adapter/octave-event.cc libgui/src/octave-adapter/octave-event.h libgui/src/octave-adapter/octave-link.cc libgui/src/octave-adapter/octave-link.h libgui/src/octave-adapter/octave-main-thread.cc libgui/src/octave-adapter/octave-main-thread.h libgui/src/octave-gui.cc libgui/src/octave-gui.h libgui/src/octave-qt-event-listener.cc libgui/src/octave-qt-event-listener.h libgui/src/qtinfo/parser.cc libgui/src/qtinfo/parser.h libgui/src/qtinfo/webinfo.cc libgui/src/qtinfo/webinfo.h libgui/src/resource-manager.cc libgui/src/resource-manager.h libgui/src/resource.qrc libgui/src/settings-dialog.cc libgui/src/settings-dialog.h libgui/src/settings-dialog.ui libgui/src/src.pro libgui/src/symbol-information.cc libgui/src/symbol-information.h libgui/src/terminal-dockwidget.cc libgui/src/terminal-dockwidget.h libgui/src/welcome-wizard.cc libgui/src/welcome-wizard.h libgui/src/welcome-wizard.ui libgui/src/workspace-model.cc libgui/src/workspace-model.h libgui/src/workspace-view.cc libgui/src/workspace-view.h src/Makefile.am test/fntests.m
diffstat 228 files changed, 14752 insertions(+), 14744 deletions(-) [+]
line wrap: on
line diff
--- a/.hgsub	Sat Aug 18 16:23:39 2012 -0400
+++ b/.hgsub	Sat Aug 18 18:10:09 2012 -0400
@@ -1,2 +1,2 @@
 gnulib = [git]git://git.sv.gnu.org/gnulib
-gui/qterminal = [git]https://code.google.com/p/qterminal/
+libgui/qterminal = [git]https://code.google.com/p/qterminal/
--- a/.hgsubstate	Sat Aug 18 16:23:39 2012 -0400
+++ b/.hgsubstate	Sat Aug 18 18:10:09 2012 -0400
@@ -1,2 +1,2 @@
 0e3af50c9e20938bd1cea0182bf749ce61cb6782 gnulib
-0f7cc1d7ef5c34b146ff71207ada3ec87a24097c gui/qterminal
+0f7cc1d7ef5c34b146ff71207ada3ec87a24097c libgui/qterminal
--- a/Makefile.am	Sat Aug 18 16:23:39 2012 -0400
+++ b/Makefile.am	Sat Aug 18 18:10:09 2012 -0400
@@ -68,7 +68,7 @@
 include m4/module.mk
 
 if AMCOND_BUILD_GUI
-GUIDIR = gui
+GUIDIR = libgui
 else
 GUIDIR =
 endif
--- a/configure.ac	Sat Aug 18 16:23:39 2012 -0400
+++ b/configure.ac	Sat Aug 18 18:10:09 2012 -0400
@@ -2396,11 +2396,11 @@
   doc/liboctave/Makefile
   doc/refcard/Makefile
   examples/Makefile
-  gui/Makefile
-  gui/src/Makefile
   libcruft/Makefile
   libcruft/mkf77def
   libgnu/Makefile
+  libgui/Makefile
+  libgui/src/Makefile
   libinterp/Makefile
   liboctave/Makefile
   scripts/Makefile
--- a/doc/interpreter/Makefile.am	Sat Aug 18 16:23:39 2012 -0400
+++ b/doc/interpreter/Makefile.am	Sat Aug 18 18:10:09 2012 -0400
@@ -22,7 +22,7 @@
 
 ## Automake generated rules for documentation are not parallel-safe.
 ## Restrict current directory to run serially
-.NOTPARALLEL:
+## .NOTPARALLEL:
 
 TEXINFO_TEX = ../texinfo.tex
 
@@ -159,16 +159,24 @@
   contributors.texi \
   $(MUNGED_TEXI_SRC)
 
-octave.info octave.dvi octave.html octave.pdf: $(srcdir)/version.texi $(octave_TEXINFOS) $(EXAMPLE_FILES) $(srcdir)/images.mk
+octave.info octave.dvi octave.html/index.html octave.pdf: $(srcdir)/version.texi $(octave_TEXINFOS) $(EXAMPLE_FILES) $(srcdir)/images.mk
 
 octave.info: $(IMAGES_TXT)
 
 octave.dvi octave.ps: $(IMAGES_EPS) octave_logo.eps
 
-octave.html: $(IMAGES_PNG)
+octave.html/index.html: $(IMAGES_PNG)
+
+octave.html:
+	if [ -d octave.html ]; then true; else mkdir octave.html; fi
 
 octave.pdf: $(IMAGES_PDF) octave_logo.pdf
 
+## The texi2dvi script (used to create both PDF and DVI output formats)
+## uses some fixed temporary file names, so wait for DVI file to be
+## generated before creating PDF file to avoid conflicts.
+octave.pdf: octave.dvi
+
 all-local: dvi html pdf ps doc-cache $(HTMLDIR_IMAGES)
 
 # Prevent packaging of distribution unless all libraries 
--- a/doc/interpreter/images.awk	Sat Aug 18 16:23:39 2012 -0400
+++ b/doc/interpreter/images.awk	Sat Aug 18 18:10:09 2012 -0400
@@ -34,7 +34,7 @@
 
     for (j = 2; j <= NF; j++) {
       if (ext == "png") {
-	printf ("octave.html/%s.png: %s.png octave.html/index.html\n", $j, $j);
+	printf ("octave.html/%s.png: %s.png octave.html\n", $j, $j);
 	printf ("\tcp $< $@\n");
       }
       printf ("%s.%s: %s\n", $j, ext, script);
--- a/gui/Makefile.am	Sat Aug 18 16:23:39 2012 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,3 +0,0 @@
-SUBDIRS = src
-
-octetc_DATA = default-qt-settings
--- a/gui/default-qt-settings	Sat Aug 18 16:23:39 2012 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,37 +0,0 @@
-[General]
-connectOnStartup=true
-showMessageOfTheDay=true
-showTopic=true
-autoIdentification=false
-nickServPassword=
-useCustomFileEditor=false
-customFileEditor=emacs
-showFilenames=true
-showFileSize=false
-showFileType=false
-showLastModified=false
-showHiddenFiles=false
-useAlternatingRowColors=true
-useProxyServer=false
-proxyType=
-proxyHostName=none
-proxyPort=8080
-proxyUserName=
-proxyPassword=
-
-[editor]
-showLineNumbers=true
-highlightCurrentLine=true
-codeCompletion=true
-fontName=Ubuntu Mono
-fontSize=12
-shortWindowTitle=true
-longWindowTitle=true
-
-[terminal]
-fontSize=10
-fontName=Andale Mono
-
-[MainWindow]
-geometry=@ByteArray(\x1\xd9\xd0\xcb\0\x1\0\0\0\0\0\x31\0\0\0\x18\0\0\x4\xff\0\0\x3\xff\0\0\0\0\0\0\0\0\xff\xff\xff\xfe\xff\xff\xff\xfe\0\0\0\0\x2\0)
-windowState=@ByteArray(\0\0\0\xff\0\0\0\0\xfd\0\0\0\x1\0\0\0\x1\0\0\x4\xcf\0\0\x3\x91\xfc\x2\0\0\0\x1\xfc\0\0\0\x41\0\0\x3\x91\0\0\x1\xc7\0\xff\xff\xff\xfc\x1\0\0\0\x3\xfc\0\0\0\0\0\0\x1.\0\0\0R\0\xff\xff\xff\xfc\x2\0\0\0\x2\xfb\0\0\0\x1a\0W\0o\0r\0k\0s\0p\0\x61\0\x63\0\x65\0V\0i\0\x65\0w\x1\0\0\0\x41\0\0\x1\xe8\0\0\0k\0\xff\xff\xff\xfb\0\0\0\"\0H\0i\0s\0t\0o\0r\0y\0\x44\0o\0\x63\0k\0W\0i\0\x64\0g\0\x65\0t\x1\0\0\x2/\0\0\x1\xa3\0\0\0\x8c\0\xff\xff\xff\xfc\0\0\x1\x34\0\0\x2\x81\0\0\x2\x81\0\0\x2\x81\xfa\0\0\0\0\x2\0\0\0\x2\xfb\0\0\0$\0T\0\x65\0r\0m\0i\0n\0\x61\0l\0\x44\0o\0\x63\0k\0W\0i\0\x64\0g\0\x65\0t\x1\0\0\0\0\xff\xff\xff\xff\0\0\x1\xa9\0\xff\xff\xff\xfb\0\0\0\x14\0\x46\0i\0l\0\x65\0\x45\0\x64\0i\0t\0o\0r\x1\0\0\x1\xf0\0\0\x1\xe2\0\0\0j\0\xff\xff\xff\xfb\0\0\0\x1e\0\x46\0i\0l\0\x65\0s\0\x44\0o\0\x63\0k\0W\0i\0\x64\0g\0\x65\0t\x1\0\0\x3\xbb\0\0\x1\x14\0\0\0P\0\xff\xff\xff\0\0\0\0\0\0\x3\x91\0\0\0\x4\0\0\0\x4\0\0\0\b\0\0\0\b\xfc\0\0\0\x1\0\0\0\x2\0\0\0\x1\xff\xff\xff\xff\x1\0\0\0\0\xff\xff\xff\xff\0\0\0\0\0\0\0\0)
--- a/gui/gui.pro	Sat Aug 18 16:23:39 2012 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,2 +0,0 @@
-TEMPLATE = subdirs
-SUBDIRS = qterminal src
--- a/gui/kb-layouts/default.keytab	Sat Aug 18 16:23:39 2012 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,133 +0,0 @@
-# [README.default.Keytab] Buildin Keyboard Table
-#
-# To customize your keyboard, copy this file to something
-# ending with .keytab and change it to meet you needs.
-# Please read the README.KeyTab and the README.keyboard
-# in this case.
-#
-# --------------------------------------------------------------
-
-keyboard "Default (XFree 4)"
-
-# --------------------------------------------------------------
-#
-# Note that this particular table is a "risc" version made to
-# ease customization without bothering with obsolete details.
-# See VT100.keytab for the more hairy stuff.
-#
-# --------------------------------------------------------------
-
-# common keys
-
-key Escape             : "\E"
-
-key Tab   -Shift       : "\t"
-key Tab   +Shift+Ansi  : "\E[Z"
-key Tab   +Shift-Ansi  : "\t"
-key Backtab     +Ansi  : "\E[Z"
-key Backtab     -Ansi  : "\t"
-
-key Return-Shift-NewLine : "\r"
-key Return-Shift+NewLine : "\r\n"
-
-key Return+Shift         : "\EOM"
-
-# Backspace and Delete codes are preserving CTRL-H.
-
-key Backspace      : "\x7f"
-
-# Arrow keys in VT52 mode
-# shift up/down are reserved for scrolling.
-# shift left/right are reserved for switching between tabs (this is hardcoded).
-
-key Up   -Shift-Ansi : "\EA"
-key Down -Shift-Ansi : "\EB"
-key Right-Shift-Ansi : "\EC"
-key Left -Shift-Ansi : "\ED"
-
-# Arrow keys in ANSI mode with Application - and Normal Cursor Mode)
-
-key Up    -Shift-AnyMod+Ansi+AppCuKeys           : "\EOA"
-key Down  -Shift-AnyMod+Ansi+AppCuKeys           : "\EOB"
-key Right -Shift-AnyMod+Ansi+AppCuKeys           : "\EOC"
-key Left  -Shift-AnyMod+Ansi+AppCuKeys           : "\EOD"
-
-key Up    -Shift-AnyMod+Ansi-AppCuKeys           : "\E[A"
-key Down  -Shift-AnyMod+Ansi-AppCuKeys           : "\E[B"
-key Right -Shift-AnyMod+Ansi-AppCuKeys           : "\E[C"
-key Left  -Shift-AnyMod+Ansi-AppCuKeys           : "\E[D"
-
-key Up    -Shift+AnyMod+Ansi                     : "\E[1;*A"
-key Down  -Shift+AnyMod+Ansi                     : "\E[1;*B"
-key Right -Shift+AnyMod+Ansi                     : "\E[1;*C"
-key Left  -Shift+AnyMod+Ansi                     : "\E[1;*D"
-
-# other grey PC keys
-
-key Enter+NewLine : "\r\n"
-key Enter-NewLine : "\r"
-
-key Home        -AnyMod     -AppCuKeys           : "\E[H"  
-key End         -AnyMod     -AppCuKeys           : "\E[F"  
-key Home        -AnyMod     +AppCuKeys           : "\EOH"  
-key End         -AnyMod     +AppCuKeys           : "\EOF"  
-key Home        +AnyMod                          : "\E[1;*H"
-key End         +AnyMod                          : "\E[1;*F"
-
-key Insert      -AnyMod                          : "\E[2~"
-key Delete      -AnyMod                          : "\E[3~"
-key Insert      +AnyMod                          : "\E[2;*~"
-key Delete      +AnyMod                          : "\E[3;*~"
-
-key Prior -Shift-AnyMod                          : "\E[5~"
-key Next  -Shift-AnyMod                          : "\E[6~"
-key Prior -Shift+AnyMod                          : "\E[5;*~"
-key Next  -Shift+AnyMod                          : "\E[6;*~"
-
-# Function keys
-key F1          -AnyMod                          : "\EOP"
-key F2          -AnyMod                          : "\EOQ"
-key F3          -AnyMod                          : "\EOR"
-key F4          -AnyMod                          : "\EOS"
-key F5          -AnyMod                          : "\E[15~"
-key F6          -AnyMod                          : "\E[17~"
-key F7          -AnyMod                          : "\E[18~"
-key F8          -AnyMod                          : "\E[19~"
-key F9          -AnyMod                          : "\E[20~"
-key F10         -AnyMod                          : "\E[21~"
-key F11         -AnyMod                          : "\E[23~"
-key F12         -AnyMod                          : "\E[24~"
-
-key F1          +AnyMod                          : "\EO*P"
-key F2          +AnyMod                          : "\EO*Q"
-key F3          +AnyMod                          : "\EO*R"
-key F4          +AnyMod                          : "\EO*S"
-key F5          +AnyMod                          : "\E[15;*~"
-key F6          +AnyMod                          : "\E[17;*~"
-key F7          +AnyMod                          : "\E[18;*~"
-key F8          +AnyMod                          : "\E[19;*~"
-key F9          +AnyMod                          : "\E[20;*~"
-key F10         +AnyMod                          : "\E[21;*~"
-key F11         +AnyMod                          : "\E[23;*~"
-key F12         +AnyMod                          : "\E[24;*~"
-
-# Work around dead keys
-
-key Space +Control : "\x00"
-
-# Some keys are used by konsole to cause operations.
-# The scroll* operations refer to the history buffer.
-
-key Up    +Shift-AppScreen  : scrollLineUp
-key Prior +Shift-AppScreen  : scrollPageUp
-key Down  +Shift-AppScreen  : scrollLineDown
-key Next  +Shift-AppScreen  : scrollPageDown
-
-#key Up    +Shift  : scrollLineUp
-#key Prior +Shift  : scrollPageUp
-#key Down  +Shift  : scrollLineDown
-#key Next  +Shift  : scrollPageDown
-
-key ScrollLock     : scrollLock
-
-# keypad characters are not offered differently by Qt.
--- a/gui/kb-layouts/linux.keytab	Sat Aug 18 16:23:39 2012 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,133 +0,0 @@
-# [linux.keytab] Konsole Keyboard Table (Linux console keys)
-#
-# --------------------------------------------------------------
-
-# NOT TESTED, MAY NEED SOME CLEANUPS
-keyboard "Linux console"
-
-# --------------------------------------------------------------
-#
-# This configuration table allows to customize the
-# meaning of the keys.
-#
-# The syntax is that each entry has the form : 
-#
-#   "key" Keyname { ("+"|"-") Modename } ":" (String|Operation)
-#
-# Keynames are those defined in <qnamespace.h> with the
-# "Qt::Key_" removed. (We'd better insert the list here)
-#
-# Mode names are : 
-#
-# - Shift
-# - Alt
-# - Control
-#
-#   The VT100 emulation has two modes that can affect the
-#   sequences emitted by certain keys. These modes are
-#   under control of the client program.
-#   
-# - Newline     : effects Return and Enter key.
-# - Application : effects Up and Down key.
-#
-# - Ansi        : effects Up and Down key (This is for VT52, really).
-#
-# Operations are
-#
-# - scrollUpLine
-# - scrollUpPage
-# - scrollDownLine
-# - scrollDownPage
-#
-# - emitSelection
-#
-# If the key is not found here, the text of the
-# key event as provided by QT is emitted, possibly
-# preceeded by ESC if the Alt key is pressed.
-#
-# --------------------------------------------------------------
-
-key Escape : "\E"
-key Tab    : "\t"
-
-# VT100 can add an extra \n after return.
-# The NewLine mode is set by an escape sequence.
-
-key Return-NewLine : "\r"  
-key Return+NewLine : "\r\n"
-
-# Some desperately try to save the ^H.
-
-key Backspace : "\x7f"
-key Delete    : "\E[3~"
-
-# These codes are for the VT52 mode of VT100
-# The Ansi mode (i.e. VT100 mode) is set by
-# an escape sequence
-
-key Up   -Shift-Ansi : "\EA"
-key Down -Shift-Ansi : "\EB"
-key Right-Shift-Ansi : "\EC"
-key Left -Shift-Ansi : "\ED"
-
-# VT100 emits a mode bit together
-# with the arrow keys.The AppCuKeys
-# mode is set by an escape sequence.
-
-key Up   -Shift+Ansi+AppCuKeys : "\EOA"
-key Down -Shift+Ansi+AppCuKeys : "\EOB"
-key Right-Shift+Ansi+AppCuKeys : "\EOC"
-key Left -Shift+Ansi+AppCuKeys : "\EOD"
-
-key Up   -Shift+Ansi-AppCuKeys : "\E[A"
-key Down -Shift+Ansi-AppCuKeys : "\E[B"
-key Right-Shift+Ansi-AppCuKeys : "\E[C"
-key Left -Shift+Ansi-AppCuKeys : "\E[D"
-
-# linux functions keys F1-F5 differ from xterm
-
-key F1 : "\E[[A" 
-key F2 : "\E[[B" 
-key F3 : "\E[[C" 
-key F4 : "\E[[D" 
-key F5 : "\E[[E" 
-
-key F6     : "\E[17~" 
-key F7     : "\E[18~" 
-key F8     : "\E[19~" 
-key F9     : "\E[20~" 
-key F10    : "\E[21~" 
-key F11    : "\E[23~" 
-key F12    : "\E[24~" 
-
-key Home   : "\E[1~"  
-key End    : "\E[4~"  
-
-key Prior -Shift : "\E[5~"  
-key Next  -Shift : "\E[6~"  
-key Insert-Shift : "\E[2~"  
-
-# Keypad-Enter. See comment on Return above.
-
-key Enter+NewLine : "\r\n"
-key Enter-NewLine : "\r"  
-
-key Space +Control : "\x00"
-
-# some of keys are used by konsole.
-
-key Up    +Shift   : scrollLineUp
-key Prior +Shift   : scrollPageUp
-key Down  +Shift   : scrollLineDown
-key Next  +Shift   : scrollPageDown
-
-key ScrollLock     : scrollLock
-
-#----------------------------------------------------------
-
-# keypad characters as offered by Qt
-# cannot be recognized as such.
-
-#----------------------------------------------------------
-
-# Following other strings as emitted by konsole.
--- a/gui/kb-layouts/vt420pc.keytab	Sat Aug 18 16:23:39 2012 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,163 +0,0 @@
-# [vt420pc.keytab] Konsole Keyboard Table (VT420pc keys)
-# adapted by ferdinand gassauer f.gassauer@aon.at
-# Nov 2000
-#
-################################################################
-#
-# The escape sequences emmited by the 
-# keys Shift+F1 to Shift+F12 might not fit your needs
-#
-################# IMPORTANT NOTICE #############################
-# the key bindings (Kcontrol -> look and feel -> keybindgs) 
-# overrule the settings in this file. The key bindings might be 
-# changed by the user WITHOUT notification of the maintainer of
-# the keytab file. Konsole will not work as expected by 
-# the maintainer of the keytab file.
-################################################################
-#
-# --------------------------------------------------------------
-
-keyboard "DEC VT420 Terminal"
-
-# --------------------------------------------------------------
-#
-# This configuration table allows to customize the
-# meaning of the keys.
-#
-# The syntax is that each entry has the form : 
-#
-#   "key" Keyname { ("+"|"-") Modename } ":" (String|Operation)
-#
-# Keynames are those defined in <qnamespace.h> with the
-# "Qt::Key_" removed. (We'd better insert the list here)
-#
-# Mode names are : 
-#
-# - Shift
-# - Alt
-# - Control
-#
-#   The VT100 emulation has two modes that can affect the
-#   sequences emitted by certain keys. These modes are
-#   under control of the client program.
-#   
-# - Newline     : effects Return and Enter key.
-# - Application : effects Up and Down key.
-#
-# - Ansi        : effects Up and Down key (This is for VT52, really).
-#
-# Operations are
-#
-# - scrollUpLine
-# - scrollUpPage
-# - scrollDownLine
-# - scrollDownPage
-#
-# - emitSelection
-#
-# If the key is not found here, the text of the
-# key event as provided by QT is emitted, possibly
-# preceeded by ESC if the Alt key is pressed.
-#
-# --------------------------------------------------------------
-
-key Escape : "\E"
-key Tab    : "\t"
-key Backtab: "\E[Z"
-
-# VT100 can add an extra \n after return.
-# The NewLine mode is set by an escape sequence.
-
-key Return-NewLine : "\r"  
-key Return+NewLine : "\r\n"
-
-# Some desperately try to save the ^H.
-# may be not everyone wants this
-
-key Backspace : "\x08"  # Control H
-key Delete    : "\x7f"
-
-# These codes are for the VT420pc
-# The Ansi mode (i.e. VT100 mode) is set by
-# an escape sequence
-
-key Up   -Shift-Ansi : "\EA"
-key Down -Shift-Ansi : "\EB"
-key Right-Shift-Ansi : "\EC"
-key Left -Shift-Ansi : "\ED"
-
-# VT100 emits a mode bit together
-# with the arrow keys.The AppCuKeys
-# mode is set by an escape sequence.
-
-key Up   -Shift+Ansi+AppCuKeys : "\EOA"
-key Down -Shift+Ansi+AppCuKeys : "\EOB"
-key Right-Shift+Ansi+AppCuKeys : "\EOC"
-key Left -Shift+Ansi+AppCuKeys : "\EOD"
-
-key Up   -Shift+Ansi-AppCuKeys : "\E[A"
-key Down -Shift+Ansi-AppCuKeys : "\E[B"
-key Right-Shift+Ansi-AppCuKeys : "\E[C"
-key Left -Shift+Ansi-AppCuKeys : "\E[D"
-
-# function keys 
-
-key F1 -Shift    : "\E[11~"  
-key F2 -Shift    : "\E[12~"
-key F3 -Shift    : "\E[13~"
-key F4 -Shift    : "\E[14~"
-key F5 -Shift    : "\E[15~"
-key F6 -Shift    : "\E[17~"
-key F7 -Shift    : "\E[18~"
-key F8 -Shift    : "\E[19~"
-key F9 -Shift    : "\E[20~"
-key F10-Shift    : "\E[21~"
-key F11-Shift    : "\E[23~"
-key F12-Shift    : "\E[24~"  
-#
-# Shift F1-F12
-#
-key F1 +Shift    : "\E[11;2~"
-key F2 +Shift    : "\E[12;2~"
-key F3 +Shift    : "\E[13;2~"
-key F4 +Shift    : "\E[14;2~"
-key F5 +Shift    : "\E[15;2~"
-key F6 +Shift    : "\E[17;2~" 
-key F7 +Shift    : "\E[18;2~" 
-key F8 +Shift    : "\E[19;2~" 
-key F9 +Shift    : "\E[20;2~" 
-key F10+Shift    : "\E[21;2~" 
-key F11+Shift    : "\E[23;2~" 
-key F12+Shift    : "\E[24;2~" 
-
-key Home   : "\E[H"  
-key End    : "\E[F"  
-
-key Prior -Shift : "\E[5~"  
-key Next  -Shift : "\E[6~"  
-key Insert-Shift : "\E[2~"  
-
-# Keypad-Enter. See comment on Return above.
-
-key Enter+NewLine : "\r\n"
-key Enter-NewLine : "\r"  
-
-key Space +Control : "\x00"
-
-# some of keys are used by konsole.
-
-key Up    +Shift   : scrollLineUp
-key Prior +Shift   : scrollPageUp
-key Down  +Shift   : scrollLineDown
-key Next  +Shift   : scrollPageDown
-
-key ScrollLock     : scrollLock
-
-#----------------------------------------------------------
-
-# keypad characters as offered by Qt
-# cannot be recognized as such.
-
-#----------------------------------------------------------
-
-# Following other strings as emitted by konsole.
Binary file gui/languages/de-de.qm has changed
--- a/gui/languages/de-de.ts	Sat Aug 18 16:23:39 2012 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,642 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE TS>
-<TS version="2.0" language="de_DE">
-<context>
-    <name>FileEditorMdiSubWindow</name>
-    <message>
-        <location filename="../src/FileEditorMdiSubWindow.cpp" line="114"/>
-        <location filename="../src/FileEditorMdiSubWindow.cpp" line="207"/>
-        <source>File Editor</source>
-        <translation>Dateieditor</translation>
-    </message>
-    <message>
-        <location filename="../src/FileEditorMdiSubWindow.cpp" line="115"/>
-        <source>Cannot read file %1:
-%2.</source>
-        <translation>Konnte Datei %1 nicht lesen:
-%2.</translation>
-    </message>
-    <message>
-        <location filename="../src/FileEditorMdiSubWindow.cpp" line="127"/>
-        <source>File loaded.</source>
-        <translation>Datei geladen.</translation>
-    </message>
-    <message>
-        <location filename="../src/FileEditorMdiSubWindow.cpp" line="153"/>
-        <source>Do you want to save the current file
-%1 ?</source>
-        <translation>Möchten Sie die Datei %1 sichern ?</translation>
-    </message>
-    <message>
-        <location filename="../src/FileEditorMdiSubWindow.cpp" line="208"/>
-        <source>Cannot write file %1:
-%2.</source>
-        <translation>Konnte Datei %1 nicht schreiben:
-%2.</translation>
-    </message>
-    <message>
-        <location filename="../src/FileEditorMdiSubWindow.cpp" line="220"/>
-        <source>File %1 saved</source>
-        <translation>Datei %1 gesichert</translation>
-    </message>
-    <message>
-        <location filename="../src/FileEditorMdiSubWindow.cpp" line="383"/>
-        <source>&amp;Close File</source>
-        <translation>&amp;Datei schließen</translation>
-    </message>
-    <message>
-        <location filename="../src/FileEditorMdiSubWindow.cpp" line="386"/>
-        <source>&amp;New File</source>
-        <translation>&amp;Neue Datei</translation>
-    </message>
-    <message>
-        <location filename="../src/FileEditorMdiSubWindow.cpp" line="389"/>
-        <source>&amp;Open File</source>
-        <translation>&amp;Öffne Datei</translation>
-    </message>
-    <message>
-        <location filename="../src/FileEditorMdiSubWindow.cpp" line="392"/>
-        <source>&amp;Save File</source>
-        <translation>&amp;Sichere Datei</translation>
-    </message>
-    <message>
-        <location filename="../src/FileEditorMdiSubWindow.cpp" line="395"/>
-        <source>Save File &amp;As</source>
-        <translation>Sichere Datei &amp;als</translation>
-    </message>
-    <message>
-        <location filename="../src/FileEditorMdiSubWindow.cpp" line="398"/>
-        <source>&amp;Undo</source>
-        <translation>&amp;Rückgängig</translation>
-    </message>
-    <message>
-        <location filename="../src/FileEditorMdiSubWindow.cpp" line="401"/>
-        <source>&amp;Redo</source>
-        <translation>&amp;Wiederholen</translation>
-    </message>
-    <message>
-        <location filename="../src/FileEditorMdiSubWindow.cpp" line="402"/>
-        <source>&amp;Copy</source>
-        <translation>&amp;Kopieren</translation>
-    </message>
-    <message>
-        <location filename="../src/FileEditorMdiSubWindow.cpp" line="403"/>
-        <source>Cu&amp;t</source>
-        <translation>&amp;Ausschneiden</translation>
-    </message>
-    <message>
-        <location filename="../src/FileEditorMdiSubWindow.cpp" line="404"/>
-        <source>&amp;Paste</source>
-        <translation>&amp;Einfügen</translation>
-    </message>
-    <message>
-        <location filename="../src/FileEditorMdiSubWindow.cpp" line="405"/>
-        <source>&amp;Next Bookmark</source>
-        <translation>&amp;Nächstes Bookmark</translation>
-    </message>
-    <message>
-        <location filename="../src/FileEditorMdiSubWindow.cpp" line="406"/>
-        <source>Pre&amp;vious Bookmark</source>
-        <translation>&amp;Voriges Bookmark</translation>
-    </message>
-    <message>
-        <location filename="../src/FileEditorMdiSubWindow.cpp" line="407"/>
-        <source>Toggle &amp;Bookmark</source>
-        <translation>&amp;Bookmark setzen</translation>
-    </message>
-    <message>
-        <location filename="../src/FileEditorMdiSubWindow.cpp" line="410"/>
-        <source>&amp;Run File</source>
-        <translation>&amp;Ausführen</translation>
-    </message>
-    <message>
-        <location filename="../src/FileEditorMdiSubWindow.cpp" line="449"/>
-        <source>&amp;File</source>
-        <translation>&amp;Datei</translation>
-    </message>
-    <message>
-        <location filename="../src/FileEditorMdiSubWindow.cpp" line="457"/>
-        <source>&amp;Edit</source>
-        <translation>&amp;Editieren</translation>
-    </message>
-    <message>
-        <location filename="../src/FileEditorMdiSubWindow.cpp" line="469"/>
-        <source>&amp;Run</source>
-        <translation>&amp;Ausführen</translation>
-    </message>
-</context>
-<context>
-    <name>FilesDockWidget</name>
-    <message>
-        <source>Current Folder</source>
-        <translation type="obsolete">Aktuelles Verzeichnis</translation>
-    </message>
-    <message>
-        <location filename="../src/FilesDockWidget.cpp" line="32"/>
-        <source>Current Directory</source>
-        <translation>Aktuelles Verzeichnis</translation>
-    </message>
-    <message>
-        <location filename="../src/FilesDockWidget.cpp" line="46"/>
-        <source>Move up one directory.</source>
-        <translation>Ein Verzeichnis höher wechseln.</translation>
-    </message>
-    <message>
-        <location filename="../src/FilesDockWidget.cpp" line="49"/>
-        <source>Enter the path or filename.</source>
-        <translation>Geben Sie einen Pfad oder Dateinamen ein.</translation>
-    </message>
-    <message>
-        <location filename="../src/FilesDockWidget.cpp" line="78"/>
-        <source>Doubleclick a file to open it.</source>
-        <translation>Führen Sie einen Doppelklick aus, um eine Datei zu öffnen.</translation>
-    </message>
-</context>
-<context>
-    <name>HistoryDockWidget</name>
-    <message>
-        <location filename="../src/HistoryDockWidget.cpp" line="36"/>
-        <source>Doubleclick a command to transfer it to the terminal.</source>
-        <translation>Führen Sie einen Doppelklick aus, um den Befehl in das Terminal zu übertragen.</translation>
-    </message>
-    <message>
-        <location filename="../src/HistoryDockWidget.cpp" line="38"/>
-        <source>Enter text to filter the command history.</source>
-        <translation>Geben Sie Text ein, um die Befehlshistorie zu filtern.</translation>
-    </message>
-    <message>
-        <location filename="../src/HistoryDockWidget.cpp" line="41"/>
-        <source>Command History</source>
-        <translation>Befehlshistorie</translation>
-    </message>
-    <message>
-        <source>History updated.</source>
-        <translation type="obsolete">Befehlshistorie aktualisiert.</translation>
-    </message>
-</context>
-<context>
-    <name>LexerOctaveGui</name>
-    <message>
-        <location filename="../src/lexer/lexeroctavegui.cpp" line="111"/>
-        <source>Default</source>
-        <translation>Standard</translation>
-    </message>
-    <message>
-        <location filename="../src/lexer/lexeroctavegui.cpp" line="113"/>
-        <source>Comment</source>
-        <translation>Kommentar</translation>
-    </message>
-    <message>
-        <location filename="../src/lexer/lexeroctavegui.cpp" line="115"/>
-        <source>Command</source>
-        <translation>Befehl</translation>
-    </message>
-    <message>
-        <location filename="../src/lexer/lexeroctavegui.cpp" line="117"/>
-        <source>Number</source>
-        <translation>Zahl</translation>
-    </message>
-    <message>
-        <location filename="../src/lexer/lexeroctavegui.cpp" line="119"/>
-        <source>Keyword</source>
-        <translation>Schlüsselwort</translation>
-    </message>
-    <message>
-        <location filename="../src/lexer/lexeroctavegui.cpp" line="121"/>
-        <source>Single-quoted string</source>
-        <translation>Zeichenkette in einfachen Hochkommata</translation>
-    </message>
-    <message>
-        <location filename="../src/lexer/lexeroctavegui.cpp" line="123"/>
-        <source>Operator</source>
-        <translation>Operator</translation>
-    </message>
-    <message>
-        <location filename="../src/lexer/lexeroctavegui.cpp" line="125"/>
-        <source>Identifier</source>
-        <translation>Bezeichner</translation>
-    </message>
-    <message>
-        <location filename="../src/lexer/lexeroctavegui.cpp" line="127"/>
-        <source>Double-quoted string</source>
-        <translation>Zeichenkette in doppelten Hochkommata</translation>
-    </message>
-</context>
-<context>
-    <name>MainWindow</name>
-    <message>
-        <location filename="../src/MainWindow.cpp" line="47"/>
-        <source>Opening file.</source>
-        <translation>Öffne Datei.</translation>
-    </message>
-    <message>
-        <location filename="../src/MainWindow.cpp" line="124"/>
-        <source>Save Workspace</source>
-        <translation>Speichere Arbeitsumgebung</translation>
-    </message>
-    <message>
-        <location filename="../src/MainWindow.cpp" line="134"/>
-        <source>Load Workspace</source>
-        <translation>Lade Arbeitsumgebung</translation>
-    </message>
-    <message>
-        <location filename="../src/MainWindow.cpp" line="226"/>
-        <location filename="../src/MainWindow.cpp" line="362"/>
-        <source>About Octave</source>
-        <translation>Ãœber Octave</translation>
-    </message>
-    <message>
-        <location filename="../src/MainWindow.cpp" line="238"/>
-        <source>Saving data and shutting down.</source>
-        <translation>Speichere Daten und schließe.</translation>
-    </message>
-    <message>
-        <location filename="../src/MainWindow.cpp" line="276"/>
-        <source>View the variables in the active workspace.</source>
-        <translation>Sehen Sie die Variablen ein, die sich in der aktiven Arbeitsumgebung befinden.</translation>
-    </message>
-    <message>
-        <location filename="../src/MainWindow.cpp" line="278"/>
-        <source>Browse and search the command history.</source>
-        <translation>Durchsuchen Sie die Befehlshistorie.</translation>
-    </message>
-    <message>
-        <location filename="../src/MainWindow.cpp" line="280"/>
-        <source>Browse your files.</source>
-        <translation>Durchsuchen Sie Ihre Dateien.</translation>
-    </message>
-    <message>
-        <location filename="../src/MainWindow.cpp" line="294"/>
-        <source>Terminal</source>
-        <translation>Terminal</translation>
-    </message>
-    <message>
-        <location filename="../src/MainWindow.cpp" line="298"/>
-        <source>Enter your commands into the Octave terminal.</source>
-        <translation>Geben Sie Ihre Befehle in das Octave Terminal ein.</translation>
-    </message>
-    <message>
-        <location filename="../src/MainWindow.cpp" line="311"/>
-        <source>Browse the Octave documentation for help.</source>
-        <translation>Durchsuchen Sie die Octave Dokumentation, um Hilfe zu erhalten.</translation>
-    </message>
-    <message>
-        <location filename="../src/MainWindow.cpp" line="320"/>
-        <source>Chat</source>
-        <translation>Chat</translation>
-    </message>
-    <message>
-        <location filename="../src/MainWindow.cpp" line="323"/>
-        <source>Instantly chat with other Octave users for help.</source>
-        <translation>Tauschen Sie sich direkt mit anderen Octave Benutzern aus, um Hilfe zu erhalten.</translation>
-    </message>
-    <message>
-        <location filename="../src/MainWindow.cpp" line="330"/>
-        <source>Octave</source>
-        <translation>Octave</translation>
-    </message>
-    <message>
-        <location filename="../src/MainWindow.cpp" line="331"/>
-        <source>Settings</source>
-        <translation>Einstellungen</translation>
-    </message>
-    <message>
-        <location filename="../src/MainWindow.cpp" line="333"/>
-        <source>Exit</source>
-        <translation>Beenden</translation>
-    </message>
-    <message>
-        <location filename="../src/MainWindow.cpp" line="335"/>
-        <source>Interface</source>
-        <translation>Oberfläche</translation>
-    </message>
-    <message>
-        <location filename="../src/MainWindow.cpp" line="337"/>
-        <source>Align Windows</source>
-        <translation>Fenster ausrichten</translation>
-    </message>
-    <message>
-        <location filename="../src/MainWindow.cpp" line="339"/>
-        <location filename="../src/MainWindow.cpp" line="351"/>
-        <source>Workspace</source>
-        <translation>Arbeitsumgebung</translation>
-    </message>
-    <message>
-        <location filename="../src/MainWindow.cpp" line="342"/>
-        <source>History</source>
-        <translation>Befehlshistorie</translation>
-    </message>
-    <message>
-        <location filename="../src/MainWindow.cpp" line="345"/>
-        <source>File Browser</source>
-        <translation>Dateibrowser</translation>
-    </message>
-    <message>
-        <location filename="../src/MainWindow.cpp" line="349"/>
-        <source>Open New Editor Window</source>
-        <translation>Neues Editorfenster öffnen</translation>
-    </message>
-    <message>
-        <location filename="../src/MainWindow.cpp" line="352"/>
-        <source>Load</source>
-        <translation>Laden</translation>
-    </message>
-    <message>
-        <location filename="../src/MainWindow.cpp" line="353"/>
-        <source>Save</source>
-        <translation>Sichern</translation>
-    </message>
-    <message>
-        <location filename="../src/MainWindow.cpp" line="355"/>
-        <source>Clear</source>
-        <translation>Löschen</translation>
-    </message>
-    <message>
-        <location filename="../src/MainWindow.cpp" line="357"/>
-        <source>Community</source>
-        <translation>Gemeinschaft</translation>
-    </message>
-    <message>
-        <location filename="../src/MainWindow.cpp" line="358"/>
-        <source>Report Bug</source>
-        <translation>Fehler melden</translation>
-    </message>
-    <message>
-        <location filename="../src/MainWindow.cpp" line="359"/>
-        <source>Agora</source>
-        <translation>Agora</translation>
-    </message>
-    <message>
-        <location filename="../src/MainWindow.cpp" line="360"/>
-        <source>Octave Forge</source>
-        <translation>Octave Forge</translation>
-    </message>
-    <message>
-        <location filename="../src/MainWindow.cpp" line="363"/>
-        <source>About Qt</source>
-        <translation>Ãœber Qt</translation>
-    </message>
-    <message>
-        <source>Octave Toolbar</source>
-        <translation type="obsolete">Octave Werkzeugleiste</translation>
-    </message>
-    <message>
-        <source>Command Window</source>
-        <translation type="obsolete">Konsolenfenster</translation>
-    </message>
-    <message>
-        <source>File Editor</source>
-        <translation type="obsolete">Dateieditor</translation>
-    </message>
-    <message>
-        <location filename="../src/MainWindow.cpp" line="307"/>
-        <source>Documentation</source>
-        <translation>Dokumentation</translation>
-    </message>
-    <message>
-        <source>Service</source>
-        <translation type="obsolete">Service</translation>
-    </message>
-    <message>
-        <source>Established link to Octave.</source>
-        <translation type="obsolete">Verbindung zu Octave hergestellt.</translation>
-    </message>
-</context>
-<context>
-    <name>NumberBar</name>
-    <message>
-        <source>Stop Here</source>
-        <translation type="obsolete">Stoppe hier</translation>
-    </message>
-    <message>
-        <source>Current Line</source>
-        <translation type="obsolete">Aktuelle Zeile</translation>
-    </message>
-    <message>
-        <source>Error Line</source>
-        <translation type="obsolete">Fehlerzeile</translation>
-    </message>
-</context>
-<context>
-    <name>NumberedCodeEdit</name>
-    <message>
-        <source>This file name is not valid.</source>
-        <translation type="obsolete">Dieser Dateiname ist nicht gültig.</translation>
-    </message>
-    <message>
-        <source>Octave doesn&apos;t understand this file name:
-</source>
-        <translation type="obsolete">Octave versteht diesen Dateityp nicht:</translation>
-    </message>
-    <message>
-        <source>
-Please, change it.
- Do you want to save your changes?</source>
-        <translation type="obsolete">Bitte ändern Sie dies. Möchten Sie Ihre Änderungen sichern?</translation>
-    </message>
-</context>
-<context>
-    <name>SettingsDialog</name>
-    <message>
-        <location filename="../src/SettingsDialog.ui" line="29"/>
-        <source>Settings</source>
-        <translation>Einstellungen</translation>
-    </message>
-    <message>
-        <location filename="../src/SettingsDialog.ui" line="39"/>
-        <source>Chat</source>
-        <translation>Char</translation>
-    </message>
-    <message>
-        <location filename="../src/SettingsDialog.ui" line="47"/>
-        <source>Connect to #octave on startup</source>
-        <translation>Beim Start mit #octave verbinden</translation>
-    </message>
-    <message>
-        <location filename="../src/SettingsDialog.ui" line="57"/>
-        <source>Show message of the day</source>
-        <translation>Nachricht des Tages anzeigen (MOTD)</translation>
-    </message>
-    <message>
-        <location filename="../src/SettingsDialog.ui" line="64"/>
-        <source>Show topic</source>
-        <translation>Thema des Chatkanals anzeigen</translation>
-    </message>
-    <message>
-        <location filename="../src/SettingsDialog.ui" line="71"/>
-        <source>Automatically identify on NickServ</source>
-        <translation>Automatisch bei NickServ identifizieren</translation>
-    </message>
-    <message>
-        <location filename="../src/SettingsDialog.ui" line="78"/>
-        <source>Warning: Your password will be stored in ~/.octavegui in human-readable format. Do not enter your password if you worry about security issues.</source>
-        <translation>Warnung: Ihre Passwort wird unter ~/.octave-gui in einem menschenlesbaren Format gesichert. Hinterlegen Sie nicht Ihr Password, wenn Sie Bedenken über die Sicherheit haben.</translation>
-    </message>
-    <message>
-        <location filename="../src/SettingsDialog.ui" line="103"/>
-        <location filename="../src/SettingsDialog.ui" line="311"/>
-        <source>Password:</source>
-        <translation>Passwort:</translation>
-    </message>
-    <message>
-        <location filename="../src/SettingsDialog.ui" line="125"/>
-        <source>Editor</source>
-        <translation>Editor</translation>
-    </message>
-    <message>
-        <location filename="../src/SettingsDialog.ui" line="133"/>
-        <source>Use custom file editor:</source>
-        <translation>Benutzerdefinierten Editor verwenden:</translation>
-    </message>
-    <message>
-        <location filename="../src/SettingsDialog.ui" line="143"/>
-        <source>emacs</source>
-        <translation>emacs</translation>
-    </message>
-    <message>
-        <location filename="../src/SettingsDialog.ui" line="166"/>
-        <source>File Browser</source>
-        <translation>Dateibrowser</translation>
-    </message>
-    <message>
-        <location filename="../src/SettingsDialog.ui" line="172"/>
-        <source>Show filenames</source>
-        <translation>Dateinamen anzeigen</translation>
-    </message>
-    <message>
-        <location filename="../src/SettingsDialog.ui" line="179"/>
-        <source>Show file size</source>
-        <translation>Dateigröße anzeigen</translation>
-    </message>
-    <message>
-        <location filename="../src/SettingsDialog.ui" line="186"/>
-        <source>Show file type</source>
-        <translation>Dateityp anzeigen</translation>
-    </message>
-    <message>
-        <location filename="../src/SettingsDialog.ui" line="193"/>
-        <source>Show date of last modification</source>
-        <translation>Datum der letzten Änderung anzeigen</translation>
-    </message>
-    <message>
-        <location filename="../src/SettingsDialog.ui" line="200"/>
-        <source>Show hidden files</source>
-        <translation>Versteckte Dateien anzeigen</translation>
-    </message>
-    <message>
-        <location filename="../src/SettingsDialog.ui" line="207"/>
-        <source>Alternating row colors</source>
-        <translation>Alternierende Farben verwenden</translation>
-    </message>
-    <message>
-        <location filename="../src/SettingsDialog.ui" line="215"/>
-        <source>Network</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../src/SettingsDialog.ui" line="221"/>
-        <source>Use proxy server</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../src/SettingsDialog.ui" line="233"/>
-        <source>Proxy Type:</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../src/SettingsDialog.ui" line="244"/>
-        <source>HttpProxy</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../src/SettingsDialog.ui" line="249"/>
-        <source>Socks5Proxy</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../src/SettingsDialog.ui" line="260"/>
-        <source>Hostname:</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../src/SettingsDialog.ui" line="277"/>
-        <source>Port:</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../src/SettingsDialog.ui" line="294"/>
-        <source>Username:</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../src/SettingsDialog.ui" line="339"/>
-        <source>Reset to defaults</source>
-        <translation>Standardeinstellungen wiederherstellen</translation>
-    </message>
-    <message>
-        <location filename="../src/SettingsDialog.ui" line="362"/>
-        <source>Export</source>
-        <translation>Exportieren</translation>
-    </message>
-    <message>
-        <location filename="../src/SettingsDialog.ui" line="372"/>
-        <source>Import</source>
-        <translation>Importieren</translation>
-    </message>
-</context>
-<context>
-    <name>VariablesDockWidget</name>
-    <message>
-        <location filename="../src/VariablesDockWidget.cpp" line="40"/>
-        <source>Name</source>
-        <translation>Bezeichner</translation>
-    </message>
-    <message>
-        <location filename="../src/VariablesDockWidget.cpp" line="40"/>
-        <source>Type</source>
-        <translation>Typ</translation>
-    </message>
-    <message>
-        <location filename="../src/VariablesDockWidget.cpp" line="40"/>
-        <source>Value</source>
-        <translation>Wert</translation>
-    </message>
-    <message>
-        <location filename="../src/VariablesDockWidget.cpp" line="36"/>
-        <source>Workspace</source>
-        <translation>Arbeitsumgebung</translation>
-    </message>
-    <message>
-        <source>Save</source>
-        <translation type="obsolete">Sichern</translation>
-    </message>
-    <message>
-        <source>Load</source>
-        <translation type="obsolete">Laden</translation>
-    </message>
-    <message>
-        <source>Clear</source>
-        <translation type="obsolete">Löschen</translation>
-    </message>
-    <message>
-        <location filename="../src/VariablesDockWidget.cpp" line="52"/>
-        <source>Local</source>
-        <translation>Lokal</translation>
-    </message>
-    <message>
-        <location filename="../src/VariablesDockWidget.cpp" line="56"/>
-        <source>Global</source>
-        <translation>Global</translation>
-    </message>
-    <message>
-        <location filename="../src/VariablesDockWidget.cpp" line="60"/>
-        <source>Persistent</source>
-        <translation>Persistent</translation>
-    </message>
-    <message>
-        <location filename="../src/VariablesDockWidget.cpp" line="64"/>
-        <source>Hidden</source>
-        <translation>Versteckt</translation>
-    </message>
-</context>
-</TS>
Binary file gui/languages/es-es.qm has changed
--- a/gui/languages/es-es.ts	Sat Aug 18 16:23:39 2012 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,576 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE TS>
-<TS version="2.0" language="es_MX">
-<context>
-    <name>FileEditorMdiSubWindow</name>
-    <message>
-        <location filename="../src/FileEditorMdiSubWindow.cpp" line="114"/>
-        <location filename="../src/FileEditorMdiSubWindow.cpp" line="207"/>
-        <source>File Editor</source>
-        <translation>Editor de archivos</translation>
-    </message>
-    <message>
-        <location filename="../src/FileEditorMdiSubWindow.cpp" line="115"/>
-        <source>Cannot read file %1:
-%2.</source>
-        <translation>No se puede leer archivo %1:
-%2.</translation>
-    </message>
-    <message>
-        <location filename="../src/FileEditorMdiSubWindow.cpp" line="127"/>
-        <source>File loaded.</source>
-        <translation>Archivo cargado.</translation>
-    </message>
-    <message>
-        <location filename="../src/FileEditorMdiSubWindow.cpp" line="153"/>
-        <source>Do you want to save the current file
-%1 ?</source>
-        <translation>¿Desea guardar archivo actual
-%1 ?</translation>
-    </message>
-    <message>
-        <location filename="../src/FileEditorMdiSubWindow.cpp" line="208"/>
-        <source>Cannot write file %1:
-%2.</source>
-        <translation>No se puede escribir archivo %1:
-%2.</translation>
-    </message>
-    <message>
-        <location filename="../src/FileEditorMdiSubWindow.cpp" line="220"/>
-        <source>File %1 saved</source>
-        <translation>Archivo %1 guardado</translation>
-    </message>
-    <message>
-        <location filename="../src/FileEditorMdiSubWindow.cpp" line="383"/>
-        <source>&amp;Close File</source>
-        <translation>&amp;Cerrar archivo</translation>
-    </message>
-    <message>
-        <location filename="../src/FileEditorMdiSubWindow.cpp" line="386"/>
-        <source>&amp;New File</source>
-        <translation>Archivo &amp;nuevo</translation>
-    </message>
-    <message>
-        <location filename="../src/FileEditorMdiSubWindow.cpp" line="389"/>
-        <source>&amp;Open File</source>
-        <translation>&amp;Abrir archivo</translation>
-    </message>
-    <message>
-        <location filename="../src/FileEditorMdiSubWindow.cpp" line="392"/>
-        <source>&amp;Save File</source>
-        <translation>&amp;Guardar archivo</translation>
-    </message>
-    <message>
-        <location filename="../src/FileEditorMdiSubWindow.cpp" line="395"/>
-        <source>Save File &amp;As</source>
-        <translatorcomment>Search for proper shortcut for this command</translatorcomment>
-        <translation>Guardar archivo &amp;como</translation>
-    </message>
-    <message>
-        <location filename="../src/FileEditorMdiSubWindow.cpp" line="398"/>
-        <source>&amp;Undo</source>
-        <translation>&amp;Deshacer</translation>
-    </message>
-    <message>
-        <location filename="../src/FileEditorMdiSubWindow.cpp" line="401"/>
-        <source>&amp;Redo</source>
-        <translation>&amp;Rehacer</translation>
-    </message>
-    <message>
-        <location filename="../src/FileEditorMdiSubWindow.cpp" line="402"/>
-        <source>&amp;Copy</source>
-        <translation>&amp;Copiar</translation>
-    </message>
-    <message>
-        <location filename="../src/FileEditorMdiSubWindow.cpp" line="403"/>
-        <source>Cu&amp;t</source>
-        <translation>Cor&amp;tar</translation>
-    </message>
-    <message>
-        <location filename="../src/FileEditorMdiSubWindow.cpp" line="404"/>
-        <source>&amp;Paste</source>
-        <translation>&amp;Pegar</translation>
-    </message>
-    <message>
-        <location filename="../src/FileEditorMdiSubWindow.cpp" line="405"/>
-        <source>&amp;Next Bookmark</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../src/FileEditorMdiSubWindow.cpp" line="406"/>
-        <source>Pre&amp;vious Bookmark</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../src/FileEditorMdiSubWindow.cpp" line="407"/>
-        <source>Toggle &amp;Bookmark</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../src/FileEditorMdiSubWindow.cpp" line="410"/>
-        <source>&amp;Run File</source>
-        <translation>&amp;Ejecutar archivo</translation>
-    </message>
-    <message>
-        <location filename="../src/FileEditorMdiSubWindow.cpp" line="449"/>
-        <source>&amp;File</source>
-        <translation>&amp;Archivo</translation>
-    </message>
-    <message>
-        <location filename="../src/FileEditorMdiSubWindow.cpp" line="457"/>
-        <source>&amp;Edit</source>
-        <translation>&amp;Editar</translation>
-    </message>
-    <message>
-        <location filename="../src/FileEditorMdiSubWindow.cpp" line="469"/>
-        <source>&amp;Run</source>
-        <translation>&amp;Ejecutar</translation>
-    </message>
-</context>
-<context>
-    <name>FilesDockWidget</name>
-    <message>
-        <source>Current Folder</source>
-        <translation type="obsolete">Carpeta actual</translation>
-    </message>
-    <message>
-        <location filename="../src/FilesDockWidget.cpp" line="32"/>
-        <source>Current Directory</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../src/FilesDockWidget.cpp" line="46"/>
-        <source>Move up one directory.</source>
-        <translation>Subir un directorio.</translation>
-    </message>
-    <message>
-        <location filename="../src/FilesDockWidget.cpp" line="49"/>
-        <source>Enter the path or filename.</source>
-        <translation>Introduzca dirección o nombre de archivo.</translation>
-    </message>
-    <message>
-        <location filename="../src/FilesDockWidget.cpp" line="78"/>
-        <source>Doubleclick a file to open it.</source>
-        <translation>Haga doble clic para abir archivo.</translation>
-    </message>
-</context>
-<context>
-    <name>HistoryDockWidget</name>
-    <message>
-        <location filename="../src/HistoryDockWidget.cpp" line="36"/>
-        <source>Doubleclick a command to transfer it to the terminal.</source>
-        <translation>Haga doble clic para transferir el comando a la terminal.</translation>
-    </message>
-    <message>
-        <location filename="../src/HistoryDockWidget.cpp" line="38"/>
-        <source>Enter text to filter the command history.</source>
-        <translation>Introduzca texto para filtrar el historial de comandos.</translation>
-    </message>
-    <message>
-        <location filename="../src/HistoryDockWidget.cpp" line="41"/>
-        <source>Command History</source>
-        <translation>Historial de comandos</translation>
-    </message>
-</context>
-<context>
-    <name>LexerOctaveGui</name>
-    <message>
-        <location filename="../src/lexer/lexeroctavegui.cpp" line="111"/>
-        <source>Default</source>
-        <translation>Valores predeterminados</translation>
-    </message>
-    <message>
-        <location filename="../src/lexer/lexeroctavegui.cpp" line="113"/>
-        <source>Comment</source>
-        <translation>Comentario</translation>
-    </message>
-    <message>
-        <location filename="../src/lexer/lexeroctavegui.cpp" line="115"/>
-        <source>Command</source>
-        <translation>Comando</translation>
-    </message>
-    <message>
-        <location filename="../src/lexer/lexeroctavegui.cpp" line="117"/>
-        <source>Number</source>
-        <translation>Número</translation>
-    </message>
-    <message>
-        <location filename="../src/lexer/lexeroctavegui.cpp" line="119"/>
-        <source>Keyword</source>
-        <translation>Contraseña</translation>
-    </message>
-    <message>
-        <location filename="../src/lexer/lexeroctavegui.cpp" line="121"/>
-        <source>Single-quoted string</source>
-        <translation>Cadena entre comillas simples</translation>
-    </message>
-    <message>
-        <location filename="../src/lexer/lexeroctavegui.cpp" line="123"/>
-        <source>Operator</source>
-        <translation>Operador</translation>
-    </message>
-    <message>
-        <location filename="../src/lexer/lexeroctavegui.cpp" line="125"/>
-        <source>Identifier</source>
-        <translation>Identificador</translation>
-    </message>
-    <message>
-        <location filename="../src/lexer/lexeroctavegui.cpp" line="127"/>
-        <source>Double-quoted string</source>
-        <translation>Cadena entre comillas dobles</translation>
-    </message>
-</context>
-<context>
-    <name>MainWindow</name>
-    <message>
-        <location filename="../src/MainWindow.cpp" line="47"/>
-        <source>Opening file.</source>
-        <translation>Abriendo archivo.</translation>
-    </message>
-    <message>
-        <location filename="../src/MainWindow.cpp" line="124"/>
-        <source>Save Workspace</source>
-        <translation>Guardar espacio de trabajo</translation>
-    </message>
-    <message>
-        <location filename="../src/MainWindow.cpp" line="134"/>
-        <source>Load Workspace</source>
-        <translation>Cargar espacio de trabajo</translation>
-    </message>
-    <message>
-        <location filename="../src/MainWindow.cpp" line="226"/>
-        <location filename="../src/MainWindow.cpp" line="362"/>
-        <source>About Octave</source>
-        <translation>Acerca de Octave</translation>
-    </message>
-    <message>
-        <location filename="../src/MainWindow.cpp" line="238"/>
-        <source>Saving data and shutting down.</source>
-        <translation>Guardando datos y cerrando el sistema.</translation>
-    </message>
-    <message>
-        <location filename="../src/MainWindow.cpp" line="276"/>
-        <source>View the variables in the active workspace.</source>
-        <translation>Ver variables en el espacio de trabajo activo.</translation>
-    </message>
-    <message>
-        <location filename="../src/MainWindow.cpp" line="278"/>
-        <source>Browse and search the command history.</source>
-        <translation>Navegar y buscar en el historial de comandos.</translation>
-    </message>
-    <message>
-        <location filename="../src/MainWindow.cpp" line="280"/>
-        <source>Browse your files.</source>
-        <translation>Explorar sus archivos.</translation>
-    </message>
-    <message>
-        <location filename="../src/MainWindow.cpp" line="294"/>
-        <source>Terminal</source>
-        <translation>Terminal</translation>
-    </message>
-    <message>
-        <location filename="../src/MainWindow.cpp" line="298"/>
-        <source>Enter your commands into the Octave terminal.</source>
-        <translation>Introducir su comando a la terminal de Octave.</translation>
-    </message>
-    <message>
-        <location filename="../src/MainWindow.cpp" line="307"/>
-        <source>Documentation</source>
-        <translation>Documentación</translation>
-    </message>
-    <message>
-        <location filename="../src/MainWindow.cpp" line="311"/>
-        <source>Browse the Octave documentation for help.</source>
-        <translation>Consultar la documentación de Octave para obtener ayuda.</translation>
-    </message>
-    <message>
-        <location filename="../src/MainWindow.cpp" line="320"/>
-        <source>Chat</source>
-        <translation>Chat/conversación instantanea</translation>
-    </message>
-    <message>
-        <location filename="../src/MainWindow.cpp" line="323"/>
-        <source>Instantly chat with other Octave users for help.</source>
-        <translation>Coversación instantanea con otros usuarios de octave para obtener ayuda.</translation>
-    </message>
-    <message>
-        <location filename="../src/MainWindow.cpp" line="330"/>
-        <source>Octave</source>
-        <translation>Octave</translation>
-    </message>
-    <message>
-        <location filename="../src/MainWindow.cpp" line="331"/>
-        <source>Settings</source>
-        <translation>Configuración</translation>
-    </message>
-    <message>
-        <location filename="../src/MainWindow.cpp" line="333"/>
-        <source>Exit</source>
-        <translation>Salir</translation>
-    </message>
-    <message>
-        <location filename="../src/MainWindow.cpp" line="335"/>
-        <source>Interface</source>
-        <translation>Interfase</translation>
-    </message>
-    <message>
-        <location filename="../src/MainWindow.cpp" line="337"/>
-        <source>Align Windows</source>
-        <translation>Alinear ventanas</translation>
-    </message>
-    <message>
-        <location filename="../src/MainWindow.cpp" line="339"/>
-        <location filename="../src/MainWindow.cpp" line="351"/>
-        <source>Workspace</source>
-        <translation>Espacio de trabajo</translation>
-    </message>
-    <message>
-        <location filename="../src/MainWindow.cpp" line="342"/>
-        <source>History</source>
-        <translation>Historial</translation>
-    </message>
-    <message>
-        <location filename="../src/MainWindow.cpp" line="345"/>
-        <source>File Browser</source>
-        <translation>Explorador de archivos</translation>
-    </message>
-    <message>
-        <location filename="../src/MainWindow.cpp" line="349"/>
-        <source>Open New Editor Window</source>
-        <translation>Abrir nueva ventana de editor</translation>
-    </message>
-    <message>
-        <location filename="../src/MainWindow.cpp" line="352"/>
-        <source>Load</source>
-        <translation>Cargar</translation>
-    </message>
-    <message>
-        <location filename="../src/MainWindow.cpp" line="353"/>
-        <source>Save</source>
-        <translation>Guardar</translation>
-    </message>
-    <message>
-        <location filename="../src/MainWindow.cpp" line="355"/>
-        <source>Clear</source>
-        <translation>Limpiar</translation>
-    </message>
-    <message>
-        <location filename="../src/MainWindow.cpp" line="357"/>
-        <source>Community</source>
-        <translation>Comunidad</translation>
-    </message>
-    <message>
-        <location filename="../src/MainWindow.cpp" line="358"/>
-        <source>Report Bug</source>
-        <translation>Reportar error de software/Bug</translation>
-    </message>
-    <message>
-        <location filename="../src/MainWindow.cpp" line="359"/>
-        <source>Agora</source>
-        <translation>Ãgora</translation>
-    </message>
-    <message>
-        <location filename="../src/MainWindow.cpp" line="360"/>
-        <source>Octave Forge</source>
-        <translation>Octave Forge</translation>
-    </message>
-    <message>
-        <location filename="../src/MainWindow.cpp" line="363"/>
-        <source>About Qt</source>
-        <translation>Acerca de Qt</translation>
-    </message>
-</context>
-<context>
-    <name>SettingsDialog</name>
-    <message>
-        <location filename="../src/SettingsDialog.ui" line="29"/>
-        <source>Settings</source>
-        <translation>Configuración</translation>
-    </message>
-    <message>
-        <location filename="../src/SettingsDialog.ui" line="39"/>
-        <source>Chat</source>
-        <translation>Chat/conversación instantanea</translation>
-    </message>
-    <message>
-        <location filename="../src/SettingsDialog.ui" line="47"/>
-        <source>Connect to #octave on startup</source>
-        <translation>Conectar a #octave en el arranque</translation>
-    </message>
-    <message>
-        <location filename="../src/SettingsDialog.ui" line="57"/>
-        <source>Show message of the day</source>
-        <translation>Mostrar mensaje del día</translation>
-    </message>
-    <message>
-        <location filename="../src/SettingsDialog.ui" line="64"/>
-        <source>Show topic</source>
-        <translation>Mostrar tema</translation>
-    </message>
-    <message>
-        <location filename="../src/SettingsDialog.ui" line="71"/>
-        <source>Automatically identify on NickServ</source>
-        <translation>Identificar automáticamente el NickServ</translation>
-    </message>
-    <message>
-        <location filename="../src/SettingsDialog.ui" line="78"/>
-        <source>Warning: Your password will be stored in ~/.octavegui in human-readable format. Do not enter your password if you worry about security issues.</source>
-        <translatorcomment>Advertencia: La contraseña se guarda en ~ / octavegui en formato legible. No introduzca su contraseña en caso de que le preocupen los aspectos de seguridad.</translatorcomment>
-        <translation></translation>
-    </message>
-    <message>
-        <location filename="../src/SettingsDialog.ui" line="103"/>
-        <location filename="../src/SettingsDialog.ui" line="311"/>
-        <source>Password:</source>
-        <translation>Contraseña:</translation>
-    </message>
-    <message>
-        <location filename="../src/SettingsDialog.ui" line="125"/>
-        <source>Editor</source>
-        <translation>Editor</translation>
-    </message>
-    <message>
-        <location filename="../src/SettingsDialog.ui" line="133"/>
-        <source>Use custom file editor:</source>
-        <translation>Usar editor de archivos personalizados:</translation>
-    </message>
-    <message>
-        <location filename="../src/SettingsDialog.ui" line="143"/>
-        <source>emacs</source>
-        <translation>emacs</translation>
-    </message>
-    <message>
-        <location filename="../src/SettingsDialog.ui" line="166"/>
-        <source>File Browser</source>
-        <translation>Explorador de archivos</translation>
-    </message>
-    <message>
-        <location filename="../src/SettingsDialog.ui" line="172"/>
-        <source>Show filenames</source>
-        <translation>Mostrar nombres de archivos</translation>
-    </message>
-    <message>
-        <location filename="../src/SettingsDialog.ui" line="179"/>
-        <source>Show file size</source>
-        <translation>Mostrar tamaño de archivo</translation>
-    </message>
-    <message>
-        <location filename="../src/SettingsDialog.ui" line="186"/>
-        <source>Show file type</source>
-        <translation>Mostrar tipo de archivo</translation>
-    </message>
-    <message>
-        <location filename="../src/SettingsDialog.ui" line="193"/>
-        <source>Show date of last modification</source>
-        <translation>Mostrar fecha de la última modificación</translation>
-    </message>
-    <message>
-        <location filename="../src/SettingsDialog.ui" line="200"/>
-        <source>Show hidden files</source>
-        <translation>Mostrar archivos ocultos</translation>
-    </message>
-    <message>
-        <location filename="../src/SettingsDialog.ui" line="207"/>
-        <source>Alternating row colors</source>
-        <translation>Colores alternos de filas</translation>
-    </message>
-    <message>
-        <location filename="../src/SettingsDialog.ui" line="215"/>
-        <source>Network</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../src/SettingsDialog.ui" line="221"/>
-        <source>Use proxy server</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../src/SettingsDialog.ui" line="233"/>
-        <source>Proxy Type:</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../src/SettingsDialog.ui" line="244"/>
-        <source>HttpProxy</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../src/SettingsDialog.ui" line="249"/>
-        <source>Socks5Proxy</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../src/SettingsDialog.ui" line="260"/>
-        <source>Hostname:</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../src/SettingsDialog.ui" line="277"/>
-        <source>Port:</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../src/SettingsDialog.ui" line="294"/>
-        <source>Username:</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../src/SettingsDialog.ui" line="339"/>
-        <source>Reset to defaults</source>
-        <translation>Restaurar los valores predeterminados</translation>
-    </message>
-    <message>
-        <location filename="../src/SettingsDialog.ui" line="362"/>
-        <source>Export</source>
-        <translation>Exportar</translation>
-    </message>
-    <message>
-        <location filename="../src/SettingsDialog.ui" line="372"/>
-        <source>Import</source>
-        <translation>Importar</translation>
-    </message>
-</context>
-<context>
-    <name>VariablesDockWidget</name>
-    <message>
-        <location filename="../src/VariablesDockWidget.cpp" line="36"/>
-        <source>Workspace</source>
-        <translation>Espacio de trabajo</translation>
-    </message>
-    <message>
-        <location filename="../src/VariablesDockWidget.cpp" line="40"/>
-        <source>Name</source>
-        <translation>Nombre</translation>
-    </message>
-    <message>
-        <location filename="../src/VariablesDockWidget.cpp" line="40"/>
-        <source>Type</source>
-        <translation>Tipo</translation>
-    </message>
-    <message>
-        <location filename="../src/VariablesDockWidget.cpp" line="40"/>
-        <source>Value</source>
-        <translation>Valor</translation>
-    </message>
-    <message>
-        <location filename="../src/VariablesDockWidget.cpp" line="52"/>
-        <source>Local</source>
-        <translation>Local</translation>
-    </message>
-    <message>
-        <location filename="../src/VariablesDockWidget.cpp" line="56"/>
-        <source>Global</source>
-        <translation>Global</translation>
-    </message>
-    <message>
-        <location filename="../src/VariablesDockWidget.cpp" line="60"/>
-        <source>Persistent</source>
-        <translation>Persistente</translation>
-    </message>
-    <message>
-        <location filename="../src/VariablesDockWidget.cpp" line="64"/>
-        <source>Hidden</source>
-        <translation>Oculto</translation>
-    </message>
-</context>
-</TS>
--- a/gui/languages/generic.qm	Sat Aug 18 16:23:39 2012 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1 +0,0 @@
-<¸dÊÍ!¿`¡½Ý
\ No newline at end of file
--- a/gui/languages/generic.ts	Sat Aug 18 16:23:39 2012 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,567 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE TS>
-<TS version="2.0">
-<context>
-    <name>FileEditorMdiSubWindow</name>
-    <message>
-        <location filename="../src/FileEditorMdiSubWindow.cpp" line="114"/>
-        <location filename="../src/FileEditorMdiSubWindow.cpp" line="207"/>
-        <source>File Editor</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../src/FileEditorMdiSubWindow.cpp" line="115"/>
-        <source>Cannot read file %1:
-%2.</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../src/FileEditorMdiSubWindow.cpp" line="127"/>
-        <source>File loaded.</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../src/FileEditorMdiSubWindow.cpp" line="153"/>
-        <source>Do you want to save the current file
-%1 ?</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../src/FileEditorMdiSubWindow.cpp" line="208"/>
-        <source>Cannot write file %1:
-%2.</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../src/FileEditorMdiSubWindow.cpp" line="220"/>
-        <source>File %1 saved</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../src/FileEditorMdiSubWindow.cpp" line="383"/>
-        <source>&amp;Close File</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../src/FileEditorMdiSubWindow.cpp" line="386"/>
-        <source>&amp;New File</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../src/FileEditorMdiSubWindow.cpp" line="389"/>
-        <source>&amp;Open File</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../src/FileEditorMdiSubWindow.cpp" line="392"/>
-        <source>&amp;Save File</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../src/FileEditorMdiSubWindow.cpp" line="395"/>
-        <source>Save File &amp;As</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../src/FileEditorMdiSubWindow.cpp" line="398"/>
-        <source>&amp;Undo</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../src/FileEditorMdiSubWindow.cpp" line="401"/>
-        <source>&amp;Redo</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../src/FileEditorMdiSubWindow.cpp" line="402"/>
-        <source>&amp;Copy</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../src/FileEditorMdiSubWindow.cpp" line="403"/>
-        <source>Cu&amp;t</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../src/FileEditorMdiSubWindow.cpp" line="404"/>
-        <source>&amp;Paste</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../src/FileEditorMdiSubWindow.cpp" line="405"/>
-        <source>&amp;Next Bookmark</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../src/FileEditorMdiSubWindow.cpp" line="406"/>
-        <source>Pre&amp;vious Bookmark</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../src/FileEditorMdiSubWindow.cpp" line="407"/>
-        <source>Toggle &amp;Bookmark</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../src/FileEditorMdiSubWindow.cpp" line="410"/>
-        <source>&amp;Run File</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../src/FileEditorMdiSubWindow.cpp" line="449"/>
-        <source>&amp;File</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../src/FileEditorMdiSubWindow.cpp" line="457"/>
-        <source>&amp;Edit</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../src/FileEditorMdiSubWindow.cpp" line="469"/>
-        <source>&amp;Run</source>
-        <translation type="unfinished"></translation>
-    </message>
-</context>
-<context>
-    <name>FilesDockWidget</name>
-    <message>
-        <location filename="../src/FilesDockWidget.cpp" line="32"/>
-        <source>Current Directory</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../src/FilesDockWidget.cpp" line="46"/>
-        <source>Move up one directory.</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../src/FilesDockWidget.cpp" line="49"/>
-        <source>Enter the path or filename.</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../src/FilesDockWidget.cpp" line="78"/>
-        <source>Doubleclick a file to open it.</source>
-        <translation type="unfinished"></translation>
-    </message>
-</context>
-<context>
-    <name>HistoryDockWidget</name>
-    <message>
-        <location filename="../src/HistoryDockWidget.cpp" line="36"/>
-        <source>Doubleclick a command to transfer it to the terminal.</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../src/HistoryDockWidget.cpp" line="38"/>
-        <source>Enter text to filter the command history.</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../src/HistoryDockWidget.cpp" line="41"/>
-        <source>Command History</source>
-        <translation type="unfinished"></translation>
-    </message>
-</context>
-<context>
-    <name>LexerOctaveGui</name>
-    <message>
-        <location filename="../src/lexer/lexeroctavegui.cpp" line="111"/>
-        <source>Default</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../src/lexer/lexeroctavegui.cpp" line="113"/>
-        <source>Comment</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../src/lexer/lexeroctavegui.cpp" line="115"/>
-        <source>Command</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../src/lexer/lexeroctavegui.cpp" line="117"/>
-        <source>Number</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../src/lexer/lexeroctavegui.cpp" line="119"/>
-        <source>Keyword</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../src/lexer/lexeroctavegui.cpp" line="121"/>
-        <source>Single-quoted string</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../src/lexer/lexeroctavegui.cpp" line="123"/>
-        <source>Operator</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../src/lexer/lexeroctavegui.cpp" line="125"/>
-        <source>Identifier</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../src/lexer/lexeroctavegui.cpp" line="127"/>
-        <source>Double-quoted string</source>
-        <translation type="unfinished"></translation>
-    </message>
-</context>
-<context>
-    <name>MainWindow</name>
-    <message>
-        <location filename="../src/MainWindow.cpp" line="47"/>
-        <source>Opening file.</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../src/MainWindow.cpp" line="124"/>
-        <source>Save Workspace</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../src/MainWindow.cpp" line="134"/>
-        <source>Load Workspace</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../src/MainWindow.cpp" line="226"/>
-        <location filename="../src/MainWindow.cpp" line="362"/>
-        <source>About Octave</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../src/MainWindow.cpp" line="238"/>
-        <source>Saving data and shutting down.</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../src/MainWindow.cpp" line="276"/>
-        <source>View the variables in the active workspace.</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../src/MainWindow.cpp" line="278"/>
-        <source>Browse and search the command history.</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../src/MainWindow.cpp" line="280"/>
-        <source>Browse your files.</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../src/MainWindow.cpp" line="294"/>
-        <source>Terminal</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../src/MainWindow.cpp" line="298"/>
-        <source>Enter your commands into the Octave terminal.</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../src/MainWindow.cpp" line="307"/>
-        <source>Documentation</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../src/MainWindow.cpp" line="311"/>
-        <source>Browse the Octave documentation for help.</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../src/MainWindow.cpp" line="320"/>
-        <source>Chat</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../src/MainWindow.cpp" line="323"/>
-        <source>Instantly chat with other Octave users for help.</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../src/MainWindow.cpp" line="330"/>
-        <source>Octave</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../src/MainWindow.cpp" line="331"/>
-        <source>Settings</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../src/MainWindow.cpp" line="333"/>
-        <source>Exit</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../src/MainWindow.cpp" line="335"/>
-        <source>Interface</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../src/MainWindow.cpp" line="337"/>
-        <source>Align Windows</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../src/MainWindow.cpp" line="339"/>
-        <location filename="../src/MainWindow.cpp" line="351"/>
-        <source>Workspace</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../src/MainWindow.cpp" line="342"/>
-        <source>History</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../src/MainWindow.cpp" line="345"/>
-        <source>File Browser</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../src/MainWindow.cpp" line="349"/>
-        <source>Open New Editor Window</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../src/MainWindow.cpp" line="352"/>
-        <source>Load</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../src/MainWindow.cpp" line="353"/>
-        <source>Save</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../src/MainWindow.cpp" line="355"/>
-        <source>Clear</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../src/MainWindow.cpp" line="357"/>
-        <source>Community</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../src/MainWindow.cpp" line="358"/>
-        <source>Report Bug</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../src/MainWindow.cpp" line="359"/>
-        <source>Agora</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../src/MainWindow.cpp" line="360"/>
-        <source>Octave Forge</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../src/MainWindow.cpp" line="363"/>
-        <source>About Qt</source>
-        <translation type="unfinished"></translation>
-    </message>
-</context>
-<context>
-    <name>SettingsDialog</name>
-    <message>
-        <location filename="../src/SettingsDialog.ui" line="29"/>
-        <source>Settings</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../src/SettingsDialog.ui" line="39"/>
-        <source>Chat</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../src/SettingsDialog.ui" line="47"/>
-        <source>Connect to #octave on startup</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../src/SettingsDialog.ui" line="57"/>
-        <source>Show message of the day</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../src/SettingsDialog.ui" line="64"/>
-        <source>Show topic</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../src/SettingsDialog.ui" line="71"/>
-        <source>Automatically identify on NickServ</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../src/SettingsDialog.ui" line="78"/>
-        <source>Warning: Your password will be stored in ~/.octavegui in human-readable format. Do not enter your password if you worry about security issues.</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../src/SettingsDialog.ui" line="103"/>
-        <location filename="../src/SettingsDialog.ui" line="311"/>
-        <source>Password:</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../src/SettingsDialog.ui" line="125"/>
-        <source>Editor</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../src/SettingsDialog.ui" line="133"/>
-        <source>Use custom file editor:</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../src/SettingsDialog.ui" line="143"/>
-        <source>emacs</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../src/SettingsDialog.ui" line="166"/>
-        <source>File Browser</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../src/SettingsDialog.ui" line="172"/>
-        <source>Show filenames</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../src/SettingsDialog.ui" line="179"/>
-        <source>Show file size</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../src/SettingsDialog.ui" line="186"/>
-        <source>Show file type</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../src/SettingsDialog.ui" line="193"/>
-        <source>Show date of last modification</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../src/SettingsDialog.ui" line="200"/>
-        <source>Show hidden files</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../src/SettingsDialog.ui" line="207"/>
-        <source>Alternating row colors</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../src/SettingsDialog.ui" line="215"/>
-        <source>Network</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../src/SettingsDialog.ui" line="221"/>
-        <source>Use proxy server</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../src/SettingsDialog.ui" line="233"/>
-        <source>Proxy Type:</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../src/SettingsDialog.ui" line="244"/>
-        <source>HttpProxy</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../src/SettingsDialog.ui" line="249"/>
-        <source>Socks5Proxy</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../src/SettingsDialog.ui" line="260"/>
-        <source>Hostname:</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../src/SettingsDialog.ui" line="277"/>
-        <source>Port:</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../src/SettingsDialog.ui" line="294"/>
-        <source>Username:</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../src/SettingsDialog.ui" line="339"/>
-        <source>Reset to defaults</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../src/SettingsDialog.ui" line="362"/>
-        <source>Export</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../src/SettingsDialog.ui" line="372"/>
-        <source>Import</source>
-        <translation type="unfinished"></translation>
-    </message>
-</context>
-<context>
-    <name>VariablesDockWidget</name>
-    <message>
-        <location filename="../src/VariablesDockWidget.cpp" line="36"/>
-        <source>Workspace</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../src/VariablesDockWidget.cpp" line="40"/>
-        <source>Name</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../src/VariablesDockWidget.cpp" line="40"/>
-        <source>Type</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../src/VariablesDockWidget.cpp" line="40"/>
-        <source>Value</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../src/VariablesDockWidget.cpp" line="52"/>
-        <source>Local</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../src/VariablesDockWidget.cpp" line="56"/>
-        <source>Global</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../src/VariablesDockWidget.cpp" line="60"/>
-        <source>Persistent</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../src/VariablesDockWidget.cpp" line="64"/>
-        <source>Hidden</source>
-        <translation type="unfinished"></translation>
-    </message>
-</context>
-</TS>
Binary file gui/languages/pt-br.qm has changed
--- a/gui/languages/pt-br.ts	Sat Aug 18 16:23:39 2012 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,571 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE TS>
-<TS version="2.0" language="pt_BR" sourcelanguage="en">
-<context>
-    <name>FileEditorMdiSubWindow</name>
-    <message>
-        <location filename="../src/FileEditorMdiSubWindow.cpp" line="114"/>
-        <location filename="../src/FileEditorMdiSubWindow.cpp" line="207"/>
-        <source>File Editor</source>
-        <translation>Editor de Arquivos</translation>
-    </message>
-    <message>
-        <location filename="../src/FileEditorMdiSubWindow.cpp" line="115"/>
-        <source>Cannot read file %1:
-%2.</source>
-        <translation>Não foi possível ler o arquivo %1: %2.</translation>
-    </message>
-    <message>
-        <location filename="../src/FileEditorMdiSubWindow.cpp" line="127"/>
-        <source>File loaded.</source>
-        <translation>Arquivo carregado.</translation>
-    </message>
-    <message>
-        <location filename="../src/FileEditorMdiSubWindow.cpp" line="153"/>
-        <source>Do you want to save the current file
-%1 ?</source>
-        <translation>Você deseja salvar o arquivo atual %1 ?</translation>
-    </message>
-    <message>
-        <location filename="../src/FileEditorMdiSubWindow.cpp" line="208"/>
-        <source>Cannot write file %1:
-%2.</source>
-        <translation>Não foi possível escrever no arquivo %1: %2.</translation>
-    </message>
-    <message>
-        <location filename="../src/FileEditorMdiSubWindow.cpp" line="220"/>
-        <source>File %1 saved</source>
-        <translation>Arquivo %1 salvo</translation>
-    </message>
-    <message>
-        <location filename="../src/FileEditorMdiSubWindow.cpp" line="383"/>
-        <source>&amp;Close File</source>
-        <translation>&amp;Fechar Arquivo</translation>
-    </message>
-    <message>
-        <location filename="../src/FileEditorMdiSubWindow.cpp" line="386"/>
-        <source>&amp;New File</source>
-        <translation>&amp;Novo Arquivo</translation>
-    </message>
-    <message>
-        <location filename="../src/FileEditorMdiSubWindow.cpp" line="389"/>
-        <source>&amp;Open File</source>
-        <translation>&amp;Abrir Arquivo</translation>
-    </message>
-    <message>
-        <location filename="../src/FileEditorMdiSubWindow.cpp" line="392"/>
-        <source>&amp;Save File</source>
-        <translation>&amp;Salvar Arquivo</translation>
-    </message>
-    <message>
-        <location filename="../src/FileEditorMdiSubWindow.cpp" line="395"/>
-        <source>Save File &amp;As</source>
-        <translation>Salvar Arquivo &amp;Como</translation>
-    </message>
-    <message>
-        <location filename="../src/FileEditorMdiSubWindow.cpp" line="398"/>
-        <source>&amp;Undo</source>
-        <translation>&amp;Desfazer</translation>
-    </message>
-    <message>
-        <location filename="../src/FileEditorMdiSubWindow.cpp" line="401"/>
-        <source>&amp;Redo</source>
-        <translation>&amp;Refazer</translation>
-    </message>
-    <message>
-        <location filename="../src/FileEditorMdiSubWindow.cpp" line="402"/>
-        <source>&amp;Copy</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../src/FileEditorMdiSubWindow.cpp" line="403"/>
-        <source>Cu&amp;t</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../src/FileEditorMdiSubWindow.cpp" line="404"/>
-        <source>&amp;Paste</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../src/FileEditorMdiSubWindow.cpp" line="405"/>
-        <source>&amp;Next Bookmark</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../src/FileEditorMdiSubWindow.cpp" line="406"/>
-        <source>Pre&amp;vious Bookmark</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../src/FileEditorMdiSubWindow.cpp" line="407"/>
-        <source>Toggle &amp;Bookmark</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../src/FileEditorMdiSubWindow.cpp" line="410"/>
-        <source>&amp;Run File</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../src/FileEditorMdiSubWindow.cpp" line="449"/>
-        <source>&amp;File</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../src/FileEditorMdiSubWindow.cpp" line="457"/>
-        <source>&amp;Edit</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../src/FileEditorMdiSubWindow.cpp" line="469"/>
-        <source>&amp;Run</source>
-        <translation type="unfinished"></translation>
-    </message>
-</context>
-<context>
-    <name>FilesDockWidget</name>
-    <message>
-        <source>Current Folder</source>
-        <translation type="obsolete">Diretório Atual</translation>
-    </message>
-    <message>
-        <location filename="../src/FilesDockWidget.cpp" line="32"/>
-        <source>Current Directory</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../src/FilesDockWidget.cpp" line="46"/>
-        <source>Move up one directory.</source>
-        <translation>Subir um diretório.</translation>
-    </message>
-    <message>
-        <location filename="../src/FilesDockWidget.cpp" line="49"/>
-        <source>Enter the path or filename.</source>
-        <translation>Digite o caminho ou o nome do arquivo.</translation>
-    </message>
-    <message>
-        <location filename="../src/FilesDockWidget.cpp" line="78"/>
-        <source>Doubleclick a file to open it.</source>
-        <translation>Clique duas vezes num arquivo para abrí-lo.</translation>
-    </message>
-</context>
-<context>
-    <name>HistoryDockWidget</name>
-    <message>
-        <location filename="../src/HistoryDockWidget.cpp" line="36"/>
-        <source>Doubleclick a command to transfer it to the terminal.</source>
-        <translation>Clique duas vezes num comando para transferí-lo ao terminal.</translation>
-    </message>
-    <message>
-        <location filename="../src/HistoryDockWidget.cpp" line="38"/>
-        <source>Enter text to filter the command history.</source>
-        <translation>Digite um texto para filtrar o hitórico de comandos.</translation>
-    </message>
-    <message>
-        <location filename="../src/HistoryDockWidget.cpp" line="41"/>
-        <source>Command History</source>
-        <translation>Histórico de Comandos</translation>
-    </message>
-</context>
-<context>
-    <name>LexerOctaveGui</name>
-    <message>
-        <location filename="../src/lexer/lexeroctavegui.cpp" line="111"/>
-        <source>Default</source>
-        <translation>Padrão</translation>
-    </message>
-    <message>
-        <location filename="../src/lexer/lexeroctavegui.cpp" line="113"/>
-        <source>Comment</source>
-        <translation>Comentário</translation>
-    </message>
-    <message>
-        <location filename="../src/lexer/lexeroctavegui.cpp" line="115"/>
-        <source>Command</source>
-        <translation>Comando</translation>
-    </message>
-    <message>
-        <location filename="../src/lexer/lexeroctavegui.cpp" line="117"/>
-        <source>Number</source>
-        <translation>Número</translation>
-    </message>
-    <message>
-        <location filename="../src/lexer/lexeroctavegui.cpp" line="119"/>
-        <source>Keyword</source>
-        <translation>Palavra-Chave</translation>
-    </message>
-    <message>
-        <location filename="../src/lexer/lexeroctavegui.cpp" line="121"/>
-        <source>Single-quoted string</source>
-        <translation>String com aspas simples</translation>
-    </message>
-    <message>
-        <location filename="../src/lexer/lexeroctavegui.cpp" line="123"/>
-        <source>Operator</source>
-        <translation>Operador</translation>
-    </message>
-    <message>
-        <location filename="../src/lexer/lexeroctavegui.cpp" line="125"/>
-        <source>Identifier</source>
-        <translation>Identificador</translation>
-    </message>
-    <message>
-        <location filename="../src/lexer/lexeroctavegui.cpp" line="127"/>
-        <source>Double-quoted string</source>
-        <translation>String com aspas duplas</translation>
-    </message>
-</context>
-<context>
-    <name>MainWindow</name>
-    <message>
-        <location filename="../src/MainWindow.cpp" line="47"/>
-        <source>Opening file.</source>
-        <translation>Abrindo arquivo.</translation>
-    </message>
-    <message>
-        <location filename="../src/MainWindow.cpp" line="124"/>
-        <source>Save Workspace</source>
-        <translation>Salvar ambiente de trabalho</translation>
-    </message>
-    <message>
-        <location filename="../src/MainWindow.cpp" line="134"/>
-        <source>Load Workspace</source>
-        <translation>Carregar ambiente de trabalho</translation>
-    </message>
-    <message>
-        <location filename="../src/MainWindow.cpp" line="226"/>
-        <location filename="../src/MainWindow.cpp" line="362"/>
-        <source>About Octave</source>
-        <translation>Sobre o Octave</translation>
-    </message>
-    <message>
-        <location filename="../src/MainWindow.cpp" line="238"/>
-        <source>Saving data and shutting down.</source>
-        <translation>Salvando dados e encerrando a sessão.</translation>
-    </message>
-    <message>
-        <location filename="../src/MainWindow.cpp" line="276"/>
-        <source>View the variables in the active workspace.</source>
-        <translation>Visualizar variáveis no ambiente de trabalho.</translation>
-    </message>
-    <message>
-        <location filename="../src/MainWindow.cpp" line="278"/>
-        <source>Browse and search the command history.</source>
-        <translation>Pesquise no histórico de comandos.</translation>
-    </message>
-    <message>
-        <location filename="../src/MainWindow.cpp" line="280"/>
-        <source>Browse your files.</source>
-        <translation>Procure seus arquivos.</translation>
-    </message>
-    <message>
-        <location filename="../src/MainWindow.cpp" line="294"/>
-        <source>Terminal</source>
-        <translation>Terminal</translation>
-    </message>
-    <message>
-        <location filename="../src/MainWindow.cpp" line="298"/>
-        <source>Enter your commands into the Octave terminal.</source>
-        <translation>Digite seus comandos no terminal do Octave.</translation>
-    </message>
-    <message>
-        <location filename="../src/MainWindow.cpp" line="307"/>
-        <source>Documentation</source>
-        <translation>Documentação</translation>
-    </message>
-    <message>
-        <location filename="../src/MainWindow.cpp" line="311"/>
-        <source>Browse the Octave documentation for help.</source>
-        <translation>Procure na documentação do Octave.</translation>
-    </message>
-    <message>
-        <location filename="../src/MainWindow.cpp" line="320"/>
-        <source>Chat</source>
-        <translation>Chat</translation>
-    </message>
-    <message>
-        <location filename="../src/MainWindow.cpp" line="323"/>
-        <source>Instantly chat with other Octave users for help.</source>
-        <translation>Converse instantaneamente com outros usuários do Octave para pedir ajuda.</translation>
-    </message>
-    <message>
-        <location filename="../src/MainWindow.cpp" line="330"/>
-        <source>Octave</source>
-        <translation>Octave</translation>
-    </message>
-    <message>
-        <location filename="../src/MainWindow.cpp" line="331"/>
-        <source>Settings</source>
-        <translation>Configurações</translation>
-    </message>
-    <message>
-        <location filename="../src/MainWindow.cpp" line="333"/>
-        <source>Exit</source>
-        <translation>Sair</translation>
-    </message>
-    <message>
-        <location filename="../src/MainWindow.cpp" line="335"/>
-        <source>Interface</source>
-        <translation>Interface</translation>
-    </message>
-    <message>
-        <location filename="../src/MainWindow.cpp" line="337"/>
-        <source>Align Windows</source>
-        <translation>Alinhar Janelas</translation>
-    </message>
-    <message>
-        <location filename="../src/MainWindow.cpp" line="339"/>
-        <location filename="../src/MainWindow.cpp" line="351"/>
-        <source>Workspace</source>
-        <translation>Ambiente de trabalho</translation>
-    </message>
-    <message>
-        <location filename="../src/MainWindow.cpp" line="342"/>
-        <source>History</source>
-        <translation>Histórico</translation>
-    </message>
-    <message>
-        <location filename="../src/MainWindow.cpp" line="345"/>
-        <source>File Browser</source>
-        <translation>Navegador de Arquivos</translation>
-    </message>
-    <message>
-        <location filename="../src/MainWindow.cpp" line="349"/>
-        <source>Open New Editor Window</source>
-        <translation>Abrir nova janela de edição</translation>
-    </message>
-    <message>
-        <location filename="../src/MainWindow.cpp" line="352"/>
-        <source>Load</source>
-        <translation>Carregar</translation>
-    </message>
-    <message>
-        <location filename="../src/MainWindow.cpp" line="353"/>
-        <source>Save</source>
-        <translation>Salvar</translation>
-    </message>
-    <message>
-        <location filename="../src/MainWindow.cpp" line="355"/>
-        <source>Clear</source>
-        <translation>Limpar</translation>
-    </message>
-    <message>
-        <location filename="../src/MainWindow.cpp" line="357"/>
-        <source>Community</source>
-        <translation>Comunidade</translation>
-    </message>
-    <message>
-        <location filename="../src/MainWindow.cpp" line="358"/>
-        <source>Report Bug</source>
-        <translation>Reportar Bug</translation>
-    </message>
-    <message>
-        <location filename="../src/MainWindow.cpp" line="359"/>
-        <source>Agora</source>
-        <translation>Agora</translation>
-    </message>
-    <message>
-        <location filename="../src/MainWindow.cpp" line="360"/>
-        <source>Octave Forge</source>
-        <translation>Octave Forge</translation>
-    </message>
-    <message>
-        <location filename="../src/MainWindow.cpp" line="363"/>
-        <source>About Qt</source>
-        <translation>Sobre o Qt</translation>
-    </message>
-</context>
-<context>
-    <name>SettingsDialog</name>
-    <message>
-        <location filename="../src/SettingsDialog.ui" line="29"/>
-        <source>Settings</source>
-        <translation>Configurações</translation>
-    </message>
-    <message>
-        <location filename="../src/SettingsDialog.ui" line="39"/>
-        <source>Chat</source>
-        <translation>Chat</translation>
-    </message>
-    <message>
-        <location filename="../src/SettingsDialog.ui" line="47"/>
-        <source>Connect to #octave on startup</source>
-        <translation>Conectar ao #octave ao iniciar</translation>
-    </message>
-    <message>
-        <location filename="../src/SettingsDialog.ui" line="57"/>
-        <source>Show message of the day</source>
-        <translation>Mostrar mensagem do dia</translation>
-    </message>
-    <message>
-        <location filename="../src/SettingsDialog.ui" line="64"/>
-        <source>Show topic</source>
-        <translation>Mostrar tópico</translation>
-    </message>
-    <message>
-        <location filename="../src/SettingsDialog.ui" line="71"/>
-        <source>Automatically identify on NickServ</source>
-        <translation>Identificar-se automaticamente com o NickServ</translation>
-    </message>
-    <message>
-        <location filename="../src/SettingsDialog.ui" line="78"/>
-        <source>Warning: Your password will be stored in ~/.octavegui in human-readable format. Do not enter your password if you worry about security issues.</source>
-        <translation>Aviso: Sua senha será salva em ~/.octavegui em um formato legível. Não digite sua senha se você tem problemas com segurança.</translation>
-    </message>
-    <message>
-        <location filename="../src/SettingsDialog.ui" line="103"/>
-        <location filename="../src/SettingsDialog.ui" line="311"/>
-        <source>Password:</source>
-        <translation>Senha:</translation>
-    </message>
-    <message>
-        <location filename="../src/SettingsDialog.ui" line="125"/>
-        <source>Editor</source>
-        <translation>Editor</translation>
-    </message>
-    <message>
-        <location filename="../src/SettingsDialog.ui" line="133"/>
-        <source>Use custom file editor:</source>
-        <translation>Usar editor de arquivos personalizado:</translation>
-    </message>
-    <message>
-        <location filename="../src/SettingsDialog.ui" line="143"/>
-        <source>emacs</source>
-        <translation>emacs</translation>
-    </message>
-    <message>
-        <location filename="../src/SettingsDialog.ui" line="166"/>
-        <source>File Browser</source>
-        <translation>Navegador de Arquivos</translation>
-    </message>
-    <message>
-        <location filename="../src/SettingsDialog.ui" line="172"/>
-        <source>Show filenames</source>
-        <translation>Mostrar nomes de arquivo</translation>
-    </message>
-    <message>
-        <location filename="../src/SettingsDialog.ui" line="179"/>
-        <source>Show file size</source>
-        <translation>Mostrar tamanho do arquivo</translation>
-    </message>
-    <message>
-        <location filename="../src/SettingsDialog.ui" line="186"/>
-        <source>Show file type</source>
-        <translation>Mostrar tipo do arquivo</translation>
-    </message>
-    <message>
-        <location filename="../src/SettingsDialog.ui" line="193"/>
-        <source>Show date of last modification</source>
-        <translation>Mostrar data de última modificação</translation>
-    </message>
-    <message>
-        <location filename="../src/SettingsDialog.ui" line="200"/>
-        <source>Show hidden files</source>
-        <translation>Mostrar arquivos ocultos</translation>
-    </message>
-    <message>
-        <location filename="../src/SettingsDialog.ui" line="207"/>
-        <source>Alternating row colors</source>
-        <translation>Alternar cores das linhas</translation>
-    </message>
-    <message>
-        <location filename="../src/SettingsDialog.ui" line="215"/>
-        <source>Network</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../src/SettingsDialog.ui" line="221"/>
-        <source>Use proxy server</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../src/SettingsDialog.ui" line="233"/>
-        <source>Proxy Type:</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../src/SettingsDialog.ui" line="244"/>
-        <source>HttpProxy</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../src/SettingsDialog.ui" line="249"/>
-        <source>Socks5Proxy</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../src/SettingsDialog.ui" line="260"/>
-        <source>Hostname:</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../src/SettingsDialog.ui" line="277"/>
-        <source>Port:</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../src/SettingsDialog.ui" line="294"/>
-        <source>Username:</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../src/SettingsDialog.ui" line="339"/>
-        <source>Reset to defaults</source>
-        <translation>Resetar ao padrão</translation>
-    </message>
-    <message>
-        <location filename="../src/SettingsDialog.ui" line="362"/>
-        <source>Export</source>
-        <translation>Exportar</translation>
-    </message>
-    <message>
-        <location filename="../src/SettingsDialog.ui" line="372"/>
-        <source>Import</source>
-        <translation>Importar</translation>
-    </message>
-</context>
-<context>
-    <name>VariablesDockWidget</name>
-    <message>
-        <location filename="../src/VariablesDockWidget.cpp" line="36"/>
-        <source>Workspace</source>
-        <translation>Ambiente de trabalho</translation>
-    </message>
-    <message>
-        <location filename="../src/VariablesDockWidget.cpp" line="40"/>
-        <source>Name</source>
-        <translation>Nome</translation>
-    </message>
-    <message>
-        <location filename="../src/VariablesDockWidget.cpp" line="40"/>
-        <source>Type</source>
-        <translation>Tipo</translation>
-    </message>
-    <message>
-        <location filename="../src/VariablesDockWidget.cpp" line="40"/>
-        <source>Value</source>
-        <translation>Valor</translation>
-    </message>
-    <message>
-        <location filename="../src/VariablesDockWidget.cpp" line="52"/>
-        <source>Local</source>
-        <translation>Local</translation>
-    </message>
-    <message>
-        <location filename="../src/VariablesDockWidget.cpp" line="56"/>
-        <source>Global</source>
-        <translation>Global</translation>
-    </message>
-    <message>
-        <location filename="../src/VariablesDockWidget.cpp" line="60"/>
-        <source>Persistent</source>
-        <translation>Persistente</translation>
-    </message>
-    <message>
-        <location filename="../src/VariablesDockWidget.cpp" line="64"/>
-        <source>Hidden</source>
-        <translation>Oculto</translation>
-    </message>
-</context>
-</TS>
Binary file gui/languages/ru-ru.qm has changed
--- a/gui/languages/ru-ru.ts	Sat Aug 18 16:23:39 2012 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,574 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE TS>
-<TS version="2.0" language="ru_RU">
-<context>
-    <name>FileEditorMdiSubWindow</name>
-    <message>
-        <location filename="../src/FileEditorMdiSubWindow.cpp" line="114"/>
-        <location filename="../src/FileEditorMdiSubWindow.cpp" line="207"/>
-        <source>File Editor</source>
-        <translation>Редактор файлов</translation>
-    </message>
-    <message>
-        <location filename="../src/FileEditorMdiSubWindow.cpp" line="115"/>
-        <source>Cannot read file %1:
-%2.</source>
-        <translation>Ðе удалоÑÑŒ прочитать файл %1:
-%2.</translation>
-    </message>
-    <message>
-        <location filename="../src/FileEditorMdiSubWindow.cpp" line="127"/>
-        <source>File loaded.</source>
-        <translation>Файл загружен.</translation>
-    </message>
-    <message>
-        <location filename="../src/FileEditorMdiSubWindow.cpp" line="153"/>
-        <source>Do you want to save the current file
-%1 ?</source>
-        <translation>Сохранить текущий файл
-%1?</translation>
-    </message>
-    <message>
-        <location filename="../src/FileEditorMdiSubWindow.cpp" line="208"/>
-        <source>Cannot write file %1:
-%2.</source>
-        <translation>Ðе удалоÑÑŒ Ñохранить файл %1:
-%2.</translation>
-    </message>
-    <message>
-        <location filename="../src/FileEditorMdiSubWindow.cpp" line="220"/>
-        <source>File %1 saved</source>
-        <translation>Файл %1 Ñохранён</translation>
-    </message>
-    <message>
-        <location filename="../src/FileEditorMdiSubWindow.cpp" line="383"/>
-        <source>&amp;Close File</source>
-        <translation>&amp;Закрыть</translation>
-    </message>
-    <message>
-        <location filename="../src/FileEditorMdiSubWindow.cpp" line="386"/>
-        <source>&amp;New File</source>
-        <translation>Созд&amp;ать</translation>
-    </message>
-    <message>
-        <location filename="../src/FileEditorMdiSubWindow.cpp" line="389"/>
-        <source>&amp;Open File</source>
-        <translation>&amp;Открыть</translation>
-    </message>
-    <message>
-        <location filename="../src/FileEditorMdiSubWindow.cpp" line="392"/>
-        <source>&amp;Save File</source>
-        <translation>&amp;Сохранить</translation>
-    </message>
-    <message>
-        <location filename="../src/FileEditorMdiSubWindow.cpp" line="395"/>
-        <source>Save File &amp;As</source>
-        <translation>Сохранить &amp;как</translation>
-    </message>
-    <message>
-        <location filename="../src/FileEditorMdiSubWindow.cpp" line="398"/>
-        <source>&amp;Undo</source>
-        <translation>О&amp;тменить</translation>
-    </message>
-    <message>
-        <location filename="../src/FileEditorMdiSubWindow.cpp" line="401"/>
-        <source>&amp;Redo</source>
-        <translation>&amp;Повторить</translation>
-    </message>
-    <message>
-        <location filename="../src/FileEditorMdiSubWindow.cpp" line="402"/>
-        <source>&amp;Copy</source>
-        <translation>&amp;Копировать</translation>
-    </message>
-    <message>
-        <location filename="../src/FileEditorMdiSubWindow.cpp" line="403"/>
-        <source>Cu&amp;t</source>
-        <translation>Вы&amp;резать</translation>
-    </message>
-    <message>
-        <location filename="../src/FileEditorMdiSubWindow.cpp" line="404"/>
-        <source>&amp;Paste</source>
-        <translation>&amp;Ð’Ñтавить</translation>
-    </message>
-    <message>
-        <location filename="../src/FileEditorMdiSubWindow.cpp" line="405"/>
-        <source>&amp;Next Bookmark</source>
-        <translation>С&amp;Ð»ÐµÐ´ÑƒÑŽÑ‰Ð°Ñ Ð·Ð°ÐºÐ»Ð°Ð´ÐºÐ°</translation>
-    </message>
-    <message>
-        <location filename="../src/FileEditorMdiSubWindow.cpp" line="406"/>
-        <source>Pre&amp;vious Bookmark</source>
-        <translation>Пр&amp;ÐµÐ´Ñ‹Ð´ÑƒÑ‰Ð°Ñ Ð·Ð°ÐºÐ»Ð°Ð´ÐºÐ°</translation>
-    </message>
-    <message>
-        <location filename="../src/FileEditorMdiSubWindow.cpp" line="407"/>
-        <source>Toggle &amp;Bookmark</source>
-        <translation>&amp;УÑтановить/ÑнÑÑ‚ÑŒ закладку</translation>
-    </message>
-    <message>
-        <location filename="../src/FileEditorMdiSubWindow.cpp" line="410"/>
-        <source>&amp;Run File</source>
-        <translation>&amp;ЗапуÑтить файл</translation>
-    </message>
-    <message>
-        <location filename="../src/FileEditorMdiSubWindow.cpp" line="449"/>
-        <source>&amp;File</source>
-        <translation>&amp;Файл</translation>
-    </message>
-    <message>
-        <location filename="../src/FileEditorMdiSubWindow.cpp" line="457"/>
-        <source>&amp;Edit</source>
-        <translation>&amp;Правка</translation>
-    </message>
-    <message>
-        <location filename="../src/FileEditorMdiSubWindow.cpp" line="469"/>
-        <source>&amp;Run</source>
-        <translation>&amp;ЗапуÑк</translation>
-    </message>
-</context>
-<context>
-    <name>FilesDockWidget</name>
-    <message>
-        <source>Current Folder</source>
-        <translation type="obsolete">Текущий каталог</translation>
-    </message>
-    <message>
-        <location filename="../src/FilesDockWidget.cpp" line="32"/>
-        <source>Current Directory</source>
-        <translation>Текущий каталог</translation>
-    </message>
-    <message>
-        <location filename="../src/FilesDockWidget.cpp" line="46"/>
-        <source>Move up one directory.</source>
-        <translation>Перейти на уровень выше.</translation>
-    </message>
-    <message>
-        <location filename="../src/FilesDockWidget.cpp" line="49"/>
-        <source>Enter the path or filename.</source>
-        <translation>Введите путь или Ð¸Ð¼Ñ Ñ„Ð°Ð¹Ð»Ð°.</translation>
-    </message>
-    <message>
-        <location filename="../src/FilesDockWidget.cpp" line="78"/>
-        <source>Doubleclick a file to open it.</source>
-        <translation>Двойной щелчок по файлу откроет его.</translation>
-    </message>
-</context>
-<context>
-    <name>HistoryDockWidget</name>
-    <message>
-        <location filename="../src/HistoryDockWidget.cpp" line="36"/>
-        <source>Doubleclick a command to transfer it to the terminal.</source>
-        <translation>Двойной щелчок по команде перенеÑÑ‘Ñ‚ её в командную Ñтроку.</translation>
-    </message>
-    <message>
-        <location filename="../src/HistoryDockWidget.cpp" line="38"/>
-        <source>Enter text to filter the command history.</source>
-        <translation>Введите текÑÑ‚ Ð´Ð»Ñ Ñ„Ð¸Ð»ÑŒÑ‚Ñ€Ð°Ñ†Ð¸Ð¸ выполненных команд.</translation>
-    </message>
-    <message>
-        <location filename="../src/HistoryDockWidget.cpp" line="41"/>
-        <source>Command History</source>
-        <translation>Журнал выполненных команд</translation>
-    </message>
-</context>
-<context>
-    <name>LexerOctaveGui</name>
-    <message>
-        <location filename="../src/lexer/lexeroctavegui.cpp" line="111"/>
-        <source>Default</source>
-        <translation>По умолчанию</translation>
-    </message>
-    <message>
-        <location filename="../src/lexer/lexeroctavegui.cpp" line="113"/>
-        <source>Comment</source>
-        <translation>Комментарий</translation>
-    </message>
-    <message>
-        <location filename="../src/lexer/lexeroctavegui.cpp" line="115"/>
-        <source>Command</source>
-        <translation>Команда</translation>
-    </message>
-    <message>
-        <location filename="../src/lexer/lexeroctavegui.cpp" line="117"/>
-        <source>Number</source>
-        <translation>ЧиÑло</translation>
-    </message>
-    <message>
-        <location filename="../src/lexer/lexeroctavegui.cpp" line="119"/>
-        <source>Keyword</source>
-        <translation>Зарезервированное Ñлово</translation>
-    </message>
-    <message>
-        <location filename="../src/lexer/lexeroctavegui.cpp" line="121"/>
-        <source>Single-quoted string</source>
-        <translation>Строка в одинарных кавычках</translation>
-    </message>
-    <message>
-        <location filename="../src/lexer/lexeroctavegui.cpp" line="123"/>
-        <source>Operator</source>
-        <translation>Оператор</translation>
-    </message>
-    <message>
-        <location filename="../src/lexer/lexeroctavegui.cpp" line="125"/>
-        <source>Identifier</source>
-        <translation>Идентификатор</translation>
-    </message>
-    <message>
-        <location filename="../src/lexer/lexeroctavegui.cpp" line="127"/>
-        <source>Double-quoted string</source>
-        <translation>Строка в двойных кавычках</translation>
-    </message>
-</context>
-<context>
-    <name>MainWindow</name>
-    <message>
-        <location filename="../src/MainWindow.cpp" line="47"/>
-        <source>Opening file.</source>
-        <translation>ОткрываетÑÑ Ñ„Ð°Ð¹Ð».</translation>
-    </message>
-    <message>
-        <location filename="../src/MainWindow.cpp" line="124"/>
-        <source>Save Workspace</source>
-        <translation>Сохранить облаÑÑ‚ÑŒ переменных</translation>
-    </message>
-    <message>
-        <location filename="../src/MainWindow.cpp" line="134"/>
-        <source>Load Workspace</source>
-        <translation>Загрузить облаÑÑ‚ÑŒ переменных</translation>
-    </message>
-    <message>
-        <location filename="../src/MainWindow.cpp" line="226"/>
-        <location filename="../src/MainWindow.cpp" line="362"/>
-        <source>About Octave</source>
-        <translation>Об Octave</translation>
-    </message>
-    <message>
-        <location filename="../src/MainWindow.cpp" line="238"/>
-        <source>Saving data and shutting down.</source>
-        <translation>Сохранить и завершить работу.</translation>
-    </message>
-    <message>
-        <location filename="../src/MainWindow.cpp" line="276"/>
-        <source>View the variables in the active workspace.</source>
-        <translation>ПроÑмотр Ñодержимого текущей облаÑти переменных.</translation>
-    </message>
-    <message>
-        <location filename="../src/MainWindow.cpp" line="278"/>
-        <source>Browse and search the command history.</source>
-        <translation>ПроÑмотр и поиÑк в журнале выполненных команд.</translation>
-    </message>
-    <message>
-        <location filename="../src/MainWindow.cpp" line="280"/>
-        <source>Browse your files.</source>
-        <translation>ПроÑмотр файлов.</translation>
-    </message>
-    <message>
-        <location filename="../src/MainWindow.cpp" line="294"/>
-        <source>Terminal</source>
-        <translation>ÐšÐ¾Ð¼Ð°Ð½Ð´Ð½Ð°Ñ Ñтрока</translation>
-    </message>
-    <message>
-        <location filename="../src/MainWindow.cpp" line="298"/>
-        <source>Enter your commands into the Octave terminal.</source>
-        <translation>Введите команды в командной Ñтроке Octave.</translation>
-    </message>
-    <message>
-        <location filename="../src/MainWindow.cpp" line="307"/>
-        <source>Documentation</source>
-        <translation>ДокументациÑ</translation>
-    </message>
-    <message>
-        <location filename="../src/MainWindow.cpp" line="311"/>
-        <source>Browse the Octave documentation for help.</source>
-        <translation>Открыть документацию по Octave.</translation>
-    </message>
-    <message>
-        <location filename="../src/MainWindow.cpp" line="320"/>
-        <source>Chat</source>
-        <translation>Чат</translation>
-    </message>
-    <message>
-        <location filename="../src/MainWindow.cpp" line="323"/>
-        <source>Instantly chat with other Octave users for help.</source>
-        <translation>Чат Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñми Octave.</translation>
-    </message>
-    <message>
-        <location filename="../src/MainWindow.cpp" line="330"/>
-        <source>Octave</source>
-        <translation>Octave</translation>
-    </message>
-    <message>
-        <location filename="../src/MainWindow.cpp" line="331"/>
-        <source>Settings</source>
-        <translation>Параметры</translation>
-    </message>
-    <message>
-        <location filename="../src/MainWindow.cpp" line="333"/>
-        <source>Exit</source>
-        <translation>Выход</translation>
-    </message>
-    <message>
-        <location filename="../src/MainWindow.cpp" line="335"/>
-        <source>Interface</source>
-        <translation>ИнтерфейÑ</translation>
-    </message>
-    <message>
-        <location filename="../src/MainWindow.cpp" line="337"/>
-        <source>Align Windows</source>
-        <translation>ВыровнÑÑ‚ÑŒ окна</translation>
-    </message>
-    <message>
-        <location filename="../src/MainWindow.cpp" line="339"/>
-        <location filename="../src/MainWindow.cpp" line="351"/>
-        <source>Workspace</source>
-        <translation>ОблаÑÑ‚ÑŒ переменных</translation>
-    </message>
-    <message>
-        <location filename="../src/MainWindow.cpp" line="342"/>
-        <source>History</source>
-        <translation>Журнал выполненных команд</translation>
-    </message>
-    <message>
-        <location filename="../src/MainWindow.cpp" line="345"/>
-        <source>File Browser</source>
-        <translation>Файловый менеджер</translation>
-    </message>
-    <message>
-        <location filename="../src/MainWindow.cpp" line="349"/>
-        <source>Open New Editor Window</source>
-        <translation>Открыть новое окно редактора</translation>
-    </message>
-    <message>
-        <location filename="../src/MainWindow.cpp" line="352"/>
-        <source>Load</source>
-        <translation>Загрузить</translation>
-    </message>
-    <message>
-        <location filename="../src/MainWindow.cpp" line="353"/>
-        <source>Save</source>
-        <translation>Сохранить</translation>
-    </message>
-    <message>
-        <location filename="../src/MainWindow.cpp" line="355"/>
-        <source>Clear</source>
-        <translation>ОчиÑтить</translation>
-    </message>
-    <message>
-        <location filename="../src/MainWindow.cpp" line="357"/>
-        <source>Community</source>
-        <translation>СообщеÑтво</translation>
-    </message>
-    <message>
-        <location filename="../src/MainWindow.cpp" line="358"/>
-        <source>Report Bug</source>
-        <translation>Сообщить об ошибке</translation>
-    </message>
-    <message>
-        <location filename="../src/MainWindow.cpp" line="359"/>
-        <source>Agora</source>
-        <translation>Agora</translation>
-    </message>
-    <message>
-        <location filename="../src/MainWindow.cpp" line="360"/>
-        <source>Octave Forge</source>
-        <translation>Octave Forge</translation>
-    </message>
-    <message>
-        <location filename="../src/MainWindow.cpp" line="363"/>
-        <source>About Qt</source>
-        <translation>О Qt</translation>
-    </message>
-</context>
-<context>
-    <name>SettingsDialog</name>
-    <message>
-        <location filename="../src/SettingsDialog.ui" line="29"/>
-        <source>Settings</source>
-        <translation>Параметры</translation>
-    </message>
-    <message>
-        <location filename="../src/SettingsDialog.ui" line="39"/>
-        <source>Chat</source>
-        <translation>Чат</translation>
-    </message>
-    <message>
-        <location filename="../src/SettingsDialog.ui" line="47"/>
-        <source>Connect to #octave on startup</source>
-        <translation>ПодключитьÑÑ Ðº #octave при запуÑке</translation>
-    </message>
-    <message>
-        <location filename="../src/SettingsDialog.ui" line="57"/>
-        <source>Show message of the day</source>
-        <translation>Показывать Ñовет днÑ</translation>
-    </message>
-    <message>
-        <location filename="../src/SettingsDialog.ui" line="64"/>
-        <source>Show topic</source>
-        <translation>Показывать тему обÑÑƒÐ¶Ð´ÐµÐ½Ð¸Ñ Ð¿Ñ€Ð¸ подключении</translation>
-    </message>
-    <message>
-        <location filename="../src/SettingsDialog.ui" line="71"/>
-        <source>Automatically identify on NickServ</source>
-        <translation>ÐвтоматичеÑки идентифицироватьÑÑ Ñƒ NickServ</translation>
-    </message>
-    <message>
-        <location filename="../src/SettingsDialog.ui" line="78"/>
-        <source>Warning: Your password will be stored in ~/.octavegui in human-readable format. Do not enter your password if you worry about security issues.</source>
-        <translation>Предупреждение: пароль будет Ñохранён в ~/.octavegui обычным текÑтом. Ðе вводите пароль, еÑли переживаете о возможных уÑзвимоÑÑ‚ÑÑ… в безопаÑноÑти приложениÑ.</translation>
-    </message>
-    <message>
-        <location filename="../src/SettingsDialog.ui" line="103"/>
-        <location filename="../src/SettingsDialog.ui" line="311"/>
-        <source>Password:</source>
-        <translation>Пароль:</translation>
-    </message>
-    <message>
-        <location filename="../src/SettingsDialog.ui" line="125"/>
-        <source>Editor</source>
-        <translation>Редактор</translation>
-    </message>
-    <message>
-        <location filename="../src/SettingsDialog.ui" line="133"/>
-        <source>Use custom file editor:</source>
-        <translation>Выбрать редактор:</translation>
-    </message>
-    <message>
-        <location filename="../src/SettingsDialog.ui" line="143"/>
-        <source>emacs</source>
-        <translation>emacs</translation>
-    </message>
-    <message>
-        <location filename="../src/SettingsDialog.ui" line="166"/>
-        <source>File Browser</source>
-        <translation>Файловый менеджер</translation>
-    </message>
-    <message>
-        <location filename="../src/SettingsDialog.ui" line="172"/>
-        <source>Show filenames</source>
-        <translation>Показывать имена файлов</translation>
-    </message>
-    <message>
-        <location filename="../src/SettingsDialog.ui" line="179"/>
-        <source>Show file size</source>
-        <translation>Показывать размер файлов</translation>
-    </message>
-    <message>
-        <location filename="../src/SettingsDialog.ui" line="186"/>
-        <source>Show file type</source>
-        <translation>Показывать типы файлов</translation>
-    </message>
-    <message>
-        <location filename="../src/SettingsDialog.ui" line="193"/>
-        <source>Show date of last modification</source>
-        <translation>Показывать дату поÑледнего изменениÑ</translation>
-    </message>
-    <message>
-        <location filename="../src/SettingsDialog.ui" line="200"/>
-        <source>Show hidden files</source>
-        <translation>Показывать Ñкрытые файлы</translation>
-    </message>
-    <message>
-        <location filename="../src/SettingsDialog.ui" line="207"/>
-        <source>Alternating row colors</source>
-        <translation>ЧередующиеÑÑ Ñ†Ð²ÐµÑ‚Ð° Ñтрок</translation>
-    </message>
-    <message>
-        <location filename="../src/SettingsDialog.ui" line="215"/>
-        <source>Network</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../src/SettingsDialog.ui" line="221"/>
-        <source>Use proxy server</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../src/SettingsDialog.ui" line="233"/>
-        <source>Proxy Type:</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../src/SettingsDialog.ui" line="244"/>
-        <source>HttpProxy</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../src/SettingsDialog.ui" line="249"/>
-        <source>Socks5Proxy</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../src/SettingsDialog.ui" line="260"/>
-        <source>Hostname:</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../src/SettingsDialog.ui" line="277"/>
-        <source>Port:</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../src/SettingsDialog.ui" line="294"/>
-        <source>Username:</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../src/SettingsDialog.ui" line="339"/>
-        <source>Reset to defaults</source>
-        <translation>УÑтановить параметры по умолчанию</translation>
-    </message>
-    <message>
-        <location filename="../src/SettingsDialog.ui" line="362"/>
-        <source>Export</source>
-        <translation>ЭкÑпортировать</translation>
-    </message>
-    <message>
-        <location filename="../src/SettingsDialog.ui" line="372"/>
-        <source>Import</source>
-        <translation>Импортировать</translation>
-    </message>
-</context>
-<context>
-    <name>VariablesDockWidget</name>
-    <message>
-        <location filename="../src/VariablesDockWidget.cpp" line="36"/>
-        <source>Workspace</source>
-        <translation>ОблаÑÑ‚ÑŒ переменных</translation>
-    </message>
-    <message>
-        <location filename="../src/VariablesDockWidget.cpp" line="40"/>
-        <source>Name</source>
-        <translation>Идентификатор</translation>
-    </message>
-    <message>
-        <location filename="../src/VariablesDockWidget.cpp" line="40"/>
-        <source>Type</source>
-        <translation>Тип</translation>
-    </message>
-    <message>
-        <location filename="../src/VariablesDockWidget.cpp" line="40"/>
-        <source>Value</source>
-        <translation>Значение</translation>
-    </message>
-    <message>
-        <location filename="../src/VariablesDockWidget.cpp" line="52"/>
-        <source>Local</source>
-        <translation>ЛокальнаÑ</translation>
-    </message>
-    <message>
-        <location filename="../src/VariablesDockWidget.cpp" line="56"/>
-        <source>Global</source>
-        <translation>ГлобальнаÑ</translation>
-    </message>
-    <message>
-        <location filename="../src/VariablesDockWidget.cpp" line="60"/>
-        <source>Persistent</source>
-        <translation>СтатичеÑкаÑ</translation>
-    </message>
-    <message>
-        <location filename="../src/VariablesDockWidget.cpp" line="64"/>
-        <source>Hidden</source>
-        <translation>СкрытаÑ</translation>
-    </message>
-</context>
-</TS>
--- a/gui/languages/translators	Sat Aug 18 16:23:39 2012 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,8 +0,0 @@
-# Below Octave GUI translators are listed with their e-mails
-# to be able inform them about generic translation file changes
-en-en Jacob Dawid <jacob.dawid@googlemail.com>
-es-es Valentin Ortega-Clavero <arcanos3030@gmail.com>
-de-de Jacob Dawid <jacob.dawid@googlemail.com>
-pt-br Júlio Hoffimann Mendes <julio.hoffimann@gmail.com>
-ru-ru Andriy Shinkarchuck <adriano32.gnu@gmail.com>
-uk-ua Andriy Shinkarchuck <adriano32.gnu@gmail.com>
Binary file gui/languages/uk-ua.qm has changed
--- a/gui/languages/uk-ua.ts	Sat Aug 18 16:23:39 2012 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,574 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE TS>
-<TS version="2.0" language="uk_UA">
-<context>
-    <name>FileEditorMdiSubWindow</name>
-    <message>
-        <location filename="../src/FileEditorMdiSubWindow.cpp" line="114"/>
-        <location filename="../src/FileEditorMdiSubWindow.cpp" line="207"/>
-        <source>File Editor</source>
-        <translation>Редактор файлів</translation>
-    </message>
-    <message>
-        <location filename="../src/FileEditorMdiSubWindow.cpp" line="115"/>
-        <source>Cannot read file %1:
-%2.</source>
-        <translation>Ðе вдалоÑÑ Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚Ð¸ файл %1:
-%2.</translation>
-    </message>
-    <message>
-        <location filename="../src/FileEditorMdiSubWindow.cpp" line="127"/>
-        <source>File loaded.</source>
-        <translation>Файл завантажено.</translation>
-    </message>
-    <message>
-        <location filename="../src/FileEditorMdiSubWindow.cpp" line="153"/>
-        <source>Do you want to save the current file
-%1 ?</source>
-        <translation>Справді зберегти поточний файл
-%1?</translation>
-    </message>
-    <message>
-        <location filename="../src/FileEditorMdiSubWindow.cpp" line="208"/>
-        <source>Cannot write file %1:
-%2.</source>
-        <translation>Ðе вдалоÑÑ Ð·Ð±ÐµÑ€ÐµÐ³Ñ‚Ð¸ файл %1:
-%2.</translation>
-    </message>
-    <message>
-        <location filename="../src/FileEditorMdiSubWindow.cpp" line="220"/>
-        <source>File %1 saved</source>
-        <translation>Файл %1 збережено</translation>
-    </message>
-    <message>
-        <location filename="../src/FileEditorMdiSubWindow.cpp" line="383"/>
-        <source>&amp;Close File</source>
-        <translation>За&amp;крити</translation>
-    </message>
-    <message>
-        <location filename="../src/FileEditorMdiSubWindow.cpp" line="386"/>
-        <source>&amp;New File</source>
-        <translation>&amp;Створити</translation>
-    </message>
-    <message>
-        <location filename="../src/FileEditorMdiSubWindow.cpp" line="389"/>
-        <source>&amp;Open File</source>
-        <translation>&amp;Відкрити</translation>
-    </message>
-    <message>
-        <location filename="../src/FileEditorMdiSubWindow.cpp" line="392"/>
-        <source>&amp;Save File</source>
-        <translation>&amp;Зберегти</translation>
-    </message>
-    <message>
-        <location filename="../src/FileEditorMdiSubWindow.cpp" line="395"/>
-        <source>Save File &amp;As</source>
-        <translation>Зберегти &amp;Ñк</translation>
-    </message>
-    <message>
-        <location filename="../src/FileEditorMdiSubWindow.cpp" line="398"/>
-        <source>&amp;Undo</source>
-        <translation>В&amp;ернути</translation>
-    </message>
-    <message>
-        <location filename="../src/FileEditorMdiSubWindow.cpp" line="401"/>
-        <source>&amp;Redo</source>
-        <translation>П&amp;овторити</translation>
-    </message>
-    <message>
-        <location filename="../src/FileEditorMdiSubWindow.cpp" line="402"/>
-        <source>&amp;Copy</source>
-        <translation>&amp;Копіювати</translation>
-    </message>
-    <message>
-        <location filename="../src/FileEditorMdiSubWindow.cpp" line="403"/>
-        <source>Cu&amp;t</source>
-        <translation>Виріза&amp;ти</translation>
-    </message>
-    <message>
-        <location filename="../src/FileEditorMdiSubWindow.cpp" line="404"/>
-        <source>&amp;Paste</source>
-        <translation>&amp;Ð’Ñтавити</translation>
-    </message>
-    <message>
-        <location filename="../src/FileEditorMdiSubWindow.cpp" line="405"/>
-        <source>&amp;Next Bookmark</source>
-        <translation>До &amp;наÑтупної закладки</translation>
-    </message>
-    <message>
-        <location filename="../src/FileEditorMdiSubWindow.cpp" line="406"/>
-        <source>Pre&amp;vious Bookmark</source>
-        <translation>До &amp;попередньої закладки</translation>
-    </message>
-    <message>
-        <location filename="../src/FileEditorMdiSubWindow.cpp" line="407"/>
-        <source>Toggle &amp;Bookmark</source>
-        <translation>Ð’&amp;Ñтановити/видалити закладку</translation>
-    </message>
-    <message>
-        <location filename="../src/FileEditorMdiSubWindow.cpp" line="410"/>
-        <source>&amp;Run File</source>
-        <translation>&amp;Виконати файл</translation>
-    </message>
-    <message>
-        <location filename="../src/FileEditorMdiSubWindow.cpp" line="449"/>
-        <source>&amp;File</source>
-        <translation>&amp;Файл</translation>
-    </message>
-    <message>
-        <location filename="../src/FileEditorMdiSubWindow.cpp" line="457"/>
-        <source>&amp;Edit</source>
-        <translation>&amp;Правка</translation>
-    </message>
-    <message>
-        <location filename="../src/FileEditorMdiSubWindow.cpp" line="469"/>
-        <source>&amp;Run</source>
-        <translation>&amp;ВиконаннÑ</translation>
-    </message>
-</context>
-<context>
-    <name>FilesDockWidget</name>
-    <message>
-        <source>Current Folder</source>
-        <translation type="obsolete">Поточний каталог</translation>
-    </message>
-    <message>
-        <location filename="../src/FilesDockWidget.cpp" line="32"/>
-        <source>Current Directory</source>
-        <translation>Поточний каталог</translation>
-    </message>
-    <message>
-        <location filename="../src/FilesDockWidget.cpp" line="46"/>
-        <source>Move up one directory.</source>
-        <translation>Перейти вгору деревом каталогів.</translation>
-    </message>
-    <message>
-        <location filename="../src/FilesDockWidget.cpp" line="49"/>
-        <source>Enter the path or filename.</source>
-        <translation>Введіть повний шлÑÑ… до файлу або назву файлу.</translation>
-    </message>
-    <message>
-        <location filename="../src/FilesDockWidget.cpp" line="78"/>
-        <source>Doubleclick a file to open it.</source>
-        <translation>Подвійне ÐºÐ»Ð°Ñ†Ð°Ð½Ð½Ñ Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ” файл.</translation>
-    </message>
-</context>
-<context>
-    <name>HistoryDockWidget</name>
-    <message>
-        <location filename="../src/HistoryDockWidget.cpp" line="36"/>
-        <source>Doubleclick a command to transfer it to the terminal.</source>
-        <translation>Подвійне ÐºÐ»Ð°Ñ†Ð°Ð½Ð½Ñ Ð¿ÐµÑ€ÐµÐ½ÐµÑе команду до командного Ñ€Ñдку.</translation>
-    </message>
-    <message>
-        <location filename="../src/HistoryDockWidget.cpp" line="38"/>
-        <source>Enter text to filter the command history.</source>
-        <translation>Введіть текÑÑ‚ Ð´Ð»Ñ Ñ„Ñ–Ð»ÑŒÑ‚Ñ€ÑƒÐ²Ð°Ð½Ð½Ñ Ñ–Ñторії виконаних команд.</translation>
-    </message>
-    <message>
-        <location filename="../src/HistoryDockWidget.cpp" line="41"/>
-        <source>Command History</source>
-        <translation>ІÑÑ‚Ð¾Ñ€Ñ–Ñ Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð¸Ñ… команд</translation>
-    </message>
-</context>
-<context>
-    <name>LexerOctaveGui</name>
-    <message>
-        <location filename="../src/lexer/lexeroctavegui.cpp" line="111"/>
-        <source>Default</source>
-        <translation>Стандартні налаштуваннÑ</translation>
-    </message>
-    <message>
-        <location filename="../src/lexer/lexeroctavegui.cpp" line="113"/>
-        <source>Comment</source>
-        <translation>Коментар</translation>
-    </message>
-    <message>
-        <location filename="../src/lexer/lexeroctavegui.cpp" line="115"/>
-        <source>Command</source>
-        <translation>Команда</translation>
-    </message>
-    <message>
-        <location filename="../src/lexer/lexeroctavegui.cpp" line="117"/>
-        <source>Number</source>
-        <translation>ЧиÑло</translation>
-    </message>
-    <message>
-        <location filename="../src/lexer/lexeroctavegui.cpp" line="119"/>
-        <source>Keyword</source>
-        <translation>Зарезервоване Ñлово</translation>
-    </message>
-    <message>
-        <location filename="../src/lexer/lexeroctavegui.cpp" line="121"/>
-        <source>Single-quoted string</source>
-        <translation>РÑдок в одинарних лапках</translation>
-    </message>
-    <message>
-        <location filename="../src/lexer/lexeroctavegui.cpp" line="123"/>
-        <source>Operator</source>
-        <translation>Оператор</translation>
-    </message>
-    <message>
-        <location filename="../src/lexer/lexeroctavegui.cpp" line="125"/>
-        <source>Identifier</source>
-        <translation>Ідентифікатор</translation>
-    </message>
-    <message>
-        <location filename="../src/lexer/lexeroctavegui.cpp" line="127"/>
-        <source>Double-quoted string</source>
-        <translation>РÑдок у подвійних лапках</translation>
-    </message>
-</context>
-<context>
-    <name>MainWindow</name>
-    <message>
-        <location filename="../src/MainWindow.cpp" line="47"/>
-        <source>Opening file.</source>
-        <translation>ВідкриваєтьÑÑ Ñ„Ð°Ð¹Ð».</translation>
-    </message>
-    <message>
-        <location filename="../src/MainWindow.cpp" line="124"/>
-        <source>Save Workspace</source>
-        <translation>Зберегти облаÑÑ‚ÑŒ змінних</translation>
-    </message>
-    <message>
-        <location filename="../src/MainWindow.cpp" line="134"/>
-        <source>Load Workspace</source>
-        <translation>Завантажити облаÑÑ‚ÑŒ змінних</translation>
-    </message>
-    <message>
-        <location filename="../src/MainWindow.cpp" line="226"/>
-        <location filename="../src/MainWindow.cpp" line="362"/>
-        <source>About Octave</source>
-        <translation>Про Octave</translation>
-    </message>
-    <message>
-        <location filename="../src/MainWindow.cpp" line="238"/>
-        <source>Saving data and shutting down.</source>
-        <translation>Зберегти дані і завершити роботу.</translation>
-    </message>
-    <message>
-        <location filename="../src/MainWindow.cpp" line="276"/>
-        <source>View the variables in the active workspace.</source>
-        <translation>ПереглÑд зміÑту поточної облаÑÑ‚Ñ– змінних.</translation>
-    </message>
-    <message>
-        <location filename="../src/MainWindow.cpp" line="278"/>
-        <source>Browse and search the command history.</source>
-        <translation>ПереглÑд Ñ– пошук Ñеред Ñ–Ñторії виконаних команд.</translation>
-    </message>
-    <message>
-        <location filename="../src/MainWindow.cpp" line="280"/>
-        <source>Browse your files.</source>
-        <translation>ПереглÑнути файли.</translation>
-    </message>
-    <message>
-        <location filename="../src/MainWindow.cpp" line="294"/>
-        <source>Terminal</source>
-        <translation>Командний Ñ€Ñдок</translation>
-    </message>
-    <message>
-        <location filename="../src/MainWindow.cpp" line="298"/>
-        <source>Enter your commands into the Octave terminal.</source>
-        <translation>Введіть команди до командного Ñ€Ñдка Octave.</translation>
-    </message>
-    <message>
-        <location filename="../src/MainWindow.cpp" line="307"/>
-        <source>Documentation</source>
-        <translation>ДокументаціÑ</translation>
-    </message>
-    <message>
-        <location filename="../src/MainWindow.cpp" line="311"/>
-        <source>Browse the Octave documentation for help.</source>
-        <translation>ПереглÑнути документацію до Octave.</translation>
-    </message>
-    <message>
-        <location filename="../src/MainWindow.cpp" line="320"/>
-        <source>Chat</source>
-        <translation>Чат</translation>
-    </message>
-    <message>
-        <location filename="../src/MainWindow.cpp" line="323"/>
-        <source>Instantly chat with other Octave users for help.</source>
-        <translation>Чат з кориÑтувачами Octave.</translation>
-    </message>
-    <message>
-        <location filename="../src/MainWindow.cpp" line="330"/>
-        <source>Octave</source>
-        <translation>Octave</translation>
-    </message>
-    <message>
-        <location filename="../src/MainWindow.cpp" line="331"/>
-        <source>Settings</source>
-        <translation>ÐалаштуваннÑ</translation>
-    </message>
-    <message>
-        <location filename="../src/MainWindow.cpp" line="333"/>
-        <source>Exit</source>
-        <translation>Вийти</translation>
-    </message>
-    <message>
-        <location filename="../src/MainWindow.cpp" line="335"/>
-        <source>Interface</source>
-        <translation>ІнтерфейÑ</translation>
-    </message>
-    <message>
-        <location filename="../src/MainWindow.cpp" line="337"/>
-        <source>Align Windows</source>
-        <translation>ВирівнÑти вікна</translation>
-    </message>
-    <message>
-        <location filename="../src/MainWindow.cpp" line="339"/>
-        <location filename="../src/MainWindow.cpp" line="351"/>
-        <source>Workspace</source>
-        <translation>ОблаÑÑ‚ÑŒ змінних</translation>
-    </message>
-    <message>
-        <location filename="../src/MainWindow.cpp" line="342"/>
-        <source>History</source>
-        <translation>ІÑÑ‚Ð¾Ñ€Ñ–Ñ Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð¸Ñ… команд</translation>
-    </message>
-    <message>
-        <location filename="../src/MainWindow.cpp" line="345"/>
-        <source>File Browser</source>
-        <translation>Файловий менеджер</translation>
-    </message>
-    <message>
-        <location filename="../src/MainWindow.cpp" line="349"/>
-        <source>Open New Editor Window</source>
-        <translation>Відкрити нове вікно редактора</translation>
-    </message>
-    <message>
-        <location filename="../src/MainWindow.cpp" line="352"/>
-        <source>Load</source>
-        <translation>Завантажити</translation>
-    </message>
-    <message>
-        <location filename="../src/MainWindow.cpp" line="353"/>
-        <source>Save</source>
-        <translation>Зберегти</translation>
-    </message>
-    <message>
-        <location filename="../src/MainWindow.cpp" line="355"/>
-        <source>Clear</source>
-        <translation>ОчиÑтити</translation>
-    </message>
-    <message>
-        <location filename="../src/MainWindow.cpp" line="357"/>
-        <source>Community</source>
-        <translation>Спільнота</translation>
-    </message>
-    <message>
-        <location filename="../src/MainWindow.cpp" line="358"/>
-        <source>Report Bug</source>
-        <translation>Повідомити про помилку</translation>
-    </message>
-    <message>
-        <location filename="../src/MainWindow.cpp" line="359"/>
-        <source>Agora</source>
-        <translation>Agora</translation>
-    </message>
-    <message>
-        <location filename="../src/MainWindow.cpp" line="360"/>
-        <source>Octave Forge</source>
-        <translation>Octave Forge</translation>
-    </message>
-    <message>
-        <location filename="../src/MainWindow.cpp" line="363"/>
-        <source>About Qt</source>
-        <translation>Про Qt</translation>
-    </message>
-</context>
-<context>
-    <name>SettingsDialog</name>
-    <message>
-        <location filename="../src/SettingsDialog.ui" line="29"/>
-        <source>Settings</source>
-        <translation>ÐалаштуваннÑ</translation>
-    </message>
-    <message>
-        <location filename="../src/SettingsDialog.ui" line="39"/>
-        <source>Chat</source>
-        <translation>Чат</translation>
-    </message>
-    <message>
-        <location filename="../src/SettingsDialog.ui" line="47"/>
-        <source>Connect to #octave on startup</source>
-        <translation>З&apos;єднатиÑÑ Ð· #octave при запуÑку</translation>
-    </message>
-    <message>
-        <location filename="../src/SettingsDialog.ui" line="57"/>
-        <source>Show message of the day</source>
-        <translation>Показувати пораду днÑ</translation>
-    </message>
-    <message>
-        <location filename="../src/SettingsDialog.ui" line="64"/>
-        <source>Show topic</source>
-        <translation>Показувати тему чату при з&apos;єднанні</translation>
-    </message>
-    <message>
-        <location filename="../src/SettingsDialog.ui" line="71"/>
-        <source>Automatically identify on NickServ</source>
-        <translation>Ðвтоматично ідентифікуватиÑÑ Ð² NickServ</translation>
-    </message>
-    <message>
-        <location filename="../src/SettingsDialog.ui" line="78"/>
-        <source>Warning: Your password will be stored in ~/.octavegui in human-readable format. Do not enter your password if you worry about security issues.</source>
-        <translation>ПопередженнÑ: пароль буде збережено в ~/.octavegui звичайним текÑтом. Ðе вводьте пароль, Ñкщо переймаєтеÑÑŒ потенційними проблемами із захиÑтом даних в програмі.</translation>
-    </message>
-    <message>
-        <location filename="../src/SettingsDialog.ui" line="103"/>
-        <location filename="../src/SettingsDialog.ui" line="311"/>
-        <source>Password:</source>
-        <translation>Пароль:</translation>
-    </message>
-    <message>
-        <location filename="../src/SettingsDialog.ui" line="125"/>
-        <source>Editor</source>
-        <translation>Редактор</translation>
-    </message>
-    <message>
-        <location filename="../src/SettingsDialog.ui" line="133"/>
-        <source>Use custom file editor:</source>
-        <translation>ВикориÑтовувати інший редактор:</translation>
-    </message>
-    <message>
-        <location filename="../src/SettingsDialog.ui" line="143"/>
-        <source>emacs</source>
-        <translation>emacs</translation>
-    </message>
-    <message>
-        <location filename="../src/SettingsDialog.ui" line="166"/>
-        <source>File Browser</source>
-        <translation>Файловий менеджер</translation>
-    </message>
-    <message>
-        <location filename="../src/SettingsDialog.ui" line="172"/>
-        <source>Show filenames</source>
-        <translation>Показувати назви файлів</translation>
-    </message>
-    <message>
-        <location filename="../src/SettingsDialog.ui" line="179"/>
-        <source>Show file size</source>
-        <translation>Показувати розмір файлів</translation>
-    </message>
-    <message>
-        <location filename="../src/SettingsDialog.ui" line="186"/>
-        <source>Show file type</source>
-        <translation>Показувати типи файлів</translation>
-    </message>
-    <message>
-        <location filename="../src/SettingsDialog.ui" line="193"/>
-        <source>Show date of last modification</source>
-        <translation>Показувати дату оÑтанньої зміни</translation>
-    </message>
-    <message>
-        <location filename="../src/SettingsDialog.ui" line="200"/>
-        <source>Show hidden files</source>
-        <translation>Показувати приховані файли</translation>
-    </message>
-    <message>
-        <location filename="../src/SettingsDialog.ui" line="207"/>
-        <source>Alternating row colors</source>
-        <translation>Чергувати колір Ñ€Ñдків</translation>
-    </message>
-    <message>
-        <location filename="../src/SettingsDialog.ui" line="215"/>
-        <source>Network</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../src/SettingsDialog.ui" line="221"/>
-        <source>Use proxy server</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../src/SettingsDialog.ui" line="233"/>
-        <source>Proxy Type:</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../src/SettingsDialog.ui" line="244"/>
-        <source>HttpProxy</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../src/SettingsDialog.ui" line="249"/>
-        <source>Socks5Proxy</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../src/SettingsDialog.ui" line="260"/>
-        <source>Hostname:</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../src/SettingsDialog.ui" line="277"/>
-        <source>Port:</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../src/SettingsDialog.ui" line="294"/>
-        <source>Username:</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../src/SettingsDialog.ui" line="339"/>
-        <source>Reset to defaults</source>
-        <translation>Ð’Ñтановити Ñтандартні налаштуваннÑ</translation>
-    </message>
-    <message>
-        <location filename="../src/SettingsDialog.ui" line="362"/>
-        <source>Export</source>
-        <translation>ЕкÑпортувати</translation>
-    </message>
-    <message>
-        <location filename="../src/SettingsDialog.ui" line="372"/>
-        <source>Import</source>
-        <translation>Імпортувати</translation>
-    </message>
-</context>
-<context>
-    <name>VariablesDockWidget</name>
-    <message>
-        <location filename="../src/VariablesDockWidget.cpp" line="36"/>
-        <source>Workspace</source>
-        <translation>ОблаÑÑ‚ÑŒ змінних</translation>
-    </message>
-    <message>
-        <location filename="../src/VariablesDockWidget.cpp" line="40"/>
-        <source>Name</source>
-        <translation>Ідентифікатор</translation>
-    </message>
-    <message>
-        <location filename="../src/VariablesDockWidget.cpp" line="40"/>
-        <source>Type</source>
-        <translation>Тип</translation>
-    </message>
-    <message>
-        <location filename="../src/VariablesDockWidget.cpp" line="40"/>
-        <source>Value</source>
-        <translation>ЗначеннÑ</translation>
-    </message>
-    <message>
-        <location filename="../src/VariablesDockWidget.cpp" line="52"/>
-        <source>Local</source>
-        <translation>Локальна</translation>
-    </message>
-    <message>
-        <location filename="../src/VariablesDockWidget.cpp" line="56"/>
-        <source>Global</source>
-        <translation>Глобальна</translation>
-    </message>
-    <message>
-        <location filename="../src/VariablesDockWidget.cpp" line="60"/>
-        <source>Persistent</source>
-        <translation>Статична</translation>
-    </message>
-    <message>
-        <location filename="../src/VariablesDockWidget.cpp" line="64"/>
-        <source>Hidden</source>
-        <translation>Прихована</translation>
-    </message>
-</context>
-</TS>
--- a/gui/src/Makefile.am	Sat Aug 18 16:23:39 2012 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,225 +0,0 @@
-include $(top_srcdir)/build-aux/common.mk
-
-SRCDIRS = \
-  m-editor \
-  qtinfo \
-  octave-adapter \
-  ../qterminal/libqterminal/unix \
-  ../qterminal/libqterminal/win32 \
-  ../qterminal/libqterminal \
-  ../qterminal
-
-moc-%.cc: %.h
-	test -d $(@D) || mkdir -p $(@D)
-	@MOC@ -o$@ $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(liboctgui_la_CPPFLAGS) $<
-
-ui-%.h: %.ui
-	@UIC@ -o $@ $<
-
-qrc-%.cc: %.qrc
-	@RCC@ -o $@ $<
-
-octave_gui_MOC = \
-  m-editor/moc-file-editor-interface.cc \
-  m-editor/moc-file-editor-tab.cc \
-  m-editor/moc-file-editor.cc \
-  m-editor/moc-find-dialog.cc \
-  m-editor/moc-lexer-octave-gui.cc \
-  moc-documentation-dockwidget.cc \
-  moc-files-dockwidget.cc \
-  moc-history-dockwidget.cc \
-  moc-main-window.cc \
-  moc-octave-qt-event-listener.cc \
-  moc-settings-dialog.cc \
-  moc-terminal-dockwidget.cc \
-  moc-welcome-wizard.cc \
-  moc-workspace-model.cc \
-  moc-workspace-view.cc \
-  octave-adapter/moc-octave-main-thread.cc \
-  qtinfo/moc-parser.cc \
-  qtinfo/moc-webinfo.cc
-
-octave_gui_UI = \
-  settings-dialog.ui \
-  welcome-wizard.ui
-
-octave_gui_UI_H = $(patsubst %.ui, ui-%.h, $(octave_gui_UI))
-
-octave_gui_RC = qrc-resource.cc
-
-octlib_LTLIBRARIES = liboctgui.la
-
-liboctgui_la_SOURCES = \
-  documentation-dockwidget.cc \
-  files-dockwidget.cc \
-  history-dockwidget.cc \
-  m-editor/file-editor-tab.cc \
-  m-editor/file-editor.cc \
-  m-editor/find-dialog.cc \
-  m-editor/lexer-octave-gui.cc \
-  main-window.cc \
-  octave-adapter/octave-event.cc \
-  octave-adapter/octave-link.cc \
-  octave-adapter/octave-main-thread.cc \
-  octave-gui.cc \
-  octave-qt-event-listener.cc \
-  qtinfo/parser.cc \
-  qtinfo/webinfo.cc \
-  resource-manager.cc \
-  settings-dialog.cc \
-  symbol-information.cc \
-  terminal-dockwidget.cc \
-  welcome-wizard.cc \
-  workspace-model.cc \
-  workspace-view.cc
-
-liboctgui_la_LIBADD = \
-  libqterminal.la \
-  -lQtCore \
-  -lQtGui \
-  -lQtNetwork \
-  -lqscintilla2
-
-nodist_liboctgui_la_SOURCES = $(octave_gui_MOC) $(octave_gui_RC)
-
-liboctgui_la_CPPFLAGS = \
-  -I@QT_INCDIR@ \
-  -I@QT_INCDIR@/QtCore \
-  -I@QT_INCDIR@/QtGui \
-  -I@QT_INCDIR@/QtNetwork \
-  -I$(srcdir)/../qterminal/libqterminal \
-  -I$(srcdir)/m-editor \
-  -I$(srcdir)/octave-adapter \
-  -I$(srcdir)/qtinfo \
-  -I$(srcdir)/../../libcruft/misc \
-  -I../../liboctave \
-  -I$(srcdir)/../../liboctave \
-  -I../../libinterp \
-  -I../../libinterp/interp-core \
-  -I../../libinterp/interpfcn \
-  -I../../libinterp/parse-tree \
-  -I$(srcdir)/../../libinterp \
-  -I$(srcdir)/../../libinterp/interp-core \
-  -I$(srcdir)/../../libinterp/interpfcn \
-  -I$(srcdir)/../../libinterp/octave-value \
-  -I$(srcdir)/../../libtinerp/operators \
-  -I$(srcdir)/../../libinterp/parse-tree
-
-liboctgui_la_LDFLAGS = -L@QT_LIBDIR@
-
-noinst_HEADERS = \
-  documentation-dockwidget.h \
-  files-dockwidget.h \
-  history-dockwidget.h \
-  m-editor/file-editor-interface.h \
-  m-editor/file-editor-tab.h \
-  m-editor/file-editor.h \
-  m-editor/find-dialog.h \
-  m-editor/lexer-octave-gui.h \
-  main-window.h \
-  octave-adapter/octave-event-listener.h \
-  octave-adapter/octave-event-observer.h \
-  octave-adapter/octave-event.h \
-  octave-adapter/octave-link.h \
-  octave-adapter/octave-main-thread.h \
-  octave-qt-event-listener.h \
-  qtinfo/parser.h \
-  qtinfo/webinfo.h \
-  resource-manager.h \
-  settings-dialog.h \
-  symbol-information.h \
-  terminal-dockwidget.h \
-  welcome-wizard.h \
-  workspace-model.h \
-  workspace-view.h
-
-CLEANFILES = $(octave_gui_MOC) $(octave_gui_UI_H) $(octave_gui_RC)
-
-clean-local:
-	-if test "$(srcdir)" != "."; then \
-		for d in $(SRCDIRS); do test -d $$d && rmdir $$d; done \
-	 fi
-
-BUILT_SOURCES = $(octave_gui_UI_H)
-
-EXTRA_DIST = $(octave_gui_UI) resource.qrc
-
-noinst_LTLIBRARIES = libqterminal.la
-
-noinst_HEADERS += ../qterminal/libqterminal/QTerminal.h \
-		  ../qterminal/libqterminal/QTerminalInterface.h \
-		  ../qterminal/libqterminal/win32/QTerminalColors.h \
-		  ../qterminal/libqterminal/win32/QWinTerminalImpl.h \
-		  ../qterminal/libqterminal/unix/BlockArray.h \
-		  ../qterminal/libqterminal/unix/Character.h \
-		  ../qterminal/libqterminal/unix/CharacterColor.h \
-		  ../qterminal/libqterminal/unix/Emulation.h \
-		  ../qterminal/libqterminal/unix/ExtendedDefaultTranslator.h \
-		  ../qterminal/libqterminal/unix/Filter.h \
-		  ../qterminal/libqterminal/unix/History.h \
-		  ../qterminal/libqterminal/unix/KeyboardTranslator.h \
-		  ../qterminal/libqterminal/unix/konsole_wcwidth.h \
-		  ../qterminal/libqterminal/unix/kpty.h \
-		  ../qterminal/libqterminal/unix/kpty_p.h \
-		  ../qterminal/libqterminal/unix/LineFont.h \
-		  ../qterminal/libqterminal/unix/QUnixTerminalImpl.h \
-		  ../qterminal/libqterminal/unix/Screen.h \
-		  ../qterminal/libqterminal/unix/ScreenWindow.h \
-		  ../qterminal/libqterminal/unix/TerminalCharacterDecoder.h \
-		  ../qterminal/libqterminal/unix/Vt102Emulation.h \
-		  ../qterminal/libqterminal/unix/SelfListener.h \
-		  ../qterminal/libqterminal/unix/TerminalModel.h \
-		  ../qterminal/libqterminal/unix/TerminalView.h
-
-libqterminal_la_CPPFLAGS = $(DEFS)  \
-			   -I@QT_INCDIR@ \
-			   -I@QT_INCDIR@/QtCore \
-			   -I@QT_INCDIR@/QtGui \
-			   -I$(srcdir)/../qterminal/libqterminal
-
-libqterminal_la_MOC = \
-  ../qterminal/libqterminal/moc-QTerminal.cc \
-  ../qterminal/libqterminal/moc-QTerminalInterface.cc
-
-nodist_libqterminal_la_SOURCES = $(libqterminal_la_MOC)
-
-if WIN32_TERMINAL
-
-libqterminal_la_SOURCES = \
-  ../qterminal/libqterminal/win32/QTerminalColors.cpp \
-  ../qterminal/libqterminal/win32/QWinTerminalImpl.cpp
-
-libqterminal_la_MOC += ../qterminal/libqterminal/win32/moc-QWinTerminalImpl.cc
-
-else
-
-libqterminal_la_SOURCES = \
-  ../qterminal/libqterminal/unix/BlockArray.cpp \
-  ../qterminal/libqterminal/unix/Emulation.cpp \
-  ../qterminal/libqterminal/unix/Filter.cpp \
-  ../qterminal/libqterminal/unix/History.cpp \
-  ../qterminal/libqterminal/unix/KeyboardTranslator.cpp \
-  ../qterminal/libqterminal/unix/konsole_wcwidth.cpp \
-  ../qterminal/libqterminal/unix/kpty.cpp \
-  ../qterminal/libqterminal/unix/QUnixTerminalImpl.cpp \
-  ../qterminal/libqterminal/unix/Screen.cpp \
-  ../qterminal/libqterminal/unix/ScreenWindow.cpp \
-  ../qterminal/libqterminal/unix/TerminalCharacterDecoder.cpp \
-  ../qterminal/libqterminal/unix/Vt102Emulation.cpp \
-  ../qterminal/libqterminal/unix/SelfListener.cpp \
-  ../qterminal/libqterminal/unix/TerminalModel.cpp \
-  ../qterminal/libqterminal/unix/TerminalView.cpp
-
-libqterminal_la_MOC += \
-  ../qterminal/libqterminal/unix/moc-Emulation.cc \
-  ../qterminal/libqterminal/unix/moc-Filter.cc \
-  ../qterminal/libqterminal/unix/moc-QUnixTerminalImpl.cc \
-  ../qterminal/libqterminal/unix/moc-ScreenWindow.cc \
-  ../qterminal/libqterminal/unix/moc-SelfListener.cc \
-  ../qterminal/libqterminal/unix/moc-TerminalModel.cc \
-  ../qterminal/libqterminal/unix/moc-TerminalView.cc \
-  ../qterminal/libqterminal/unix/moc-Vt102Emulation.cc
-
-endif
-
-CLEANFILES += $(libqterminal_la_MOC)
--- a/gui/src/documentation-dockwidget.cc	Sat Aug 18 16:23:39 2012 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,45 +0,0 @@
-/* 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 "documentation-dockwidget.h"
-
-documentation_dock_widget::documentation_dock_widget (QWidget *parent)
-  : QDockWidget (parent)
-{
-  setObjectName ("DocumentationDockWidget");
-  setWindowTitle (tr ("Documentation"));
-
-  connect (this, SIGNAL (visibilityChanged (bool)),
-           this, SLOT (handle_visibility_changed (bool)));
-
-  _webinfo = new webinfo (this);
-  setWidget (_webinfo);
-}
-
-void
-documentation_dock_widget::handle_visibility_changed (bool visible)
-{
-  if (visible)
-    emit active_changed (true);
-}
-
-void
-documentation_dock_widget::closeEvent (QCloseEvent *event)
-{
-  emit active_changed (false);
-  QDockWidget::closeEvent (event);
-}
--- a/gui/src/documentation-dockwidget.h	Sat Aug 18 16:23:39 2012 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,46 +0,0 @@
-/* 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/>.
- */
-
-#ifndef DOCUMENTATIONDOCKWIDGET_H
-#define DOCUMENTATIONDOCKWIDGET_H
-
-#include <QObject>
-#include <QDockWidget>
-#include "webinfo.h"
-
-class documentation_dock_widget : public QDockWidget
-{
-  Q_OBJECT
-public:
-  documentation_dock_widget (QWidget *parent = 0);
-
-public slots:
-  /** Slot to steer changing visibility from outside. */
-  void handle_visibility_changed (bool visible);
-
-signals:
-  /** Custom signal that tells if a user has clicked away that dock widget. */
-  void active_changed (bool active);
-
-protected:
-  void closeEvent (QCloseEvent *event);
-
-private:
-  webinfo *_webinfo;
-};
-
-#endif // DOCUMENTATIONDOCKWIDGET_H
--- a/gui/src/files-dockwidget.cc	Sat Aug 18 16:23:39 2012 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,188 +0,0 @@
-/* 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 "resource-manager.h"
-#include "files-dockwidget.h"
-
-#include <QApplication>
-#include <QFileInfo>
-#include <QCompleter>
-#include <QSettings>
-#include <QProcess>
-#include <QDebug>
-
-files_dock_widget::files_dock_widget (QWidget *parent)
-  : QDockWidget (parent)
-{
-  setObjectName ("FilesDockWidget");
-  setWindowTitle (tr ("Current Directory"));
-  setWidget (new QWidget (this));
-
-  // Create a toolbar
-  _navigation_tool_bar = new QToolBar ("", widget ());
-  _navigation_tool_bar->setAllowedAreas (Qt::TopToolBarArea);
-  _navigation_tool_bar->setMovable (false);
-  _navigation_tool_bar->setIconSize (QSize (20, 20));
-
-  _directory_icon = QIcon(":/actions/icons/up.png");
-  _directory_up_action = new QAction (_directory_icon, "", _navigation_tool_bar);
-  _directory_up_action->setStatusTip (tr ("Move up one directory."));
-
-  _last_current_directory = "";
-  _current_directory = new QLineEdit (_navigation_tool_bar);
-  _current_directory->setStatusTip (tr ("Enter the path or filename."));
-
-  _navigation_tool_bar->addAction (_directory_up_action);
-  _navigation_tool_bar->addWidget (_current_directory);
-  connect (_directory_up_action, SIGNAL (triggered ()), this,
-           SLOT (do_up_directory ()));
-
-  // TODO: Add other buttons for creating directories
-
-  // Create the QFileSystemModel starting in the home directory
-  QString homePath = QDir::homePath ();
-
-  _file_system_model = new QFileSystemModel (this);
-  _file_system_model->setFilter (QDir::NoDotAndDotDot | QDir::AllEntries);
-  QModelIndex rootPathIndex = _file_system_model->setRootPath (homePath);
-
-  // Attach the model to the QTreeView and set the root index
-  _file_tree_view = new QTreeView (widget ());
-  _file_tree_view->setModel (_file_system_model);
-  _file_tree_view->setRootIndex (rootPathIndex);
-  _file_tree_view->setSortingEnabled (true);
-  _file_tree_view->setAlternatingRowColors (true);
-  _file_tree_view->setAnimated (true);
-  _file_tree_view->setColumnHidden (1, true);
-  _file_tree_view->setColumnHidden (2, true);
-  _file_tree_view->setColumnHidden (3, true);
-  _file_tree_view->setStatusTip (tr ("Doubleclick a file to open it."));
-
-  _current_directory->setText(_file_system_model->fileInfo (rootPathIndex).
-                       absoluteFilePath ());
-
-  connect (_file_tree_view, SIGNAL (doubleClicked (const QModelIndex &)), this,
-           SLOT (item_double_clicked (const QModelIndex &)));
-
-  // Layout the widgets vertically with the toolbar on top
-  QVBoxLayout *
-    layout = new QVBoxLayout ();
-  layout->setSpacing (0);
-  layout->addWidget (_navigation_tool_bar);
-  layout->addWidget (_file_tree_view);
-  layout->setMargin (1);
-  widget ()->setLayout (layout);
-  // TODO: Add right-click contextual menus for copying, pasting, deleting files (and others)
-
-  connect (_current_directory, SIGNAL (returnPressed ()),
-           this, SLOT (handle_directory_entered ()));
-
-  QCompleter *
-    completer = new QCompleter (_file_system_model, this);
-  _current_directory->setCompleter (completer);
-
-  connect (this, SIGNAL (visibilityChanged (bool)),
-           this, SLOT (handle_visibility_changed (bool)));
-
-  setFocusProxy (_current_directory);
-}
-
-void
-files_dock_widget::item_double_clicked (const QModelIndex & index)
-{
-  // Retrieve the file info associated with the model index.
-  QFileInfo fileInfo = _file_system_model->fileInfo (index);
-  display_directory (fileInfo.absoluteFilePath ());
-}
-
-void
-files_dock_widget::set_current_directory (QString currentDirectory)
-{
-  display_directory (currentDirectory);
-}
-
-void
-files_dock_widget::handle_directory_entered ()
-{
-  display_directory (_current_directory->text ());
-}
-
-void
-files_dock_widget::do_up_directory ()
-{
-  QDir dir = QDir (_file_system_model->filePath (_file_tree_view->rootIndex ()));
-  dir.cdUp ();
-  display_directory (dir.absolutePath ());
-}
-
-void
-files_dock_widget::display_directory (QString directory)
-{
-  QFileInfo fileInfo (directory);
-  if (fileInfo.exists ())
-    {
-      if (fileInfo.isDir ())
-        {
-          _file_tree_view->setRootIndex (_file_system_model->
-                                        index (fileInfo.absoluteFilePath ()));
-          _file_system_model->setRootPath (fileInfo.absoluteFilePath ());
-          _current_directory->setText (fileInfo.absoluteFilePath ());
-
-          if (_last_current_directory != fileInfo.absoluteFilePath ())
-            {
-              emit displayed_directory_changed (fileInfo.absoluteFilePath ());
-            }
-
-          _last_current_directory = fileInfo.absoluteFilePath ();
-        }
-      else
-        {
-          if (QFile::exists (fileInfo.absoluteFilePath ()))
-            emit open_file (fileInfo.absoluteFilePath ());
-        }
-    }
-}
-
-void
-files_dock_widget::notice_settings ()
-{
-  QSettings *settings = resource_manager::get_settings ();
-
-  // FIXME -- what should happen if settings is 0?
-
-  _file_tree_view->setColumnHidden (0, !settings->value ("showFilenames").toBool ());
-  _file_tree_view->setColumnHidden (1, !settings->value ("showFileSize").toBool ());
-  _file_tree_view->setColumnHidden (2, !settings->value ("showFileType").toBool ());
-  _file_tree_view->setColumnHidden (3, !settings->value ("showLastModified").toBool ());
-  _file_tree_view->setAlternatingRowColors (settings->value ("useAlternatingRowColors").toBool ());
-  //if (settings.value ("showHiddenFiles").toBool ())
-  // TODO: React on option for hidden files.
-}
-
-void
-files_dock_widget::handle_visibility_changed (bool visible)
-{
-  if (visible)
-    emit active_changed (true);
-}
-
-void
-files_dock_widget::closeEvent (QCloseEvent *event)
-{
-  emit active_changed (false);
-  QDockWidget::closeEvent (event);
-}
--- a/gui/src/files-dockwidget.h	Sat Aug 18 16:23:39 2012 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,102 +0,0 @@
-/* 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/>.
- */
-
-#ifndef FILESDOCKWIDGET_H
-#define FILESDOCKWIDGET_H
-
-#include <QListView>
-#include <QDate>
-#include <QObject>
-#include <QWidget>
-#include <QListWidget>
-#include <QFileSystemModel>
-#include <QToolBar>
-#include <QToolButton>
-#include <QVBoxLayout>
-#include <QAction>
-#include <QTreeView>
-
-#include <QDockWidget>
-#include <QLineEdit>
-
-/**
-  \class files_dock_widget
-  \brief Dock widget to display files in the current directory.
-  */
-class files_dock_widget : public QDockWidget
-{
-  Q_OBJECT
-public:
-  /** Constructs a new files_dock_widget. */
-  files_dock_widget (QWidget *parent = 0);
-
-public slots:
-  /** Slot for handling a change in directory via double click. */
-  void item_double_clicked (const QModelIndex & index);
-
-  /** Slot for handling the up-directory button in the toolbar. */
-  void do_up_directory ();
-
-  /** Sets the current directory being displayed. */
-  void set_current_directory (QString currentDirectory);
-
-  /** Accepts user input a the line edit for the current directory. */
-  void handle_directory_entered ();
-
-  void display_directory (QString directory);
-
-  /** Tells the widget to react on changed settings. */
-  void notice_settings ();
-
-  /** Slot to steer changing visibility from outside. */
-  void handle_visibility_changed (bool visible);
-
-signals:
-  /** Emitted, whenever the user requested to open a file. */
-  void open_file (QString fileName);
-
-  /** Emitted, whenever the currently displayed directory changed. */
-  void displayed_directory_changed (QString directory);
-
-  /** Custom signal that tells if a user has clicke away that dock widget. */
-  void active_changed (bool active);
-
-protected:
-  void closeEvent (QCloseEvent *event);
-
-private:
-  // TODO: Add toolbar with buttons for navigating the path, creating dirs, etc
-
-  QString           _last_current_directory;
-
-  /** Toolbar for file and directory manipulation. */
-  QToolBar *        _navigation_tool_bar;
-
-  /** Variables for the up-directory action. */
-  QIcon             _directory_icon;
-  QAction *         _directory_up_action;
-  QToolButton *     _up_directory_button;
-
-  /** The file system model. */
-  QFileSystemModel *_file_system_model;
-
-  /** The file system view. */
-  QTreeView *       _file_tree_view;
-  QLineEdit *       _current_directory;
-};
-
-#endif // FILESDOCKWIDGET_H
--- a/gui/src/history-dockwidget.cc	Sat Aug 18 16:23:39 2012 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,151 +0,0 @@
-/* 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 <QVBoxLayout>
-
-#include "cmd-hist.h"
-
-#include "history-dockwidget.h"
-
-history_dock_widget::history_dock_widget (QWidget * parent)
-  : QDockWidget (parent), octave_event_observer ()
-{
-  setObjectName ("HistoryDockWidget");
-  construct ();
-}
-
-void
-history_dock_widget::event_accepted (octave_event *e)
-{
-  if (dynamic_cast <octave_update_history_event*> (e))
-    {
-      // Determine the client's (our) history length and the one of the server.
-      int clientHistoryLength = _history_model->rowCount ();
-      int serverHistoryLength = command_history::length ();
-
-      // If were behind the server, iterate through all new entries and add
-      // them to our history.
-      if (clientHistoryLength < serverHistoryLength)
-        {
-          for (int i = clientHistoryLength; i < serverHistoryLength; i++)
-            {
-              _history_model->insertRow (0);
-              _history_model->setData (_history_model->index (0),
-                QString (command_history::get_entry (i).c_str ()));
-            }
-        }
-    }
-
-  // Post a new update event in a given time. This prevents flooding the
-  // event queue.
-  _update_history_model_timer.start ();
-  delete e;
-}
-
-void
-history_dock_widget::event_reject (octave_event *e)
-{
-  delete e;
-}
-
-void
-history_dock_widget::construct ()
-{
-  _history_model = new QStringListModel ();
-  _sort_filter_proxy_model.setSourceModel (_history_model);
-  _history_list_view = new QListView (this);
-  _history_list_view->setModel (&_sort_filter_proxy_model);
-  _history_list_view->setAlternatingRowColors (true);
-  _history_list_view->setEditTriggers (QAbstractItemView::NoEditTriggers);
-  _history_list_view->setStatusTip (tr ("Doubleclick a command to transfer it to the terminal."));
-  _filter_line_edit = new QLineEdit (this);
-  _filter_line_edit->setStatusTip (tr ("Enter text to filter the command history."));
-  QVBoxLayout *layout = new QVBoxLayout ();
-
-  setWindowTitle (tr ("Command History"));
-  setWidget (new QWidget ());
-
-  layout->addWidget (_history_list_view);
-  layout->addWidget (_filter_line_edit);
-  layout->setMargin (2);
-
-  widget ()->setLayout (layout);
-
-  connect (_filter_line_edit,
-           SIGNAL (textEdited (QString)),
-           &_sort_filter_proxy_model,
-           SLOT (setFilterWildcard (QString)));
-
-  connect (_history_list_view,
-           SIGNAL (doubleClicked (QModelIndex)),
-           this,
-           SLOT (handle_double_click (QModelIndex)));
-
-  connect (this,
-           SIGNAL (visibilityChanged (bool)),
-           this,
-           SLOT (handle_visibility_changed (bool)));
-
-  _update_history_model_timer.setInterval (200);
-  _update_history_model_timer.setSingleShot (true);
-
-  connect (&_update_history_model_timer,
-           SIGNAL (timeout ()),
-           this,
-           SLOT (request_history_model_update ()));
-
-  _update_history_model_timer.start ();
-
-  setFocusProxy (_filter_line_edit);
-}
-
-void
-history_dock_widget::handle_double_click (QModelIndex modelIndex)
-{
-  emit command_double_clicked (modelIndex.data().toString());
-}
-
-void
-history_dock_widget::handle_visibility_changed (bool visible)
-{
-  if (visible)
-    emit active_changed (true);
-}
-
-void
-history_dock_widget::request_history_model_update ()
-{
-  octave_link::instance ()
-      ->post_event (new octave_update_history_event (*this));
-}
-
-void
-history_dock_widget::reset_model ()
-{
-  _history_model->setStringList (QStringList ());
-}
-
-void
-history_dock_widget::closeEvent (QCloseEvent *event)
-{
-  emit active_changed (false);
-  QDockWidget::closeEvent (event);
-}
--- a/gui/src/history-dockwidget.h	Sat Aug 18 16:23:39 2012 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,70 +0,0 @@
-/* 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/>.
- */
-
-#ifndef HISTORYDOCKWIDGET_H
-#define HISTORYDOCKWIDGET_H
-
-#include <QDockWidget>
-#include <QLineEdit>
-#include <QListView>
-#include <QSortFilterProxyModel>
-#include <QStringListModel>
-#include <QTimer>
-
-#include "octave-link.h"
-#include "octave-event-observer.h"
-
-class history_dock_widget : public QDockWidget, public octave_event_observer
-{
-Q_OBJECT
-public:
-  history_dock_widget (QWidget *parent = 0);
-
-  void event_accepted (octave_event *e);
-  void event_reject (octave_event *e);
-
-public slots:
-  void handle_visibility_changed (bool visible);
-  void request_history_model_update ();
-  void reset_model ();
-
-signals:
-  void information (QString message);
-
-  /** Emitted, whenever the user double-clicked a command in the history. */
-  void command_double_clicked (QString command);
-
-  /** Custom signal that tells if a user has clicked away that dock widget. */
-  void active_changed (bool active);
-protected:
-  void closeEvent (QCloseEvent *event);
-private slots:
-  void handle_double_click (QModelIndex modelIndex);
-
-private:
-  void construct ();
-  QListView *_history_list_view;
-  QLineEdit *_filter_line_edit;
-  QSortFilterProxyModel _sort_filter_proxy_model;
-
-  /** Stores the current history_model. */
-  QStringListModel *_history_model;
-
-  QTimer _update_history_model_timer;
-};
-
-#endif // HISTORYDOCKWIDGET_H
Binary file gui/src/icons/arrow_right.png has changed
Binary file gui/src/icons/artsbuilderexecute.png has changed
Binary file gui/src/icons/bookmark.png has changed
Binary file gui/src/icons/bp_next.png has changed
Binary file gui/src/icons/bp_prev.png has changed
Binary file gui/src/icons/bp_rm_all.png has changed
Binary file gui/src/icons/bp_toggle.png has changed
Binary file gui/src/icons/chat.png has changed
Binary file gui/src/icons/configure.png has changed
Binary file gui/src/icons/db_cont.png has changed
Binary file gui/src/icons/db_step.png has changed
Binary file gui/src/icons/db_step_in.png has changed
Binary file gui/src/icons/db_step_out.png has changed
Binary file gui/src/icons/db_stop.png has changed
Binary file gui/src/icons/editcopy.png has changed
Binary file gui/src/icons/editcut.png has changed
Binary file gui/src/icons/editpaste.png has changed
Binary file gui/src/icons/filenew.png has changed
Binary file gui/src/icons/fileopen.png has changed
Binary file gui/src/icons/filesave.png has changed
Binary file gui/src/icons/filesaveas.png has changed
Binary file gui/src/icons/find.png has changed
Binary file gui/src/icons/help_index.png has changed
--- a/gui/src/icons/icons_license	Sat Aug 18 16:23:39 2012 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,323 +0,0 @@
-Icons license for: chat.png help_index.png terminal.png
-jabber_protocol.png
-
-by http://www.everaldo.com/ on 17.07.2011:
-
-The Crystal Project are released under LGPL. GNU General Public License.
-
-This License Agreement applies to any software library or other program
-which contains a notice placed by the copyright holder or other
-authorized party saying it may be distributed under the terms of this
-Lesser General Public License (also called "this License"). Each
-licensee is addressed as "you".
-
-A "library" means a collection of software functions and/or data
-prepared so as to be conveniently linked with application programs
-(which use some of those functions and data) to form executables.
-
-The "Library", below, refers to any such software library or work which
-has been distributed under these terms. A "work based on the Library"
-means either the Library or any derivative work under copyright law:
-that is to say, a work containing the Library or a portion of it, either
-verbatim or with modifications and/or translated straightforwardly into
-another language. (Hereinafter, translation is included without
-limitation in the term "modification".)
-
-"Source code" for a work means the preferred form of the work for making
-modifications to it. For a library, complete source code means all the
-source code for all modules it contains, plus any associated interface
-definition files, plus the scripts used to control compilation and
-installation of the library.
-
-Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope. The act of running
-a program using the Library is not restricted, and output from such a
-program is covered only if its contents constitute a work based on the
-Library (independent of the use of the Library in a tool for writing
-it). Whether that is true depends on what the Library does and what the
-program that uses the Library does.
-
-You may copy and distribute verbatim copies of the Library's complete
-source code as you receive it, in any medium, provided that you
-conspicuously and appropriately publish on each copy an appropriate
-copyright notice and disclaimer of warranty; keep intact all the notices
-that refer to this License and to the absence of any warranty; and
-distribute a copy of this License along with the Library.
-
-You may charge a fee for the physical act of transferring a copy, and
-you may at your option offer warranty protection in exchange for a fee.
-
-You may modify your copy or copies of the Library or any portion of it,
-thus forming a work based on the Library, and copy and distribute such
-modifications or work under the terms of Section 1 above, provided that
-you also meet all of these conditions:
-
-The modified work must itself be a software library. You must cause the
-files modified to carry prominent notices stating that you changed the
-files and the date of any change. You must cause the whole of the work
-to be licensed at no charge to all third parties under the terms of this
-License. If a facility in the modified Library refers to a function or a
-table of data to be supplied by an application program that uses the
-facility, other than as an argument passed when the facility is invoked,
-then you must make a good faith effort to ensure that, in the event an
-application does not supply such function or table, the facility still
-operates, and performs whatever part of its purpose remains meaningful.
-(For example, a function in a library to compute square roots has a
-purpose that is entirely well-defined independent of the application.
-Therefore, Subsection 2d requires that any application-supplied function
-or table used by this function must be optional: if the application does
-not supply it, the square root function must still compute square
-roots.)
-
-These requirements apply to the modified work as a whole. If
-identifiable sections of that work are not derived from the Library, and
-can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works. But when you
-distribute the same sections as part of a whole which is a work based on
-the Library, the distribution of the whole must be on the terms of this
-License, whose permissions for other licensees extend to the entire
-whole, and thus to each and every part regardless of who wrote it.
-
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Library.
-
-In addition, mere aggregation of another work not based on the Library
-with the Library (or with a work based on the Library) on a volume of a
-storage or distribution medium does not bring the other work under the
-scope of this License.
-
-You may opt to apply the terms of the ordinary GNU General Public
-License instead of this License to a given copy of the Library. To do
-this, you must alter all the notices that refer to this License, so that
-they refer to the ordinary GNU General Public License, version 2,
-instead of to this License. (If a newer version than version 2 of the
-ordinary GNU General Public License has appeared, then you can specify
-that version instead if you wish.) Do not make any other change in these
-notices.
-
-Once this change is made in a given copy, it is irreversible for that
-copy, so the ordinary GNU General Public License applies to all
-subsequent copies and derivative works made from that copy.
-
-This option is useful when you wish to copy part of the code of the
-Library into a program that is not a library.
-
-You may copy and distribute the Library (or a portion or derivative of
-it, under Section 2) in object code or executable form under the terms
-of Sections 1 and 2 above provided that you accompany it with the
-complete corresponding machine-readable source code, which must be
-distributed under the terms of Sections 1 and 2 above on a medium
-customarily used for software interchange.
-
-If distribution of object code is made by offering access to copy from a
-designated place, then offering equivalent access to copy the source
-code from the same place satisfies the requirement to distribute the
-source code, even though third parties are not compelled to copy the
-source along with the object code.
-
-A program that contains no derivative of any portion of the Library, but
-is designed to work with the Library by being compiled or linked with
-it, is called a "work that uses the Library". Such a work, in isolation,
-is not a derivative work of the Library, and therefore falls outside the
-scope of this License.
-
-However, linking a "work that uses the Library" with the Library creates
-an executable that is a derivative of the Library (because it contains
-portions of the Library), rather than a "work that uses the library".
-The executable is therefore covered by this License. Section 6 states
-terms for distribution of such executables. When a "work that uses the
-Library" uses material from a header file that is part of the Library,
-the object code for the work may be a derivative work of the Library
-even though the source code is not. Whether this is true is especially
-significant if the work can be linked without the Library, or if the
-work is itself a library. The threshold for this to be true is not
-precisely defined by law.
-
-If such an object file uses only numerical parameters, data structure
-layouts and accessors, and small macros and small inline functions (ten
-lines or less in length), then the use of the object file is
-unrestricted, regardless of whether it is legally a derivative work.
-(Executables containing this object code plus portions of the Library
-will still fall under Section 6.)
-
-Otherwise, if the work is a derivative of the Library, you may
-distribute the object code for the work under the terms of Section 6.
-Any executables containing that work also fall under Section 6, whether
-or not they are linked directly with the Library itself.
-
-As an exception to the Sections above, you may also combine or link a
-"work that uses the Library" with the Library to produce a work
-containing portions of the Library, and distribute that work under terms
-of your choice, provided that the terms permit modification of the work
-for the customer's own use and reverse engineering for debugging such
-modifications.
-
-You must give prominent notice with each copy of the work that the
-Library is used in it and that the Library and its use are covered by
-this License. You must supply a copy of this License. If the work during
-execution displays copyright notices, you must include the copyright
-notice for the Library among them, as well as a reference directing the
-user to the copy of this License. Also, you must do one of these things:
-
-Accompany the work with the complete corresponding machine-readable
-source code for the Library including whatever changes were used in the
-work (which must be distributed under Sections 1 and 2 above); and, if
-the work is an executable linked with the Library, with the complete
-machine-readable "work that uses the Library", as object code and/or
-source code, so that the user can modify the Library and then relink to
-produce a modified executable containing the modified Library. (It is
-understood that the user who changes the contents of definitions files
-in the Library will not necessarily be able to recompile the application
-to use the modified definitions.) . Use a suitable shared library
-mechanism for linking with the Library. A suitable mechanism is one that
-(1) uses at run time a copy of the library already present on the user's
-computer system, rather than copying library functions into the
-executable, and (2) will operate properly with a modified version of the
-library, if the user installs one, as long as the modified version is
-interface-compatible with the version that the work was made with.
-Accompany the work with a written offer, valid for at least three years,
-to give the same user the materials specified in Subsection 6a, above,
-for a charge no more than the cost of performing this distribution. If
-distribution of the work is made by offering access to copy from a
-designated place, offer equivalent access to copy the above specified
-materials from the same place. Verify that the user has already received
-a copy of these materials or that you have already sent this user a
-copy. For an executable, the required form of the "work that uses the
-Library" must include any data and utility programs needed for
-reproducing the executable from it. However, as a special exception, the
-materials to be distributed need not include anything that is normally
-distributed (in either source or binary form) with the major components
-(compiler, kernel, and so on) of the operating system on which the
-executable runs, unless that component itself accompanies the
-executable.
-
-It may happen that this requirement contradicts the license restrictions
-of other proprietary libraries that do not normally accompany the
-operating system. Such a contradiction means you cannot use both them
-and the Library together in an executable that you distribute.
-
-You may place library facilities that are a work based on the Library
-side-by-side in a single library together with other library facilities
-not covered by this License, and distribute such a combined library,
-provided that the separate distribution of the work based on the Library
-and of the other library facilities is otherwise permitted, and provided
-that you do these two things:
-
-Accompany the combined library with a copy of the same work based on the
-Library, uncombined with any other library facilities. This must be
-distributed under the terms of the Sections above.
-
-Give prominent notice with the combined library of the fact that part of
-it is a work based on the Library, and explaining where to find the
-accompanying uncombined form of the same work.
-
-You may not copy, modify, sublicense, link with, or distribute the
-Library except as expressly provided under this License. Any attempt
-otherwise to copy, modify, sublicense, link with, or distribute the
-Library is void, and will automatically terminate your rights under this
-License. However, parties who have received copies, or rights, from you
-under this License will not have their licenses terminated so long as
-such parties remain in full compliance.
-
-You are not required to accept this License, since you have not signed
-it. However, nothing else grants you permission to modify or distribute
-the Library or its derivative works. These actions are prohibited by law
-if you do not accept this License. Therefore, by modifying or
-distributing the Library (or any work based on the Library), you
-indicate your acceptance of this License to do so, and all its terms and
-conditions for copying, distributing or modifying the Library or works
-based on it.
-
-Each time you redistribute the Library (or any work based on the
-Library), the recipient automatically receives a license from the
-original licensor to copy, distribute, link with or modify the Library
-subject to these terms and conditions. You may not impose any further
-restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties with
-this License.
-
-If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License. If you cannot distribute
-so as to satisfy simultaneously your obligations under this License and
-any other pertinent obligations, then as a consequence you may not
-distribute the Library at all. For example, if a patent license would
-not permit royalty-free redistribution of the Library by all those who
-receive copies directly or indirectly through you, then the only way you
-could satisfy both it and this License would be to refrain entirely from
-distribution of the Library.
-
-If any portion of this section is held invalid or unenforceable under
-any particular circumstance, the balance of the section is intended to
-apply, and the section as a whole is intended to apply in other
-circumstances.
-
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system which is implemented
-by public license practices. Many people have made generous
-contributions to the wide range of software distributed through that
-system in reliance on consistent application of that system; it is up to
-the author/donor to decide if he or she is willing to distribute
-software through any other system and a licensee cannot impose that
-choice.
-
-This section is intended to make thoroughly clear what is believed to be
-a consequence of the rest of this License.
-
-If the distribution and/or use of the Library is restricted in certain
-countries either by patents or by copyrighted interfaces, the original
-copyright holder who places the Library under this License may add an
-explicit geographical distribution limitation excluding those countries,
-so that distribution is permitted only in or among countries not thus
-excluded. In such case, this License incorporates the limitation as if
-written in the body of this License.
-
-The Free Software Foundation may publish revised and/or new versions of
-the Lesser General Public License from time to time. Such new versions
-will be similar in spirit to the present version, but may differ in
-detail to address new problems or concerns.
-
-Each version is given a distinguishing version number. If the Library
-specifies a version number of this License which applies to it and "any
-later version", you have the option of following the terms and
-conditions either of that version or of any later version published by
-the Free Software Foundation. If the Library does not specify a license
-version number, you may choose any version ever published by the Free
-Software Foundation.
-
-If you wish to incorporate parts of the Library into other free programs
-whose distribution conditions are incompatible with these, write to the
-author to ask for permission. For software which is copyrighted by the
-Free Software Foundation, write to the Free Software Foundation; we
-sometimes make exceptions for this. Our decision will be guided by the
-two goals of preserving the free status of all derivatives of our free
-software and of promoting the sharing and reuse of software generally.
-
-No Warranty
-
-Because the library is licensed free of charge, there is no warranty for
-the library, to the extent permitted by applicable law. Except when
-otherwise stated in writing the copyright holders and/or other parties
-provide the library "as is" without warranty of any kind, either
-expressed or implied, including, but not limited to, the implied
-warranties of merchantability and fitness for a particular purpose. The
-entire risk as to the quality and performance of the library is with
-you. Should the library prove defective, you assume the cost of all
-necessary servicing, repair or correction.
-
-In no event unless required by applicable law or agreed to in writing
-will any copyright holder, or any other party who may modify and/or
-redistribute the library as permitted above, be liable to you for
-damages, including any general, special, incidental or consequential
-damages arising out of the use or inability to use the library
-(including but not limited to loss of data or data being rendered
-inaccurate or losses sustained by you or third parties or a failure of
-the library to operate with any other software), even if such holder or
-other party has been advised of the possibility of such damages.
Binary file gui/src/icons/jabber_protocol.png has changed
Binary file gui/src/icons/logo.png has changed
Binary file gui/src/icons/question.png has changed
Binary file gui/src/icons/redled.png has changed
Binary file gui/src/icons/redo.png has changed
Binary file gui/src/icons/search.png has changed
Binary file gui/src/icons/star.png has changed
Binary file gui/src/icons/stop.png has changed
Binary file gui/src/icons/terminal.png has changed
Binary file gui/src/icons/undo.png has changed
Binary file gui/src/icons/up.png has changed
Binary file gui/src/icons/zoom-in.png has changed
Binary file gui/src/icons/zoom-out.png has changed
--- a/gui/src/m-editor/file-editor-interface.h	Sat Aug 18 16:23:39 2012 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,78 +0,0 @@
-/* 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/>.
- */
-
-#ifndef FILEEDITORINTERFACE_H
-#define FILEEDITORINTERFACE_H
-
-#include <QDockWidget>
-#include <QMenu>
-#include <QToolBar>
-
-class QTerminal;
-class main_window;
-
-class file_editor_interface : public QDockWidget
-{
-  Q_OBJECT
-
-  public:
-    file_editor_interface (QTerminal *terminal, main_window *mainWindow)
-      : QDockWidget ((QWidget*)mainWindow) // QDockWidget constructor is explicit, hence the cast.
-    {
-      setObjectName ("FileEditor");
-      _terminal = terminal;
-      _main_window = mainWindow;
-
-      connect (this, SIGNAL (visibilityChanged (bool)), this,
-               SLOT (handle_visibility_changed (bool)));
-    }
-
-    virtual ~file_editor_interface () { }
-
-    virtual QMenu *debug_menu () = 0;
-    virtual QToolBar *toolbar () = 0;
-
-    virtual void handle_entered_debug_mode () = 0;
-    virtual void handle_quit_debug_mode () = 0;
-
-  public slots:
-    virtual void request_new_file () = 0;
-    virtual void request_open_file () = 0;
-    virtual void request_open_file (QString fileName) = 0;
-
-  signals:
-      void active_changed (bool active);
-
-  protected:
-    QTerminal* _terminal;
-    main_window* _main_window;
-
-    void closeEvent (QCloseEvent *event)
-    {
-      emit active_changed (false);
-      QDockWidget::closeEvent (event);
-    }
-
-  protected slots:
-    void handle_visibility_changed (bool visible)
-    {
-      if (visible)
-        emit active_changed (true);
-    }
-};
-
-#endif // FILEEDITORINTERFACE_H
--- a/gui/src/m-editor/file-editor-tab.cc	Sat Aug 18 16:23:39 2012 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,816 +0,0 @@
-/* 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 "file-editor-tab.h"
-#include "file-editor.h"
-#include "find-dialog.h"
-#include "octave-link.h"
-
-
-#include <Qsci/qsciapis.h>
-// Not available in the Debian repos yet!
-// #include <Qsci/qscilexeroctave.h>
-#include "lexer-octave-gui.h"
-#include <Qsci/qscilexercpp.h>
-#include <Qsci/qscilexerbash.h>
-#include <Qsci/qscilexerperl.h>
-#include <Qsci/qscilexerbatch.h>
-#include <Qsci/qscilexerdiff.h>
-#include "resource-manager.h"
-#include <QMessageBox>
-#include <QVBoxLayout>
-
-file_editor_tab::file_editor_tab(file_editor *fileEditor)
-  : QWidget ((QWidget*)fileEditor), octave_event_observer ()
-{
-  QSettings *settings = resource_manager::get_settings ();
-
-  // FIXME -- what should happen if settings is 0?
-
-  _file_editor = fileEditor;
-  _file_name = "";
-  _edit_area = new QsciScintilla (this);
-
-  // symbols
-  _edit_area->setMarginType (1, QsciScintilla::SymbolMargin);
-  _edit_area->setMarginSensitivity (1, true);
-  _edit_area->markerDefine (QsciScintilla::RightTriangle, bookmark);
-  _edit_area->markerDefine (QPixmap (":/actions/icons/redled.png"),
-                            breakpoint);
-  _edit_area->markerDefine (QPixmap (":/actions/icons/arrow_right.png"),
-                            debugger_position);
-
-  connect (_edit_area, SIGNAL (marginClicked (int, int,
-                                              Qt::KeyboardModifiers)),
-           this, SLOT (handle_margin_clicked (int, int,
-                                              Qt::KeyboardModifiers)));
-
-  // line numbers
-  _edit_area->setMarginsForegroundColor(QColor(96,96,96));
-  _edit_area->setMarginsBackgroundColor(QColor(232,232,220));
-  if (settings->value ("editor/showLineNumbers",true).toBool ())
-    {
-      QFont marginFont( settings->value ("editor/fontName","Courier").toString () ,
-                        settings->value ("editor/fontSize",10).toInt () );
-      _edit_area->setMarginsFont( marginFont );
-      QFontMetrics metrics(marginFont);
-      _edit_area->setMarginType (2, QsciScintilla::TextMargin);
-      _edit_area->setMarginWidth(2, metrics.width("9999"));
-      _edit_area->setMarginLineNumbers (2, true);
-    }
-
-  // code folding
-  _edit_area->setMarginType (3, QsciScintilla::SymbolMargin);
-  _edit_area->setFolding (QsciScintilla::BoxedTreeFoldStyle , 3);
-
-  // other features
-  if (settings->value ("editor/highlightCurrentLine",true).toBool ())
-    {
-      _edit_area->setCaretLineVisible(true);
-      _edit_area->setCaretLineBackgroundColor(QColor(245,245,245));
-    }
-  _edit_area->setBraceMatching (QsciScintilla::StrictBraceMatch);
-  _edit_area->setAutoIndent (true);
-  _edit_area->setIndentationWidth (2);
-  _edit_area->setIndentationsUseTabs (false);
-  if (settings->value ("editor/codeCompletion",true).toBool ())
-    {
-      _edit_area->autoCompleteFromAll ();
-      _edit_area->setAutoCompletionSource(QsciScintilla::AcsAll);
-      _edit_area->setAutoCompletionThreshold (1);
-    }
-  _edit_area->setUtf8 (true);
-
-  QVBoxLayout *layout = new QVBoxLayout ();
-  layout->addWidget (_edit_area);
-  layout->setMargin (0);
-  setLayout (layout);
-
-  // connect modified signal
-  connect (_edit_area, SIGNAL (modificationChanged (bool)),
-           this, SLOT (update_window_title (bool)));
-  connect (_edit_area, SIGNAL (copyAvailable (bool)),
-           this, SLOT (handle_copy_available (bool)));
-  connect (&_file_system_watcher, SIGNAL (fileChanged (QString)),
-           this, SLOT (file_has_changed (QString)));
-
-  _file_name = "";
-  update_window_title (false);
-}
-
-bool
-file_editor_tab::copy_available ()
-{
-  return _copy_available;
-}
-
-void
-file_editor_tab::event_accepted (octave_event *e)
-{
-  if (dynamic_cast<octave_run_file_event*> (e))
-    {
-      // File was run successfully.
-    }
-
-  if (octave_add_breakpoint_event *abe
-      = dynamic_cast<octave_add_breakpoint_event*> (e))
-    {
-      // TODO: Check file.
-      _edit_area->markerAdd (abe->get_line (), breakpoint);
-    }
-
-  if (octave_remove_breakpoint_event *rbe
-      = dynamic_cast<octave_remove_breakpoint_event*> (e))
-    {
-      // TODO: Check file.
-      _edit_area->markerDelete (rbe->get_line (), breakpoint);
-    }
-
-  if (octave_remove_all_breakpoints_event *rabe
-      = dynamic_cast<octave_remove_all_breakpoints_event*> (e))
-    {
-      Q_UNUSED (rabe);
-      _edit_area->markerDeleteAll (breakpoint);
-    }
-
-  delete e;
-}
-
-void
-file_editor_tab::event_reject (octave_event *e)
-{
-  if (dynamic_cast<octave_run_file_event*> (e))
-    {
-      // Running file failed.
-    }
-  delete e;
-}
-
-void
-file_editor_tab::closeEvent (QCloseEvent *event)
-{
-  if (_file_editor->get_main_window ()->is_closing ())
-    {
-      // close whole application: save file or not if modified
-      check_file_modified ("Closing Octave", 0); // no cancel possible
-      event->accept ();
-    }
-  else
-    {
-      // ignore close event if file is not saved and user cancels
-      // closing this window
-      if (check_file_modified ("Close File",
-                               QMessageBox::Cancel) == QMessageBox::Cancel)
-        {
-          event->ignore ();
-        }
-      else
-        {
-          event->accept();
-        }
-    }
-}
-
-void
-file_editor_tab::set_file_name (QString fileName)
-{
-  _file_name = fileName;
-  update_lexer ();
-  update_tracked_file ();
-}
-
-void
-file_editor_tab::handle_margin_clicked(int margin, int line,
-                                       Qt::KeyboardModifiers state)
-{
-  Q_UNUSED (state);
-  if (margin == 1)
-    {
-      unsigned int mask = _edit_area->markersAtLine (line);
-
-      if (state & Qt::ControlModifier)
-        {
-          if (mask && (1 << bookmark))
-            _edit_area->markerDelete(line,bookmark);
-          else
-            _edit_area->markerAdd(line,bookmark);
-        }
-      else
-        {
-          if (mask && (1 << breakpoint))
-            {
-              request_remove_breakpoint (line);
-            }
-          else
-            {
-              request_add_breakpoint (line);
-            }
-        }
-    }
-}
-
-void
-file_editor_tab::update_lexer ()
-{
-  QsciLexer *lexer =  _edit_area->lexer ();
-  delete lexer;
-
-  if (_file_name.endsWith (".m") || _file_name.endsWith (".M"))
-    {
-      lexer = new lexer_octave_gui ();
-
-      // The API info that is used for auto completion
-      // TODO: Where to store a file with API info (raw or prepared?)?
-      // TODO: Also provide infos on octave-forge functions?
-      // TODO: Also provide infos on function parameters?
-      // By now, use the keywords-list from syntax highlighting
-
-      QsciAPIs *lexer_api = new QsciAPIs (lexer);
-
-      QString keyword;
-      QStringList keywordList;
-
-       // get whole string with all keywords
-      keyword = lexer->keywords (1);
-      // split into single strings
-      keywordList = keyword.split (QRegExp ("\\s+"));
-
-      int i;
-      for (i = 0; i < keywordList.size (); i++)
-        {
-           // add single strings to the API
-          lexer_api->add (keywordList.at (i));
-        }
-      // prepare API info ... this make take some time
-      lexer_api->prepare ();
-    }
-  else if (_file_name.endsWith (".c")
-        || _file_name.endsWith (".cc")
-        || _file_name.endsWith (".cpp")
-        || _file_name.endsWith (".cxx")
-        || _file_name.endsWith (".c++")
-        || _file_name.endsWith (".h")
-        || _file_name.endsWith (".hh")
-        || _file_name.endsWith (".hpp")
-        || _file_name.endsWith (".h++"))
-    {
-      lexer = new QsciLexerCPP ();
-    }
-  else if (_file_name.endsWith (".pl"))
-    {
-      lexer = new QsciLexerPerl ();
-    }
-  else if (_file_name.endsWith (".bat"))
-    {
-      lexer = new QsciLexerBatch ();
-    }
-  else if (_file_name.endsWith (".diff"))
-    {
-      lexer = new QsciLexerDiff ();
-    }
-  else // Default to bash lexer.
-    {
-      lexer = new QsciLexerBash ();
-    }
-
-  QSettings *settings = resource_manager::get_settings ();
-
-  // FIXME -- what should happen if settings is 0?
-
-  // Editor font (default or from settings)
-  lexer->setDefaultFont (QFont (
-                                settings->value ("editor/fontName",
-                                                 "Courier").toString (),
-                                settings->value ("editor/fontSize",
-                                                 10).toInt ()));
-
-  // TODO: Autoindent not working as it should
-  lexer->setAutoIndentStyle (QsciScintilla::AiMaintain ||
-                             QsciScintilla::AiOpening  ||
-                             QsciScintilla::AiClosing);
-
-  _edit_area->setLexer (lexer);
-}
-
-void
-file_editor_tab::request_add_breakpoint (int line)
-{
-  QFileInfo file_info (_file_name);
-  QString path = file_info.absolutePath ();
-  QString function_name = file_info.fileName ();
-
-  // We have to cut off the suffix, because octave appends it.
-  function_name.chop (file_info.suffix ().length () + 1);
-
-  octave_link::instance ()->post_event
-      (new octave_add_breakpoint_event (*this,
-                                        path.toStdString (),
-                                        function_name.toStdString (),
-                                        line));
-}
-
-void
-file_editor_tab::request_remove_breakpoint (int line)
-{
-  QFileInfo file_info (_file_name);
-  QString path = file_info.absolutePath ();
-  QString function_name = file_info.fileName ();
-
-  // We have to cut off the suffix, because octave appends it.
-  function_name.chop (file_info.suffix ().length () + 1);
-
-  octave_link::instance ()->post_event
-      (new octave_remove_breakpoint_event (*this,
-                                           path.toStdString (),
-                                           function_name.toStdString (),
-                                           line));
-}
-
-void
-file_editor_tab::comment_selected_text ()
-{
-  do_comment_selected_text (true);
-}
-
-void
-file_editor_tab::uncomment_selected_text ()
-{
-  do_comment_selected_text (false);
-}
-
-void
-file_editor_tab::do_comment_selected_text (bool comment)
-{
-  if ( _edit_area->hasSelectedText() )
-    {
-      int lineFrom, lineTo, colFrom, colTo, i;
-      _edit_area->getSelection (&lineFrom,&colFrom,&lineTo,&colTo);
-      if ( colTo == 0 )  // the beginning of last line is not selected
-        lineTo--;        // stop at line above
-      _edit_area->beginUndoAction ();
-      for ( i=lineFrom; i<=lineTo; i++ )
-        {
-          if ( comment )
-            _edit_area->insertAt("%",i,0);
-          else
-            {
-              QString line(_edit_area->text(i));
-              if ( line.startsWith("%") )
-                {
-                  _edit_area->setSelection(i,0,i,1);
-                  _edit_area->removeSelectedText();
-                }
-            }
-        }
-      _edit_area->endUndoAction ();
-    }
-}
-
-void
-file_editor_tab::find ()
-{
-  find_dialog dialog (_edit_area);
-  dialog.exec ();
-}
-
-void
-file_editor_tab::update_window_title (bool modified)
-{
-  QString title(_file_name);
-  if ( !_long_title )
-    {
-      QFileInfo file(_file_name);
-      title = file.fileName();
-    }
-
-  if ( modified )
-    {
-      emit file_name_changed (title.prepend("* "));
-    }
-  else
-    emit file_name_changed (title);
-}
-
-void
-file_editor_tab::handle_copy_available(bool enableCopy)
-{
-  _copy_available = enableCopy;
-  emit editor_state_changed ();
-}
-
-void
-file_editor_tab::update_tracked_file ()
-{
-  QStringList trackedFiles = _file_system_watcher.files ();
-  if (!trackedFiles.isEmpty ())
-    _file_system_watcher.removePaths (trackedFiles);
-
-  if (_file_name != UNNAMED_FILE)
-    _file_system_watcher.addPath (_file_name);
-}
-
-int
-file_editor_tab::check_file_modified (QString msg, int cancelButton)
-{
-  int decision = QMessageBox::Yes;
-  if (_edit_area->isModified ())
-    {
-      // file is modified but not saved, aks user what to do
-      decision = QMessageBox::warning (this,
-                                       msg,
-                                       tr ("The file %1\n"
-                                           "has been modified. Do you want to save the changes?").
-                                       arg (_file_name),
-                                       QMessageBox::Save,
-                                       QMessageBox::Discard, cancelButton );
-      if (decision == QMessageBox::Save)
-        {
-          save_file ();
-          if (_edit_area->isModified ())
-            {
-              // If the user attempted to save the file, but it's still
-              // modified, then probably something went wrong, so return
-              // cancel for cancel this operation or try to save files
-              // as if cancel not possible
-              if ( cancelButton )
-                return (QMessageBox::Cancel);
-              else
-                save_file_as ();
-            }
-        }
-    }
-  return (decision);
-}
-
-void
-file_editor_tab::remove_bookmark ()
-{
-  _edit_area->markerDeleteAll (bookmark);
-}
-
-void
-file_editor_tab::toggle_bookmark ()
-{
-  int line, cur;
-  _edit_area->getCursorPosition (&line,&cur);
-  if ( _edit_area->markersAtLine (line) && (1 << bookmark) )
-    _edit_area->markerDelete (line, bookmark);
-  else
-    _edit_area->markerAdd (line, bookmark);
-}
-
-void
-file_editor_tab::next_bookmark()
-{
-  int line, cur, nextline;
-  _edit_area->getCursorPosition (&line, &cur);
-  if ( _edit_area->markersAtLine (line) && (1 << bookmark) )
-    line++; // we have a breakpoint here, so start search from next line
-  nextline = _edit_area->markerFindNext (line, (1 << bookmark));
-  _edit_area->setCursorPosition (nextline, 0);
-}
-
-void
-file_editor_tab::previous_bookmark ()
-{
-  int line, cur, prevline;
-  _edit_area->getCursorPosition (&line, &cur);
-  if ( _edit_area->markersAtLine (line) && (1 << bookmark) )
-    line--; // we have a breakpoint here, so start search from prev line
-  prevline = _edit_area->markerFindPrevious (line, (1 << bookmark));
-  _edit_area->setCursorPosition (prevline, 0);
-}
-
-void
-file_editor_tab::remove_all_breakpoints ()
-{
-  QFileInfo file_info (_file_name);
-  QString path = file_info.absolutePath ();
-  QString function_name = file_info.fileName ();
-
-  // We have to cut off the suffix, because octave appends it.
-  function_name.chop (file_info.suffix ().length () + 1);
-
-  octave_link::instance ()->post_event
-      (new octave_remove_all_breakpoints_event (*this,
-                                                path.toStdString (),
-                                                function_name.toStdString ()));
-}
-
-void
-file_editor_tab::toggle_breakpoint ()
-{
-  int line, cur;
-  _edit_area->getCursorPosition (&line, &cur);
-  if ( _edit_area->markersAtLine (line) && (1 << breakpoint) )
-    request_remove_breakpoint (line);
-  else
-    request_add_breakpoint (line);
-}
-
-void
-file_editor_tab::next_breakpoint ()
-{
-  int line, cur, nextline;
-  _edit_area->getCursorPosition (&line, &cur);
-  if ( _edit_area->markersAtLine (line) && (1 << breakpoint) )
-    line++; // we have a breakpoint here, so start search from next line
-  nextline = _edit_area->markerFindNext (line, (1 << breakpoint));
-  _edit_area->setCursorPosition (nextline, 0);
-}
-
-void
-file_editor_tab::previous_breakpoint ()
-{
-  int line, cur, prevline;
-  _edit_area->getCursorPosition (&line, &cur);
-  if ( _edit_area->markersAtLine (line) && (1 << breakpoint) )
-    line--; // we have a breakpoint here, so start search from prev line
-  prevline = _edit_area->markerFindPrevious (line, (1 << breakpoint));
-  _edit_area->setCursorPosition (prevline, 0);
-}
-
-void
-file_editor_tab::cut ()
-{
-  _edit_area->cut ();
-}
-
-void
-file_editor_tab::copy ()
-{
-  _edit_area->copy ();
-}
-
-void
-file_editor_tab::paste ()
-{
-  _edit_area->paste ();
-}
-
-void
-file_editor_tab::undo ()
-{
-  _edit_area->undo ();
-}
-
-void
-file_editor_tab::redo ()
-{
-  _edit_area->redo ();
-}
-
-void
-file_editor_tab::set_debugger_position (int line)
-{
-  _edit_area->markerDeleteAll (debugger_position);
-  if (line > 0)
-    {
-      _edit_area->markerAdd (line, debugger_position);
-    }
-}
-
-void
-file_editor_tab::set_modified (bool modified)
-{
-  _edit_area->setModified (modified);
-}
-
-bool
-file_editor_tab::open_file ()
-{
-  QString openFileName;
-  QFileDialog fileDialog(this);
-  fileDialog.setNameFilter(SAVE_FILE_FILTER);
-  fileDialog.setAcceptMode(QFileDialog::AcceptOpen);
-  fileDialog.setViewMode(QFileDialog::Detail);
-  if (fileDialog.exec () == QDialog::Accepted)
-    {
-      openFileName = fileDialog.selectedFiles().at(0);
-      if (openFileName.isEmpty ())
-        return false;
-
-      load_file(openFileName);
-      return true;
-    }
-  else
-    {
-      return false;
-    }
-}
-
-void
-file_editor_tab::load_file (QString fileName)
-{
-  if (!_file_editor->isVisible ())
-    {
-      _file_editor->show ();
-    }
-
-  QFile file (fileName);
-  if (!file.open (QFile::ReadOnly))
-    {
-      QMessageBox::warning (this, tr ("Octave Editor"),
-                            tr ("Could not open file %1 for read:\n%2.").arg (fileName).
-                            arg (file.errorString ()));
-      return;
-    }
-
-  QTextStream in (&file);
-  QApplication::setOverrideCursor (Qt::WaitCursor);
-  _edit_area->setText (in.readAll ());
-  QApplication::restoreOverrideCursor ();
-
-  set_file_name (fileName);
-  update_tracked_file ();
-
-
-  update_window_title (false); // window title (no modification)
-  _edit_area->setModified (false); // loaded file is not modified yet
-}
-
-void
-file_editor_tab::new_file ()
-{
-  if (!_file_editor->isVisible ())
-    {
-      _file_editor->show ();
-    }
-
-  set_file_name (UNNAMED_FILE);
-  update_window_title (false); // window title (no modification)
-  _edit_area->setText ("");
-  _edit_area->setModified (false); // new file is not modified yet
-}
-
-bool file_editor_tab::save_file()
-{
-  return save_file (_file_name);
-}
-
-bool
-file_editor_tab::save_file (QString saveFileName)
-{
-  // it is a new file with the name "<unnamed>" -> call saveFielAs
-  if (saveFileName == UNNAMED_FILE || saveFileName.isEmpty ())
-    {
-      return save_file_as();
-    }
-
-  QStringList watched_files = _file_system_watcher.files();
-  if (!watched_files.isEmpty ())
-    _file_system_watcher.removePaths(watched_files);
-
-  // open the file for writing
-  QFile file (saveFileName);
-  if (!file.open (QFile::WriteOnly))
-    {
-      QMessageBox::warning (this, tr ("Octave Editor"),
-                            tr ("Could not open file %1 for write:\n%2.").
-                            arg (saveFileName).arg (file.errorString ()));
-      _file_system_watcher.addPaths (watched_files);
-      return false;
-    }
-
-  // save the contents into the file
-  QTextStream out (&file);
-  QApplication::setOverrideCursor (Qt::WaitCursor);
-  out << _edit_area->text ();
-  QApplication::restoreOverrideCursor ();
-
-  // save file name for later use
-  _file_name = saveFileName;
-  // set the window title to actual file name (not modified)
-  update_window_title (false);
-   // files is save -> not modified
-  _edit_area->setModified (false);
-  file.close();
-
-  if (!watched_files.isEmpty ())
-    _file_system_watcher.addPaths (watched_files);
-  return true;
-}
-
-bool
-file_editor_tab::save_file_as ()
-{
-  QString saveFileName(_file_name);
-  QFileDialog fileDialog(this);
-  if (saveFileName == UNNAMED_FILE || saveFileName.isEmpty ())
-    {
-      QString directory = QString::fromStdString
-          (octave_link::instance ()->get_last_working_directory ());
-
-      if (directory.isEmpty ())
-        {
-          directory = QDir::homePath ();
-        }
-
-      fileDialog.setDirectory (directory);
-    }
-  else
-    {
-      fileDialog.selectFile (saveFileName);
-    }
-  fileDialog.setNameFilter (SAVE_FILE_FILTER);
-  fileDialog.setDefaultSuffix ("m");
-  fileDialog.setAcceptMode (QFileDialog::AcceptSave);
-  fileDialog.setViewMode (QFileDialog::Detail);
-
-  if (fileDialog.exec ())
-    {
-      saveFileName = fileDialog.selectedFiles ().at (0);
-      if (saveFileName.isEmpty ())
-        return false;
-
-      return save_file (saveFileName);
-    }
-
-  return false;
-}
-
-void
-file_editor_tab::run_file ()
-{
-  if (_edit_area->isModified ())
-    save_file(_file_name);
-
-  QFileInfo file_info (_file_name);
-  QString path = file_info.absolutePath ();
-  //QString current_path = QString::fromStdString
-      (octave_link::instance ()->get_last_working_directory ());
-  QString function_name = file_info.fileName ();
-
-  // We have to cut off the suffix, because octave appends it.
-  function_name.chop (file_info.suffix ().length () + 1);
-  _file_editor->terminal ()->sendText (QString ("cd \'%1\'\n%2\n")
-    .arg(path).arg (function_name));
-  // TODO: Sending a run event crashes for long scripts. Find out why.
-  //  octave_link::instance ()
-  //      ->post_event (new octave_run_file_event (*this, _file_name.toStdString ()));
-}
-
-void
-file_editor_tab::file_has_changed (QString fileName)
-{
-  Q_UNUSED (fileName);
-  if (QFile::exists (_file_name))
-    {
-      // Prevent popping up multiple message boxes when the file has
-      // been changed multiple times.
-      static bool alreadyAsking = false;
-      if (!alreadyAsking)
-        {
-          alreadyAsking = true;
-
-          int decision =
-          QMessageBox::warning (this, tr ("Octave Editor"),
-                                tr ("It seems that \'%1\' has been modified by another application. Do you want to reload it?").
-                                arg (_file_name), QMessageBox::Yes,
-                                QMessageBox::No);
-
-          if (decision == QMessageBox::Yes)
-            {
-              load_file (_file_name);
-            }
-
-          alreadyAsking = false;
-        }
-    }
-  else
-    {
-      int decision =
-      QMessageBox::warning (this, tr ("Octave Editor"),
-                            tr ("It seems that \'%1\' has been deleted or renamed. Do you want to save it now?").
-                            arg (_file_name), QMessageBox::Save,
-                            QMessageBox::Close);
-      if (decision == QMessageBox::Save)
-        {
-          if (!save_file_as ())
-            {
-              set_file_name (UNNAMED_FILE);
-              update_window_title (true); // window title (no modification)
-              set_modified (true);
-              update_tracked_file ();
-            }
-        }
-      else
-        {
-          emit close_request ();
-        }
-    }
-}
--- a/gui/src/m-editor/file-editor-tab.h	Sat Aug 18 16:23:39 2012 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,102 +0,0 @@
-/* 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/>.
- */
-
-#ifndef FILEEDITORTAB_H
-#define FILEEDITORTAB_H
-
-#include <Qsci/qsciscintilla.h>
-#include <QWidget>
-#include <QCloseEvent>
-#include <QFileSystemWatcher>
-#include "octave-event-observer.h"
-
-class file_editor;
-class file_editor_tab : public QWidget, public octave_event_observer
-{
-  Q_OBJECT
-public:
-  file_editor_tab (file_editor *fileEditor);
-  bool copy_available ();
-
-  void event_accepted (octave_event *e);
-  void event_reject (octave_event *e);
-
-public slots:
-  void update_window_title(bool modified);
-  void handle_copy_available(bool enableCopy);
-  void handle_margin_clicked (int line, int margin, Qt::KeyboardModifiers state);
-  void comment_selected_text ();
-  void uncomment_selected_text ();
-  void find ();
-  void remove_bookmark ();
-  void toggle_bookmark ();
-  void next_bookmark ();
-  void previous_bookmark ();
-  void remove_all_breakpoints ();
-  void toggle_breakpoint ();
-  void next_breakpoint ();
-  void previous_breakpoint ();
-  void cut ();
-  void copy ();
-  void paste ();
-  void undo ();
-  void redo ();
-  void set_debugger_position (int line);
-
-  void set_modified (bool modified = true);
-
-  bool open_file ();
-  void load_file (QString fileName);
-  void new_file ();
-  bool save_file ();
-  bool save_file(QString saveFileName);
-  bool save_file_as();
-  void run_file ();
-
-  void file_has_changed (QString fileName);
-
-signals:
-  void file_name_changed (QString fileName);
-  void editor_state_changed ();
-  void close_request ();
-
-protected:
-  void closeEvent (QCloseEvent *event);
-  void set_file_name (QString fileName);
-
-private:
-  void update_lexer ();
-  void request_add_breakpoint (int line);
-  void request_remove_breakpoint (int line);
-
-  void update_tracked_file ();
-  int check_file_modified (QString msg, int cancelButton);
-  void do_comment_selected_text (bool comment);
-
-  file_editor *         _file_editor;
-  QsciScintilla *       _edit_area;
-
-  QString               _file_name;
-  QString               _file_name_short;
-
-  bool                  _long_title;
-  bool                  _copy_available;
-
-  QFileSystemWatcher    _file_system_watcher;
-};
-
-#endif // FILEEDITORTAB_H
--- a/gui/src/m-editor/file-editor.cc	Sat Aug 18 16:23:39 2012 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,558 +0,0 @@
-/* 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 "file-editor.h"
-#include <QVBoxLayout>
-#include <QApplication>
-#include <QFile>
-#include <QFont>
-#include <QFileDialog>
-#include <QMessageBox>
-#include <QStyle>
-#include <QTextStream>
-
-file_editor::file_editor (QTerminal *terminal, main_window *m)
-  : file_editor_interface(terminal, m)
-{
-  construct ();
-
-  _terminal = terminal;
-  _main_window = m;
-  setVisible (false);
-}
-
-file_editor::~file_editor ()
-{
-}
-
-QTerminal *
-file_editor::terminal ()
-{
-  return _terminal;
-}
-
-main_window *
-file_editor::get_main_window ()
-{
-  return _main_window;
-}
-
-QMenu *
-file_editor::debug_menu ()
-{
-  return _debug_menu;
-}
-
-QToolBar *
-file_editor::toolbar ()
-{
-  return _tool_bar;
-}
-
-void
-file_editor::handle_entered_debug_mode ()
-{
-  _run_action->setEnabled (false);
-}
-
-void
-file_editor::handle_quit_debug_mode ()
-{
-  _run_action->setEnabled (true);
-}
-
-void
-file_editor::request_new_file ()
-{
-  file_editor_tab *fileEditorTab = new file_editor_tab (this);
-  if (fileEditorTab)
-    {
-      add_file_editor_tab (fileEditorTab);
-      fileEditorTab->new_file ();
-    }
-}
-
-void
-file_editor::request_open_file ()
-{
-  file_editor_tab *fileEditorTab = new file_editor_tab (this);
-  if (fileEditorTab)
-    {
-      add_file_editor_tab (fileEditorTab);
-      if (!fileEditorTab->open_file ())
-        {
-          // If no file was loaded, remove the tab again.
-          _tab_widget->removeTab (_tab_widget->indexOf (fileEditorTab));
-        }
-    }
-}
-
-void
-file_editor::request_open_file (QString fileName)
-{
-  if (!isVisible ())
-    {
-      show ();
-    }
-
-  file_editor_tab *fileEditorTab = new file_editor_tab (this);
-  if (fileEditorTab)
-    {
-      add_file_editor_tab (fileEditorTab);
-      fileEditorTab->load_file (fileName);
-    }
-}
-
-void
-file_editor::request_undo ()
-{
-  file_editor_tab *_active_file_editor_tab = active_editor_tab ();
-  if (_active_file_editor_tab)
-    _active_file_editor_tab->undo ();
-}
-
-void
-file_editor::request_redo ()
-{
-  file_editor_tab *_active_file_editor_tab = active_editor_tab ();
-  if (_active_file_editor_tab)
-    _active_file_editor_tab->redo ();
-}
-
-void
-file_editor::request_copy ()
-{
-  file_editor_tab *_active_file_editor_tab = active_editor_tab ();
-  if (_active_file_editor_tab)
-    _active_file_editor_tab->copy ();
-}
-
-void
-file_editor::request_cut ()
-{
-  file_editor_tab *_active_file_editor_tab = active_editor_tab ();
-  if (_active_file_editor_tab)
-    _active_file_editor_tab->cut ();
-}
-
-void
-file_editor::request_paste ()
-{
-  file_editor_tab *_active_file_editor_tab = active_editor_tab ();
-  if (_active_file_editor_tab)
-    _active_file_editor_tab->paste ();
-}
-
-void
-file_editor::request_save_file ()
-{
-  file_editor_tab *_active_file_editor_tab = active_editor_tab ();
-  if (_active_file_editor_tab)
-    _active_file_editor_tab->save_file ();
-}
-
-void
-file_editor::request_save_file_as ()
-{
-  file_editor_tab *_active_file_editor_tab = active_editor_tab ();
-  if (_active_file_editor_tab)
-    _active_file_editor_tab->save_file_as ();
-}
-
-void
-file_editor::request_run_file ()
-{
-  file_editor_tab *_active_file_editor_tab = active_editor_tab ();
-  if (_active_file_editor_tab)
-    _active_file_editor_tab->run_file ();
-}
-
-void
-file_editor::request_toggle_bookmark ()
-{
-  file_editor_tab *_active_file_editor_tab = active_editor_tab ();
-  if (_active_file_editor_tab)
-    _active_file_editor_tab->toggle_bookmark ();
-}
-
-void
-file_editor::request_next_bookmark ()
-{
-  file_editor_tab *_active_file_editor_tab = active_editor_tab ();
-  if (_active_file_editor_tab)
-    _active_file_editor_tab->next_bookmark ();
-}
-
-void
-file_editor::request_previous_bookmark ()
-{
-  file_editor_tab *_active_file_editor_tab = active_editor_tab ();
-  if (_active_file_editor_tab)
-    _active_file_editor_tab->previous_bookmark ();
-}
-
-void
-file_editor::request_remove_bookmark ()
-{
-  file_editor_tab *_active_file_editor_tab = active_editor_tab ();
-  if (_active_file_editor_tab)
-    _active_file_editor_tab->remove_bookmark ();
-}
-
-void
-file_editor::request_toggle_breakpoint ()
-{
-  file_editor_tab *_active_file_editor_tab = active_editor_tab ();
-  if (_active_file_editor_tab)
-    _active_file_editor_tab->toggle_breakpoint ();
-}
-
-void
-file_editor::request_next_breakpoint ()
-{
-  file_editor_tab *_active_file_editor_tab = active_editor_tab ();
-  if (_active_file_editor_tab)
-    _active_file_editor_tab->next_breakpoint ();
-}
-
-void
-file_editor::request_previous_breakpoint ()
-{
-  file_editor_tab *_active_file_editor_tab = active_editor_tab ();
-  if (_active_file_editor_tab)
-    _active_file_editor_tab->previous_breakpoint ();
-}
-
-void
-file_editor::request_remove_breakpoint ()
-{
-  file_editor_tab *_active_file_editor_tab = active_editor_tab ();
-  if (_active_file_editor_tab)
-    _active_file_editor_tab->remove_all_breakpoints ();
-}
-
-void
-file_editor::request_comment_selected_text ()
-{
-  file_editor_tab *_active_file_editor_tab = active_editor_tab ();
-  if (_active_file_editor_tab)
-    _active_file_editor_tab->comment_selected_text ();
-}
-
-void
-file_editor::request_uncomment_selected_text ()
-{
-  file_editor_tab *_active_file_editor_tab = active_editor_tab ();
-  if (_active_file_editor_tab)
-    _active_file_editor_tab->uncomment_selected_text ();
-}
-
-void
-file_editor::request_find ()
-{
-  file_editor_tab *_active_file_editor_tab = active_editor_tab ();
-  if (_active_file_editor_tab)
-    _active_file_editor_tab->find ();
-}
-
-void
-file_editor::handle_file_name_changed (QString fileName)
-{
-  QObject *senderObject = sender ();
-  file_editor_tab *fileEditorTab
-    = dynamic_cast<file_editor_tab*> (senderObject);
-  if (fileEditorTab)
-    {
-      for(int i = 0; i < _tab_widget->count (); i++)
-        {
-          if (_tab_widget->widget (i) == fileEditorTab)
-            {
-              _tab_widget->setTabText (i, fileName);
-            }
-        }
-    }
-}
-
-void
-file_editor::handle_tab_close_request (int index)
-{
-  file_editor_tab *fileEditorTab
-    = dynamic_cast <file_editor_tab*> (_tab_widget->widget (index));
-  if (fileEditorTab)
-    if (fileEditorTab->close ())
-      {
-        _tab_widget->removeTab (index);
-        delete fileEditorTab;
-      }
-}
-
-void
-file_editor::handle_tab_close_request ()
-{
-  file_editor_tab *fileEditorTab = dynamic_cast <file_editor_tab*> (sender ());
-  if (fileEditorTab)
-    if (fileEditorTab->close ())
-      {
-        _tab_widget->removeTab (_tab_widget->indexOf (fileEditorTab));
-        delete fileEditorTab;
-      }
-}
-
-void
-file_editor::active_tab_changed (int index)
-{
-  Q_UNUSED (index);
-  handle_editor_state_changed ();
-}
-
-void
-file_editor::handle_editor_state_changed ()
-{
-  file_editor_tab *f = active_editor_tab ();
-  if (f)
-    {
-      bool copy_available = f->copy_available ();
-      _copy_action->setEnabled (copy_available);
-      _cut_action->setEnabled (copy_available);
-      setFocusProxy (f);
-    }
-}
-
-void
-file_editor::construct ()
-{
-  QWidget *widget = new QWidget (this);
-  QStyle *style = QApplication::style ();
-
-  _menu_bar = new QMenuBar (widget);
-  _tool_bar = new QToolBar (widget);
-  _tab_widget = new QTabWidget (widget);
-  _tab_widget->setTabsClosable (true);
-
-  QAction *new_action = new QAction (QIcon(":/actions/icons/filenew.png"),
-        tr("&New File"), _tool_bar);
-
-  QAction *open_action = new QAction (QIcon(":/actions/icons/fileopen.png"),
-        tr("&Open File"), _tool_bar);
-
-  QAction *save_action = new QAction (QIcon(":/actions/icons/filesave.png"),
-        tr("&Save File"), _tool_bar);
-
-  QAction *save_as_action
-    = new QAction (QIcon(":/actions/icons/filesaveas.png"),
-                   tr("Save File &As"), _tool_bar);
-
-  QAction *undo_action = new QAction (QIcon(":/actions/icons/undo.png"),
-        tr("&Undo"), _tool_bar);
-
-  QAction *redo_action = new QAction (QIcon(":/actions/icons/redo.png"),
-        tr("&Redo"), _tool_bar);
-
-  _copy_action = new QAction (QIcon(":/actions/icons/editcopy.png"),
-                              tr ("&Copy"), _tool_bar);
-
-  _cut_action  = new QAction (QIcon(":/actions/icons/editcut.png"),
-                              tr ("Cu&t"), _tool_bar);
-
-  QAction *paste_action
-      = new QAction (QIcon (":/actions/icons/editpaste.png"),
-                     tr("Paste"), _tool_bar);
-  QAction *next_bookmark_action       = new QAction (tr ("&Next Bookmark"),_tool_bar);
-  QAction *previous_bookmark_action   = new QAction (tr ("Pre&vious Bookmark"),_tool_bar);
-  QAction *toggle_bookmark_action     = new QAction (tr ("Toggle &Bookmark"),_tool_bar);
-  QAction *remove_bookmark_action     = new QAction (tr ("&Remove All Bookmarks"),_tool_bar);
-
-  QAction *next_breakpoint_action
-      = new QAction (QIcon (":/actions/icons/bp_next.png"),
-                     tr ("&Next breakpoint"), _tool_bar);
-  QAction *previous_breakpoint_action
-      = new QAction (QIcon (":/actions/icons/bp_prev.png"),
-                     tr ("Pre&vious breakpoint"), _tool_bar);
-  QAction *toggle_breakpoint_action
-      = new QAction (QIcon (":/actions/icons/bp_toggle.png"),
-                     tr ("Toggle &breakpoint"), _tool_bar);
-  QAction *remove_all_breakpoints_action
-      = new QAction (QIcon (":/actions/icons/bp_rm_all.png"),
-                     tr ("&Remove All breakpoints"), _tool_bar);
-
-  QAction *comment_selection_action   = new QAction (tr ("&Comment Selected Text"),_tool_bar);
-  QAction *uncomment_selection_action = new QAction (tr ("&Uncomment Selected Text"),_tool_bar);
-
-  QAction *find_action = new QAction (QIcon(":/actions/icons/find.png"),
-                                      tr ("&Find and Replace"), _tool_bar);
-
-  _run_action = new QAction (QIcon(":/actions/icons/artsbuilderexecute.png"),
-        tr("Save File And Run"), _tool_bar);
-
-  // some actions are disabled from the beginning
-  _copy_action->setEnabled(false);
-  _cut_action->setEnabled(false);
-  _run_action->setShortcut                      (Qt::ControlModifier+ Qt::Key_R);
-  _run_action->setShortcutContext               (Qt::WindowShortcut);
-  next_bookmark_action->setShortcut             (Qt::Key_F2);
-  next_bookmark_action->setShortcutContext      (Qt::WindowShortcut);
-  previous_bookmark_action->setShortcut         (Qt::SHIFT + Qt::Key_F2);
-  previous_bookmark_action->setShortcutContext  (Qt::WindowShortcut);
-  toggle_bookmark_action->setShortcut           (Qt::Key_F7);
-  toggle_bookmark_action->setShortcutContext    (Qt::WindowShortcut);
-  comment_selection_action->setShortcut         (Qt::ControlModifier + Qt::Key_7);
-  comment_selection_action->setShortcutContext  (Qt::WindowShortcut);
-  uncomment_selection_action->setShortcut       (Qt::ControlModifier + Qt::Key_8);
-  uncomment_selection_action->setShortcutContext(Qt::WindowShortcut);
-  find_action->setShortcut                      (Qt::ControlModifier+Qt::Key_F);
-  find_action->setShortcutContext               (Qt::WindowShortcut);
-
-  // toolbar
-  _tool_bar->addAction (new_action);
-  _tool_bar->addAction (open_action);
-  _tool_bar->addAction (save_action);
-  _tool_bar->addAction (save_as_action);
-  _tool_bar->addSeparator ();
-  _tool_bar->addAction (undo_action);
-  _tool_bar->addAction (redo_action);
-  _tool_bar->addAction (_copy_action);
-  _tool_bar->addAction (_cut_action);
-  _tool_bar->addAction (paste_action);
-  _tool_bar->addSeparator ();
-  _tool_bar->addAction (find_action);
-  _tool_bar->addAction (_run_action);
-  _tool_bar->addSeparator ();
-  _tool_bar->addAction (toggle_breakpoint_action);
-  _tool_bar->addAction (next_breakpoint_action);
-  _tool_bar->addAction (previous_breakpoint_action);
-  _tool_bar->addAction (remove_all_breakpoints_action);
-
-  // menu bar
-  QMenu *fileMenu = new QMenu (tr ("&File"), _menu_bar);
-  fileMenu->addAction (new_action);
-  fileMenu->addAction (open_action);
-  fileMenu->addAction (save_action);
-  fileMenu->addAction (save_as_action);
-  fileMenu->addSeparator ();
-  _menu_bar->addMenu (fileMenu);
-
-  QMenu *editMenu = new QMenu (tr ("&Edit"), _menu_bar);
-  editMenu->addAction (undo_action);
-  editMenu->addAction (redo_action);
-  editMenu->addSeparator ();
-  editMenu->addAction (_copy_action);
-  editMenu->addAction (_cut_action);
-  editMenu->addAction (paste_action);
-  editMenu->addSeparator ();
-  editMenu->addAction (find_action);
-  editMenu->addSeparator ();
-  editMenu->addAction (comment_selection_action);
-  editMenu->addAction (uncomment_selection_action);
-  editMenu->addSeparator ();
-  editMenu->addAction (toggle_bookmark_action);
-  editMenu->addAction (next_bookmark_action);
-  editMenu->addAction (previous_bookmark_action);
-  editMenu->addAction (remove_bookmark_action);
-  _menu_bar->addMenu (editMenu);
-
-  _debug_menu = new QMenu (tr ("&Debug"), _menu_bar);
-  _debug_menu->addAction (toggle_breakpoint_action);
-  _debug_menu->addAction (next_breakpoint_action);
-  _debug_menu->addAction (previous_breakpoint_action);
-  _debug_menu->addAction (remove_all_breakpoints_action);
-  _debug_menu->addSeparator ();
-  // The other debug actions will be added by the main window.
-  _menu_bar->addMenu (_debug_menu);
-
-  QMenu *_run_menu = new QMenu (tr ("&Run"), _menu_bar);
-  _run_menu->addAction (_run_action);
-  _menu_bar->addMenu (_run_menu);
-
-  QVBoxLayout *layout = new QVBoxLayout ();
-  layout->addWidget (_menu_bar);
-  layout->addWidget (_tool_bar);
-  layout->addWidget (_tab_widget);
-  layout->setMargin (0);
-  widget->setLayout (layout);
-  setWidget (widget);
-
-  connect (new_action,
-           SIGNAL (triggered ()), this, SLOT (request_new_file ()));
-  connect (open_action,              
-           SIGNAL (triggered ()), this, SLOT (request_open_file ()));
-  connect (undo_action,
-           SIGNAL (triggered ()), this, SLOT (request_undo ()));
-  connect (redo_action,
-           SIGNAL (triggered ()), this, SLOT (request_redo ()));
-  connect (_copy_action,
-           SIGNAL (triggered ()), this, SLOT (request_copy ()));
-  connect (_cut_action,
-           SIGNAL (triggered ()), this, SLOT (request_cut ()));
-  connect (paste_action,
-           SIGNAL (triggered ()), this, SLOT (request_paste ()));
-  connect (save_action,
-           SIGNAL (triggered ()), this, SLOT (request_save_file ()));
-  connect (save_as_action,
-           SIGNAL (triggered ()), this, SLOT (request_save_file_as ()));
-  connect (_run_action,
-           SIGNAL (triggered ()), this, SLOT (request_run_file ()));
-  connect (toggle_bookmark_action,
-           SIGNAL (triggered ()), this, SLOT (request_toggle_bookmark ()));
-  connect (next_bookmark_action,
-           SIGNAL (triggered ()), this, SLOT (request_next_bookmark ()));
-  connect (previous_bookmark_action,
-           SIGNAL (triggered ()), this, SLOT (request_previous_bookmark ()));
-  connect (remove_bookmark_action,
-           SIGNAL (triggered ()), this, SLOT (request_remove_bookmark ()));
-  connect (toggle_breakpoint_action,
-           SIGNAL (triggered ()), this, SLOT (request_toggle_breakpoint ()));
-  connect (next_breakpoint_action,
-           SIGNAL (triggered ()), this, SLOT (request_next_breakpoint ()));
-  connect (previous_breakpoint_action,
-           SIGNAL (triggered ()), this, SLOT (request_previous_breakpoint ()));
-  connect (remove_all_breakpoints_action,
-           SIGNAL (triggered ()), this, SLOT (request_remove_breakpoint ()));
-  connect (comment_selection_action,
-           SIGNAL (triggered ()), this, SLOT (request_comment_selected_text ()));
-  connect (uncomment_selection_action,
-           SIGNAL (triggered ()), this, SLOT (request_uncomment_selected_text ()));
-  connect (find_action,
-           SIGNAL (triggered ()), this, SLOT (request_find ()));
-  connect (_tab_widget,
-           SIGNAL (tabCloseRequested (int)), this, SLOT (handle_tab_close_request (int)));
-  connect (_tab_widget,
-           SIGNAL (currentChanged(int)), this, SLOT (active_tab_changed (int)));
-
-  resize (500, 400);
-  setWindowIcon (QIcon::fromTheme ("accessories-text-editor",
-                                   style->standardIcon (QStyle::SP_FileIcon)));
-  setWindowTitle ("Octave Editor");
-}
-
-void
-file_editor::add_file_editor_tab (file_editor_tab *f)
-{
-  _tab_widget->addTab (f, "");
-  connect (f, SIGNAL (file_name_changed(QString)),
-           this, SLOT(handle_file_name_changed(QString)));
-  connect (f, SIGNAL (editor_state_changed ()),
-           this, SLOT (handle_editor_state_changed ()));
-  connect (f, SIGNAL (close_request ()),
-           this, SLOT (handle_tab_close_request ()));
-  _tab_widget->setCurrentWidget (f);
-}
-
-file_editor_tab *
-file_editor::active_editor_tab ()
-{
-  return dynamic_cast<file_editor_tab*> (_tab_widget->currentWidget ());
-}
--- a/gui/src/m-editor/file-editor.h	Sat Aug 18 16:23:39 2012 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,107 +0,0 @@
-/* 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/>.
- */
-
-#ifndef FILEEDITORMDISUBWINDOW_H
-#define FILEEDITORMDISUBWINDOW_H
-
-#include <QToolBar>
-#include <QAction>
-#include <QMenuBar>
-#include <QStatusBar>
-#include <QCloseEvent>
-#include <QTabWidget>
-
-#include "main-window.h"
-#include "file-editor-interface.h"
-#include "file-editor-tab.h"
-
-const char UNNAMED_FILE[]     = "<unnamed>";
-const char SAVE_FILE_FILTER[] = "Octave Files (*.m);;All Files (*.*)";
-enum editor_markers
-  {
-    bookmark,
-    breakpoint,
-    debugger_position
-  };
-
-class file_editor : public file_editor_interface
-{
-Q_OBJECT
-
-public:
-  file_editor (QTerminal *terminal, main_window *m);
-  ~file_editor ();
-  void loadFile (QString fileName);
-
-  QTerminal *       terminal ();
-  main_window *     get_main_window ();
-
-  QMenu *           debug_menu ();
-  QToolBar *        toolbar ();
-
-  void handle_entered_debug_mode ();
-  void handle_quit_debug_mode ();
-
-public slots:
-  void request_new_file ();
-  void request_open_file ();
-  void request_open_file (QString fileName);
-
-  void request_undo ();
-  void request_redo ();
-  void request_copy ();
-  void request_cut ();
-  void request_paste ();
-  void request_save_file ();
-  void request_save_file_as ();
-  void request_run_file ();
-  void request_toggle_bookmark ();
-  void request_next_bookmark ();
-  void request_previous_bookmark ();
-  void request_remove_bookmark ();
-
-  void request_toggle_breakpoint ();
-  void request_next_breakpoint ();
-  void request_previous_breakpoint ();
-  void request_remove_breakpoint ();
-
-  void request_comment_selected_text ();
-  void request_uncomment_selected_text ();
-  void request_find ();
-
-  void handle_file_name_changed (QString fileName);
-  void handle_tab_close_request (int index);
-  void handle_tab_close_request ();
-  void active_tab_changed (int index);
-  void handle_editor_state_changed ();
-
-private:
-  void construct ();
-  void add_file_editor_tab(file_editor_tab *f);
-  file_editor_tab *active_editor_tab();
-
-  QMenuBar *        _menu_bar;
-  QToolBar *        _tool_bar;
-  QMenu *           _debug_menu;
-  QAction *         _copy_action;
-  QAction *         _cut_action;
-  QAction *         _run_action;
-  QTabWidget *      _tab_widget;
-  int               _marker_breakpoint;
-};
-
-#endif // FILEEDITORMDISUBWINDOW_H
--- a/gui/src/m-editor/find-dialog.cc	Sat Aug 18 16:23:39 2012 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,195 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the examples of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** Commercial Usage
-** Licensees holding valid Qt Commercial licenses may use this file in
-** accordance with the Qt Commercial License Agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and Nokia.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file.  Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights.  These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file.  Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you have questions regarding the use of this file, please contact
-** Nokia at qt-info@nokia.com.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include <QtGui>
-#include <QIcon>
-#include "find-dialog.h"
-
-find_dialog::find_dialog (QsciScintilla* edit_area, QWidget *parent)
-  : QDialog (parent)
-{
-  setWindowTitle ("Find and Replace");
-  setWindowIcon (QIcon(":/actions/icons/logo.png"));
-
-  _search_label = new QLabel (tr ("Find &what:"));
-  _search_line_edit = new QLineEdit;
-  _search_label->setBuddy (_search_line_edit);
-  _replace_label = new QLabel (tr ("Re&place with:"));
-  _replace_line_edit = new QLineEdit;
-  _replace_label->setBuddy (_replace_line_edit);
-
-  _case_check_box = new QCheckBox (tr ("Match &case"));
-  _from_start_check_box = new QCheckBox (tr ("Search from &start"));
-  _wrap_check_box = new QCheckBox (tr ("&Wrap while searching"));
-  _wrap_check_box->setChecked(true);
-  _find_next_button = new QPushButton (tr ("&Find Next"));
-  _find_next_button->setDefault (true);
-  _replace_button = new QPushButton (tr ("&Replace"));
-  _replace_all_button = new QPushButton (tr ("Replace &All"));
-
-  _more_button = new QPushButton (tr ("&More"));
-  _more_button->setCheckable (true);
-  _more_button->setAutoDefault (false);
-
-  _button_box = new QDialogButtonBox (Qt::Vertical);
-  _button_box->addButton (_find_next_button, QDialogButtonBox::ActionRole);
-  _button_box->addButton (_replace_button, QDialogButtonBox::ActionRole);
-  _button_box->addButton (_replace_all_button, QDialogButtonBox::ActionRole);
-  _button_box->addButton (_more_button, QDialogButtonBox::ActionRole);
-
-  _extension = new QWidget (this);
-  _whole_words_check_box = new QCheckBox (tr ("&Whole words"));
-  _regex_check_box = new QCheckBox (tr ("Regular E&xpressions"));
-  _backward_check_box = new QCheckBox (tr ("Search &backward"));
-  _search_selection_check_box = new QCheckBox (tr ("Search se&lection"));
-  _search_selection_check_box->setCheckable (false); // TODO: Not implemented.
-  _search_selection_check_box->setEnabled (false);
-
-  _edit_area = edit_area;
-  connect (_find_next_button,   SIGNAL (clicked ()),
-           this,                SLOT (search_next ()));
-  connect (_more_button,        SIGNAL (toggled (bool)),
-           _extension,          SLOT (setVisible (bool)));
-  connect (_replace_button,     SIGNAL (clicked ()),
-           this,                SLOT (replace ()));
-  connect (_replace_all_button, SIGNAL (clicked ()),
-           this,                SLOT (replace_all ()));
-
-  QVBoxLayout *extension_layout = new QVBoxLayout ();
-  extension_layout->setMargin (0);
-  extension_layout->addWidget (_whole_words_check_box);
-  extension_layout->addWidget (_backward_check_box);
-  extension_layout->addWidget (_search_selection_check_box);
-  _extension->setLayout (extension_layout);
-
-  QGridLayout *top_left_layout = new QGridLayout;
-  top_left_layout->addWidget (_search_label, 1, 1);
-  top_left_layout->addWidget (_search_line_edit, 1, 2);
-  top_left_layout->addWidget (_replace_label, 2, 1);
-  top_left_layout->addWidget (_replace_line_edit, 2, 2);
-
-  QVBoxLayout *left_layout = new QVBoxLayout;
-  left_layout->addLayout (top_left_layout);
-  left_layout->insertStretch (1, 5);
-  left_layout->addWidget (_case_check_box);
-  left_layout->addWidget (_from_start_check_box);
-  left_layout->addWidget (_wrap_check_box);
-  left_layout->addWidget (_regex_check_box);
-
-  QGridLayout *main_layout = new QGridLayout;
-  main_layout->setSizeConstraint (QLayout::SetFixedSize);
-  main_layout->addLayout (left_layout, 0, 0);
-  main_layout->addWidget (_button_box, 0, 1);
-  main_layout->addWidget (_extension, 1, 0, 1, 2);
-  setLayout (main_layout);
-
-  _extension->hide ();
-}
-
-void
-find_dialog::search_next ()
-{
-  int line = -1, col = -1;
-
-  _find_result_available = false;
-  if (_from_start_check_box->isChecked ())
-    {
-      line = 1;
-      col  = 1;
-    }
-
-  if (_edit_area)
-    {
-      _find_result_available = _edit_area->findFirst (_search_line_edit->text (),
-                                      _regex_check_box->isChecked (),
-                                      _case_check_box->isChecked (),
-                                      _whole_words_check_box->isChecked (),
-                                      _wrap_check_box->isChecked (),
-                                      !_backward_check_box->isChecked (),
-                                      line,col,
-                                      true,
-                                      true
-                                      );
-    }
-}
-
-
-void
-find_dialog::replace ()
-{
-  if (_edit_area)
-    {
-      _edit_area->replace (_replace_line_edit->text ());
-      _edit_area->findNext();
-    }
-}
-
-void
-find_dialog::replace_all ()
-{
-  int count = 0;
-
-  // check whether find & replace srings are different (avoid endless loop!)
-  int strDiff;
-  Qt::CaseSensitivity cs;
-  if (_case_check_box->isChecked())
-    {
-      cs = Qt::CaseSensitive;
-    }
-  else
-    {
-      cs = Qt::CaseInsensitive;
-    }
-  strDiff = QString::compare(_search_line_edit->text(),_replace_line_edit->text(),cs);
-
-  // replace all if strings are different
-  if (_edit_area && strDiff )
-    {
-      search_next ();  // find first occurence
-      while (_find_result_available)   // while search string is found
-        {
-          _edit_area->replace (_replace_line_edit->text ());   // replace
-          count++;                                             // inc counter
-          _find_result_available = _edit_area->findNext();                     // and find next
-        }
-    }
-  // TODO: Show number of replaced strings
-}
--- a/gui/src/m-editor/find-dialog.h	Sat Aug 18 16:23:39 2012 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,89 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the examples of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** Commercial Usage
-** Licensees holding valid Qt Commercial licenses may use this file in
-** accordance with the Qt Commercial License Agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and Nokia.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file.  Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights.  These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file.  Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-** If you have questions regarding the use of this file, please contact
-** Nokia at qt-info@nokia.com.
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#ifndef FIND_DIALOG_H
-#define FIND_DIALOG_H
-
-#include <QDialog>
-#include <Qsci/qsciscintilla.h>
-
-class QCheckBox;
-class QDialogButtonBox;
-class QGroupBox;
-class QLabel;
-class QLineEdit;
-class QPushButton;
-
-class find_dialog : public QDialog
-{
-  Q_OBJECT
-public:
-  find_dialog (QsciScintilla* edit_area, QWidget *parent = 0);
-
-private slots:
-  void search_next ();
-  void replace ();
-  void replace_all ();
-
-private:
-  QLabel            *_search_label;
-  QLineEdit         *_search_line_edit;
-  QLabel            *_replace_label;
-  QLineEdit         *_replace_line_edit;
-  QCheckBox         *_case_check_box;
-  QCheckBox         *_from_start_check_box;
-  QCheckBox         *_wrap_check_box;
-  QCheckBox         *_whole_words_check_box;
-  QCheckBox         *_regex_check_box;
-  QCheckBox         *_search_selection_check_box;
-  QCheckBox         *_backward_check_box;
-  QDialogButtonBox  *_button_box;
-  QPushButton       *_find_next_button;
-  QPushButton       *_replace_button;
-  QPushButton       *_replace_all_button;
-  QPushButton       *_more_button;
-  QWidget           *_extension;
-  QsciScintilla     *_edit_area;
-  bool               _find_result_available;
-};
-
-#endif // FIND_DIALOG_H
-
--- a/gui/src/m-editor/lexer-octave-gui.cc	Sat Aug 18 16:23:39 2012 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,141 +0,0 @@
-/* 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 "lexer-octave-gui.h"
-#include <qcolor.h>
-#include <qfont.h>
-
-// -----------------------------------------------------
-// Some basic functions
-// -----------------------------------------------------
-lexer_octave_gui::lexer_octave_gui(QObject *parent)
-    : QsciLexer(parent)  // inherit from base lexer
-{
-}
-
-lexer_octave_gui::~lexer_octave_gui()
-{
-}
-
-const char *lexer_octave_gui::language() const
-{
-  return "Octave";  // return the name of the language
-}
-
-const char *lexer_octave_gui::lexer() const
-{
-  return "octave";  // return the name of the lexer
-}
-
-// -----------------------------------------------------
-// The colors for syntax highlighting
-// -----------------------------------------------------
-QColor lexer_octave_gui::defaultColor(int style) const
-{
-    switch (style)
-      {
-        case Default:  // black
-          return QColor(0x00,0x00,0x00);
-        case Operator: // red
-          return QColor(0xef,0x00,0x00);
-        case Comment:  // gray
-          return QColor(0x7f,0x7f,0x7f);
-        case Command:  // blue-green
-          return QColor(0x00,0x7f,0x7f);
-        case Number:   // orange
-          return QColor(0x7f,0x7f,0x00);
-        case Keyword:  // blue
-          return QColor(0x00,0x00,0xbf);
-        case SingleQuotedString: // green
-          return QColor(0x00,0x7f,0x00);
-        case DoubleQuotedString: // green-yellow
-          return QColor(0x4f,0x7f,0x00);
-      }
-    return QsciLexer::defaultColor(style);
-}
-
-
-// -----------------------------------------------------
-// The font decorations for highlighting
-// -----------------------------------------------------
-QFont lexer_octave_gui::defaultFont(int style) const
-{
-    QFont f;
-
-    switch (style)
-      {
-        case Comment: // default but italic
-          f = QsciLexer::defaultFont(style);
-          f.setItalic(true);
-          break;
-        case Keyword: // default
-          f = QsciLexer::defaultFont(style);
-          break;
-        case Operator:  // default
-          f = QsciLexer::defaultFont(style);
-          break;
-        default:        // default
-          f = QsciLexer::defaultFont(style);
-          break;
-      }
-    return f;   // return the selected font
-}
-
-
-// -----------------------------------------------------
-// Style names
-// -----------------------------------------------------
-QString lexer_octave_gui::description(int style) const
-{
-    switch (style)
-      {
-        case Default:
-          return tr("Default");
-        case Comment:
-          return tr("Comment");
-        case Command:
-          return tr("Command");
-        case Number:
-          return tr("Number");
-        case Keyword:
-          return tr("Keyword");
-        case SingleQuotedString:
-          return tr("Single-quoted string");
-        case Operator:
-          return tr("Operator");
-        case Identifier:
-          return tr("Identifier");
-        case DoubleQuotedString:
-          return tr("Double-quoted string");
-      }
-    return QString();
-}
-
-
-// -----------------------------------------------------
-// The set of keywords for highlighting
-// TODO: How to define a second set?
-// -----------------------------------------------------
-const char *lexer_octave_gui::keywords(int set) const
-{
-    if (set == 1)
-      {
-        return resource_manager::octave_keywords ();
-      }
-    return 0;
-}
-
--- a/gui/src/m-editor/lexer-octave-gui.h	Sat Aug 18 16:23:39 2012 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,60 +0,0 @@
-/* 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/>.
- */
-
-#ifndef LEXEROCTAVE_H
-#define LEXEROCTAVE_H
-
-#include "resource-manager.h"
-#include <QObject>
-#include <Qsci/qsciglobal.h>
-#include <Qsci/qscilexer.h>
-
-
-class lexer_octave_gui : public QsciLexer
-{
-    Q_OBJECT
-
-public:
-    // the used styles
-    enum
-      {
-        Default = 0,
-        Comment = 1,
-        Command = 2,
-        Number = 3,
-        Keyword = 4,
-        SingleQuotedString = 5,
-        Operator = 6,
-        Identifier = 7,
-        DoubleQuotedString = 8
-      };
-
-    lexer_octave_gui (QObject *parent = 0);
-    virtual ~lexer_octave_gui ();
-    const char *language () const;
-    const char *lexer () const;
-    QColor defaultColor (int style) const;
-    QFont defaultFont (int style) const;
-    const char *keywords (int set) const;
-    QString description (int style) const;
-
-private:
-    lexer_octave_gui (const lexer_octave_gui &);
-    lexer_octave_gui &operator= (const lexer_octave_gui &);
-};
-
-#endif
--- a/gui/src/main-window.cc	Sat Aug 18 16:23:39 2012 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,865 +0,0 @@
-/* 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 <QMenuBar>
-#include <QMenu>
-#include <QAction>
-#include <QSettings>
-#include <QStyle>
-#include <QToolBar>
-#include <QDesktopServices>
-#include <QFileDialog>
-#include <QMessageBox>
-#include <QIcon>
-
-#include "main-window.h"
-#include "file-editor.h"
-#include "settings-dialog.h"
-
-main_window::main_window (QWidget * parent)
-  : QMainWindow (parent), octave_event_observer ()
-{
-  // We have to set up all our windows, before we finally launch octave.
-  construct ();
-  octave_link::instance ()->launch_octave();
-}
-
-main_window::~main_window ()
-{
-}
-
-void
-main_window::event_accepted (octave_event *e)
-{
-  if (dynamic_cast<octave_clear_history_event*> (e))
-    {
-      // After clearing the history, we need to reset the model.
-      _history_dock_widget->reset_model ();
-    }
-  delete e;
-}
-
-void
-main_window::event_reject (octave_event *e)
-{
-  delete e;
-}
-
-void
-main_window::new_file ()
-{
-  _file_editor->request_new_file ();
-  focus_editor ();
-}
-
-void
-main_window::open_file ()
-{
-  _file_editor->request_open_file ();
-  focus_editor ();
-}
-
-void
-main_window::open_file (QString file_name)
-{
-  _file_editor->request_open_file (file_name);
-  focus_editor ();
-}
-
-void
-main_window::report_status_message (QString statusMessage)
-{
-  _status_bar->showMessage (statusMessage, 1000);
-}
-
-void
-main_window::handle_save_workspace_request ()
-{
-  QString selectedFile =
-      QFileDialog::getSaveFileName (this, tr ("Save Workspace"),
-                                    resource_manager::get_home_path ());
-  if (!selectedFile.isEmpty ())
-    {
-      octave_link::instance ()
-          ->post_event (new octave_save_workspace_event (*this,
-          selectedFile.toStdString()));
-    }
-}
-
-void
-main_window::handle_load_workspace_request ()
-{
-  QString selectedFile =
-      QFileDialog::getOpenFileName (this, tr ("Load Workspace"),
-                                    resource_manager::get_home_path ());
-  if (!selectedFile.isEmpty ())
-    {
-      octave_link::instance ()
-          ->post_event (new octave_load_workspace_event (*this,
-            selectedFile.toStdString()));
-    }
-}
-
-void
-main_window::handle_clear_workspace_request ()
-{
-  octave_link::instance ()
-      ->post_event (new octave_clear_workspace_event (*this));
-}
-
-void
-main_window::handle_clear_history_request()
-{
-  octave_link::instance ()
-      ->post_event (new octave_clear_history_event (*this));
-}
-
-void
-main_window::handle_command_double_clicked (QString command)
-{
-  _terminal->sendText (command);
-  _terminal->setFocus ();
-}
-
-void
-main_window::open_bug_tracker_page ()
-{
-  QDesktopServices::openUrl (QUrl ("http://bugs.octave.org"));
-}
-
-void
-main_window::open_agora_page ()
-{
-  QDesktopServices::openUrl (QUrl ("http://agora.octave.org/"));
-}
-
-void
-main_window::open_octave_forge_page ()
-{
-  QDesktopServices::openUrl (QUrl ("http://octave.sourceforge.net/"));
-}
-
-void
-main_window::process_settings_dialog_request ()
-{
-  settings_dialog *settingsDialog = new settings_dialog (this);
-  settingsDialog->exec ();
-  delete settingsDialog;
-  emit settings_changed ();
-}
-
-void
-main_window::notice_settings ()
-{
-  // Set terminal font:
-  QSettings *settings = resource_manager::get_settings ();
-
-  // FIXME -- what should happen if settings is 0?
-
-  QFont font = QFont();
-  font.setFamily(settings->value("terminal/fontName").toString());
-  font.setPointSize(settings->value("terminal/fontSize").toInt ());
-  _terminal->setTerminalFont(font);
-
-  QString cursorType = settings->value ("terminal/cursorType").toString ();
-  bool cursorBlinking = settings->value ("terminal/cursorBlinking").toBool ();
-  if (cursorType == "ibeam")
-    _terminal->setCursorType(QTerminalInterface::IBeamCursor, cursorBlinking);
-  else if (cursorType == "block")
-    _terminal->setCursorType(QTerminalInterface::BlockCursor, cursorBlinking);
-  else if (cursorType == "underline")
-    _terminal->setCursorType(QTerminalInterface::UnderlineCursor,
-                             cursorBlinking);
-
-  resource_manager::update_network_settings ();
-}
-
-void
-main_window::prepare_for_quit ()
-{
-  write_settings ();
-}
-
-void
-main_window::reset_windows ()
-{
-  // TODO: Implement.
-}
-
-void
-main_window::current_working_directory_has_changed (QString directory)
-{
-  if (_current_directory_combo_box->count () > 31)
-    {
-      _current_directory_combo_box->removeItem (0);
-    }
-  _current_directory_combo_box->addItem (directory);
-  int index = _current_directory_combo_box->findText (directory);
-  _current_directory_combo_box->setCurrentIndex (index);
-
-  _files_dock_widget->set_current_directory (directory);
-}
-
-void
-main_window::change_current_working_directory ()
-{
-  QString selectedDirectory =
-      QFileDialog::getExistingDirectory(this, tr ("Set working direcotry"));
-
-  if (!selectedDirectory.isEmpty ())
-    {
-      octave_link::instance ()
-          ->post_event (new octave_change_directory_event (*this,
-                        selectedDirectory.toStdString ()));
-    }
-}
-
-void
-main_window::set_current_working_directory (QString directory)
-{
-  octave_link::instance ()
-      ->post_event (new octave_change_directory_event (*this,
-                    directory.toStdString ()));
-}
-
-void
-main_window::current_working_directory_up ()
-{
-  set_current_working_directory ("..");
-}
-
-void
-main_window::focus_command_window ()
-{
-  if (!_terminal_dock_widget->isVisible ())
-    {
-      _terminal_dock_widget->setVisible (true);
-    }
-
-  _terminal_dock_widget->setFocus ();
-  _terminal_dock_widget->activateWindow ();
-  _terminal_dock_widget->raise ();
-
-  _terminal->setFocus ();
-  _terminal->activateWindow ();
-  _terminal->raise ();
-}
-
-void
-main_window::focus_command_history ()
-{
-  if (!_history_dock_widget->isVisible ())
-    {
-      _history_dock_widget->setVisible (true);
-    }
-
-  _history_dock_widget->setFocus ();
-  _history_dock_widget->activateWindow ();
-  _history_dock_widget->raise ();
-}
-
-void
-main_window::focus_current_directory ()
-{
-  if (!_files_dock_widget->isVisible ())
-    {
-      _files_dock_widget->setVisible (true);
-    }
-
-  _files_dock_widget->setFocus ();
-  _files_dock_widget->activateWindow ();
-  _files_dock_widget->raise ();
-}
-
-void
-main_window::focus_workspace ()
-{
-  if (!_workspace_view->isVisible ())
-    {
-      _workspace_view->setVisible (true);
-    }
-
-  _workspace_view->setFocus ();
-  _workspace_view->activateWindow ();
-  _workspace_view->raise ();
-}
-
-void
-main_window::focus_editor ()
-{
-  if (!_file_editor->isVisible ())
-    {
-      _file_editor->setVisible (true);
-    }
-
-  _file_editor->setFocus ();
-  _file_editor->activateWindow ();
-  _file_editor->raise ();
-}
-
-void
-main_window::focus_documentation ()
-{
-  if (!_documentation_dock_widget->isVisible ())
-    {
-      _documentation_dock_widget->setVisible (true);
-    }
-
-  _documentation_dock_widget->setFocus ();
-  _documentation_dock_widget->activateWindow ();
-  _documentation_dock_widget->raise ();
-}
-
-void
-main_window::handle_entered_debug_mode ()
-{
-  setWindowTitle ("Octave (Debugging)");
-  _debug_continue->setEnabled (true);
-  _debug_step_into->setEnabled (true);
-  _debug_step_over->setEnabled (true);
-  _debug_step_out->setEnabled (true);
-  _debug_quit->setEnabled (true);
-  _file_editor->handle_entered_debug_mode ();
-}
-
-void
-main_window::handle_quit_debug_mode ()
-{
-  setWindowTitle ("Octave");
-  _debug_continue->setEnabled (false);
-  _debug_step_into->setEnabled (false);
-  _debug_step_over->setEnabled (false);
-  _debug_step_out->setEnabled (false);
-  _debug_quit->setEnabled (false);
-  _file_editor->handle_quit_debug_mode ();
-}
-
-void
-main_window::debug_continue ()
-{
-  octave_link::instance ()
-      ->post_event (new octave_debug_continue_event (*this));
-}
-
-void
-main_window::debug_step_into ()
-{
-  octave_link::instance ()
-      ->post_event (new octave_debug_step_into_event (*this));
-}
-
-void
-main_window::debug_step_over ()
-{
-  octave_link::instance ()
-      ->post_event (new octave_debug_step_over_event (*this));
-}
-
-void
-main_window::debug_step_out ()
-{
-  octave_link::instance ()
-      ->post_event (new octave_debug_step_out_event (*this));
-}
-
-void
-main_window::debug_quit ()
-{
-  octave_link::instance ()
-      ->post_event (new octave_debug_quit_event (*this));
-}
-
-void
-main_window::show_about_octave ()
-{
-  QString message =
-      "GNU Octave\n"
-      "Copyright (C) 2009 John W. Eaton and others.\n"
-      "This is free software; see the source code for copying conditions."
-      "There is ABSOLUTELY NO WARRANTY; not even for MERCHANTABILITY or"
-      "FITNESS FOR A PARTICULAR PURPOSE.  For details, type `warranty'.\n"
-      "\n"
-      "Additional information about Octave is available at http://www.octave.org.\n"
-      "\n"
-      "Please contribute if you find this software useful."
-      "For more information, visit http://www.octave.org/help-wanted.html\n"
-      "\n"
-      "Report bugs to <bug@octave.org> (but first, please read"
-      "http://www.octave.org/bugs.html to learn how to write a helpful report).\n"
-      "\n"
-      "For information about changes from previous versions, type `news'.\n";
-
-  QMessageBox::about (this, tr ("About Octave"), message);
-}
-
-void
-main_window::closeEvent (QCloseEvent * closeEvent)
-{
-  closeEvent->ignore ();
-  octave_link::instance ()->post_event (new octave_exit_event (*this));
- }
-
-void
-main_window::read_settings ()
-{
-  QSettings *settings = resource_manager::get_settings ();
-
-  // FIXME -- what should happen if settings is 0?
-
-  restoreGeometry (settings->value ("MainWindow/geometry").toByteArray ());
-  restoreState (settings->value ("MainWindow/windowState").toByteArray ());
-  emit settings_changed ();
-}
-
-void
-main_window::write_settings ()
-{
-  QSettings *settings = resource_manager::get_settings ();
-
-  // FIXME -- what should happen if settings is 0?
-
-  settings->setValue ("MainWindow/geometry", saveGeometry ());
-  settings->setValue ("MainWindow/windowState", saveState ());
-  settings->sync ();
-}
-
-void
-main_window::construct ()
-{
-  _closing = false;   // flag for editor files when closed
-  setWindowIcon (QIcon(":/actions/icons/logo.png"));
-
-  // Setup dockable widgets and the status bar.
-  _workspace_view           = new workspace_view (this);
-  _workspace_view->setStatusTip (tr ("View the variables in the active workspace."));
-  _history_dock_widget      = new history_dock_widget (this);
-  _history_dock_widget->setStatusTip (tr ("Browse and search the command history."));
-  _files_dock_widget        = new files_dock_widget (this);
-  _files_dock_widget->setStatusTip (tr ("Browse your files."));
-  _documentation_dock_widget= new documentation_dock_widget (this);
-  _documentation_dock_widget->setStatusTip (tr ("See the documentation for help."));
-  _status_bar               = new QStatusBar (this);
-
-  _current_directory_combo_box = new QComboBox (this);
-  _current_directory_combo_box->setFixedWidth (300);
-  _current_directory_combo_box->setEditable (true);
-  _current_directory_combo_box->setInsertPolicy (QComboBox::InsertAtTop);
-  _current_directory_combo_box->setMaxVisibleItems (14);
-
-  _current_directory_tool_button = new QToolButton (this);
-  _current_directory_tool_button->setIcon (QIcon(":/actions/icons/search.png"));
-
-  _current_directory_up_tool_button = new QToolButton (this);
-  _current_directory_up_tool_button->setIcon (QIcon(":/actions/icons/up.png"));
-
-  // Octave Terminal subwindow.
-  _terminal = new QTerminal (this);
-  _terminal->setObjectName ("OctaveTerminal");
-  _terminal->setFocusPolicy (Qt::StrongFocus);
-  _terminal_dock_widget = new terminal_dock_widget (_terminal, this);
-  _terminal_dock_widget->setWindowIcon (QIcon(":/actions/icons/terminal.png"));
-
-  QWidget *dummyWidget = new QWidget ();
-  dummyWidget->setObjectName ("CentralDummyWidget");
-  dummyWidget->resize (10, 10);
-  dummyWidget->setSizePolicy (QSizePolicy::Minimum, QSizePolicy::Minimum);
-  dummyWidget->hide ();
-  setCentralWidget (dummyWidget);
-
-  _file_editor = new file_editor (_terminal, this);
-
-  QMenu *file_menu = menuBar ()->addMenu (tr ("&File"));
-
-  QMenu *new_menu = file_menu->addMenu(tr ("New"));
-
-  QAction *new_script_action
-      = new_menu->addAction (QIcon(":/actions/icons/filenew.png"), tr ("Script"));
-  new_script_action->setShortcut (Qt::ControlModifier + Qt::Key_N);
-
-  QAction *new_function_action = new_menu->addAction (tr ("Function"));
-  new_function_action->setEnabled (false); // TODO: Make this work.
-  QAction *new_class_action = new_menu->addAction (tr ("Class"));
-  new_class_action->setEnabled (false); // TODO: Make this work.
-  QAction *new_enumeration_action = new_menu->addAction (tr ("Enumeration"));
-  new_enumeration_action->setEnabled (false); // TODO: Make this work.
-  QAction *new_figure_action = new_menu->addAction (tr ("Figure"));
-  new_figure_action->setEnabled (false); // TODO: Make this work.
-  QAction *new_variable_action = new_menu->addAction (tr ("Variable"));
-  new_variable_action->setEnabled (false); // TODO: Make this work.
-  QAction *new_model_action = new_menu->addAction (tr ("Model"));
-  new_model_action->setEnabled (false); // TODO: Make this work.
-  QAction *new_gui_action = new_menu->addAction (tr ("GUI"));
-  new_gui_action->setEnabled (false); // TODO: Make this work.
-
-  QAction *open_action
-      = file_menu->addAction (QIcon(":/actions/icons/fileopen.png"), tr ("Open..."));
-  open_action->setShortcut (Qt::ControlModifier + Qt::Key_O);
-
-  QAction *close_command_window_action
-      = file_menu->addAction (tr ("Close Command Window"));
-  close_command_window_action->setShortcut (Qt::ControlModifier + Qt::Key_W);
-  close_command_window_action->setEnabled (false); // TODO: Make this work.
-
-  file_menu->addSeparator ();
-  QAction *import_data_action
-      = file_menu->addAction (tr ("Import Data..."));
-  import_data_action->setEnabled (false); // TODO: Make this work.
-
-  QAction *save_workspace_action
-      = file_menu->addAction (tr ("Save Workspace..."));
-  save_workspace_action->setShortcut (Qt::ControlModifier + Qt::Key_S);
-  file_menu->addSeparator ();
-
-  QAction *preferences_action
-      = file_menu->addAction (QIcon(":/actions/icons/configure.png"),
-                              tr ("Preferences..."));
-  file_menu->addSeparator ();
-  QAction *page_setup_action
-      = file_menu->addAction (tr ("Page Setup..."));
-  page_setup_action->setEnabled (false); // TODO: Make this work.
-  QAction *print_action
-      = file_menu->addAction (tr ("Print"));
-  print_action->setShortcut (Qt::ControlModifier + Qt::Key_P);
-  print_action->setEnabled (false); // TODO: Make this work.
-  QAction *print_selection_action
-      = file_menu->addAction (tr ("Print Selection..."));
-  print_selection_action->setEnabled (false); // TODO: Make this work.
-
-  file_menu->addSeparator ();
-  QAction *exit_action = file_menu->addAction (tr ("Exit"));
-  exit_action->setShortcut (Qt::ControlModifier + Qt::Key_Q);
-
-
-  QMenu *edit_menu = menuBar ()->addMenu (tr ("&Edit"));
-  QAction *undo_action
-      = edit_menu->addAction (QIcon(":/actions/icons/undo.png"), tr ("Undo"));
-  undo_action->setShortcut (QKeySequence::Undo);
-
-  QAction *redo_action
-      = edit_menu->addAction (QIcon(":/actions/icons/redo.png"), tr ("Redo"));
-  redo_action->setShortcut (QKeySequence::Redo);
-  edit_menu->addSeparator ();
-
-  QAction *cut_action
-      = edit_menu->addAction (QIcon(":/actions/icons/editcut.png"), tr ("Cut"));
-  cut_action->setShortcut (Qt::ControlModifier + Qt::ShiftModifier + Qt::Key_X);
-
-  QAction *copy_action
-      = edit_menu->addAction (QIcon(":/actions/icons/editcopy.png"), tr ("Copy"));
-  copy_action->setShortcut (Qt::ControlModifier + Qt::ShiftModifier + Qt::Key_C);
-
-  QAction *paste_action
-      = edit_menu->addAction (QIcon(":/actions/icons/editpaste.png"), tr ("Paste"));
-  paste_action->setShortcut (Qt::ControlModifier + Qt::ShiftModifier + Qt::Key_V);
-
-  QAction *paste_to_workspace_action
-      = edit_menu->addAction (tr ("Paste To Workspace..."));
-  paste_to_workspace_action->setEnabled (false); // TODO: Make this work.
-  edit_menu->addSeparator ();
-
-  QAction *select_all_action
-      = edit_menu->addAction (tr ("Select All"));
-  select_all_action->setEnabled (false); // TODO: Make this work.
-  QAction *delete_action
-      = edit_menu->addAction (tr ("Delete"));
-  delete_action->setShortcut (Qt::Key_Delete);
-  delete_action->setEnabled (false); // TODO: Make this work.
-  edit_menu->addSeparator ();
-
-  QAction *find_action
-      = edit_menu->addAction (tr ("Find..."));
-  find_action->setEnabled (false); // TODO: Make this work.
-  QAction *find_files_action
-      = edit_menu->addAction (tr ("Find Files..."));
-  find_files_action->setShortcut (Qt::ControlModifier + Qt::ShiftModifier
-                                  + Qt::Key_F);
-  find_files_action->setEnabled (false); // TODO: Make this work.
-  edit_menu->addSeparator ();
-
-  QAction *clear_command_window_action
-      = edit_menu->addAction (tr ("Clear Command Window"));
-  clear_command_window_action->setEnabled (false); // TODO: Make this work.
-  QAction *clear_command_history
-      = edit_menu->addAction(tr ("Clear Command History"));
-  QAction * clear_workspace_action
-      = edit_menu->addAction (tr ("Clear Workspace"));
-
-  _debug_menu = menuBar ()->addMenu (tr ("De&bug"));
-
-  _debug_step_over = _debug_menu->addAction (QIcon (":/actions/icons/db_step.png"), tr ("Step"));
-  _debug_step_over->setEnabled (false);
-  _file_editor->debug_menu ()->addAction (_debug_step_over);
-  _file_editor->toolbar ()->addAction (_debug_step_over);
-  _debug_step_over->setShortcut (Qt::Key_F10);
-
-  _debug_step_into = _debug_menu->addAction (QIcon (":/actions/icons/db_step_in.png"), tr ("Step in"));
-  _debug_step_into->setEnabled (false);
-  _file_editor->debug_menu ()->addAction (_debug_step_into);
-  _file_editor->toolbar ()->addAction (_debug_step_into);
-  _debug_step_into->setShortcut (Qt::Key_F11);
-
-  _debug_step_out = _debug_menu->addAction (QIcon (":/actions/icons/db_step_out.png"), tr ("Step out"));
-  _debug_step_out->setEnabled (false);
-  _file_editor->debug_menu ()->addAction (_debug_step_out);
-  _file_editor->toolbar ()->addAction (_debug_step_out);
-  _debug_step_out->setShortcut (Qt::ShiftModifier + Qt::Key_F11);
-
-  _debug_continue = _debug_menu->addAction (QIcon (":/actions/icons/db_cont.png"), tr ("Continue"));
-  _debug_continue->setEnabled (false);
-  _file_editor->debug_menu ()->addAction (_debug_continue);
-  _file_editor->toolbar ()->addAction (_debug_continue);
-  _debug_continue->setShortcut (Qt::Key_F5);
-
-  _debug_menu->addSeparator ();
-  _file_editor->debug_menu ()->addSeparator ();
-
-  _debug_quit = _debug_menu->addAction (QIcon (":/actions/icons/db_stop.png"), tr ("Exit Debug Mode"));
-  _debug_quit->setEnabled (false);
-  _file_editor->debug_menu ()->addAction (_debug_quit);
-  _file_editor->toolbar ()->addAction (_debug_quit);
-  _debug_quit->setShortcut (Qt::ShiftModifier + Qt::Key_F5);
-
-  //QMenu *parallelMenu = menuBar ()->addMenu (tr ("&Parallel"));
-
-  QMenu *   desktop_menu = menuBar ()->addMenu (tr ("&Desktop"));
-  QAction * load_workspace_action       = desktop_menu->addAction (tr ("Load workspace"));
-
-
-  // Window menu
-  QMenu *   window_menu = menuBar ()->addMenu (tr ("&Window"));
-  QAction * show_command_window_action
-    = window_menu->addAction (tr ("Show Command Window"));
-  show_command_window_action->setCheckable (true);
-  show_command_window_action->setShortcut (Qt::ControlModifier
-                                           + Qt::ShiftModifier + Qt::Key_0);
-
-  QAction * show_history_action
-    = window_menu->addAction (tr ("Show Command History"));
-  show_history_action->setCheckable (true);
-  show_history_action->setShortcut (Qt::ControlModifier
-                                    + Qt::ShiftModifier + Qt::Key_1);
-  QAction * show_file_browser_action
-    = window_menu->addAction (tr ("Show Current Directory"));
-  show_file_browser_action->setCheckable (true);
-  show_file_browser_action->setShortcut (Qt::ControlModifier
-                                         + Qt::ShiftModifier + Qt::Key_2);
-
-  QAction * show_workspace_action
-    = window_menu->addAction (tr ("Show Workspace"));
-  show_workspace_action->setCheckable (true);
-  show_workspace_action->setShortcut (Qt::ControlModifier
-                                      + Qt::ShiftModifier + Qt::Key_3);
-
-  QAction * show_editor_action = window_menu->addAction (tr ("Show Editor"));
-  show_editor_action->setCheckable (true);
-  show_editor_action->setShortcut (Qt::ControlModifier + Qt::ShiftModifier
-                                   + Qt::Key_4);
-
-  QAction * show_documentation_action = window_menu->addAction (tr ("Show Documentation"));
-  show_documentation_action->setCheckable (true);
-  show_documentation_action->setShortcut (Qt::ControlModifier + Qt::ShiftModifier
-                                   + Qt::Key_5);
-  window_menu->addSeparator ();
-
-  QAction * command_window_action
-    = window_menu->addAction (tr ("Command Window"));
-  command_window_action->setShortcut (Qt::ControlModifier + Qt::Key_0);
-
-  QAction * history_action
-    = window_menu->addAction (tr ("Command History"));
-  history_action->setShortcut (Qt::ControlModifier + Qt::Key_1);
-
-  QAction * file_browser_action
-    = window_menu->addAction (tr ("Current Directory"));
-  file_browser_action->setShortcut (Qt::ControlModifier + Qt::Key_2);
-
-  QAction * workspace_action
-    = window_menu->addAction (tr ("Workspace"));
-  workspace_action->setShortcut (Qt::ControlModifier + Qt::Key_3);
-
-  QAction * editor_action
-    = window_menu->addAction (tr ("Editor"));
-  editor_action->setShortcut (Qt::ControlModifier + Qt::Key_4);
-
-  QAction * documentation_action
-    = window_menu->addAction (tr ("Documentation"));
-  documentation_action->setShortcut (Qt::ControlModifier + Qt::Key_5);
-
-  window_menu->addSeparator ();
-  QAction * reset_windows_action
-    = window_menu->addAction (tr ("Reset Windows"));
-  reset_windows_action->setEnabled (false); // TODO: Make this work.
-
-  // Help menu
-  QMenu *   help_menu = menuBar ()->addMenu (tr ("&Help"));
-  QAction * report_bug_action
-    = help_menu->addAction (tr ("Report Bug"));
-  QAction * agora_action
-    = help_menu->addAction (tr ("Visit Agora"));
-  QAction * octave_forge_action
-    = help_menu->addAction (tr ("Visit Octave Forge"));
-  help_menu->addSeparator ();
-
-  QAction * about_octave_action
-    = help_menu->addAction (tr ("About Octave"));
-
-  // Toolbars
-  QToolBar *main_tool_bar = addToolBar ("Main");
-            main_tool_bar->addAction (new_script_action);
-            main_tool_bar->addAction (open_action);
-            main_tool_bar->addSeparator ();
-            main_tool_bar->addAction (cut_action);
-            main_tool_bar->addAction (copy_action);
-            main_tool_bar->addAction (paste_action);
-            main_tool_bar->addAction (undo_action);
-            main_tool_bar->addAction (redo_action);
-            main_tool_bar->addSeparator ();
-            main_tool_bar->addWidget (new QLabel (tr ("Current Directory:")));
-            main_tool_bar->addWidget (_current_directory_combo_box);
-            main_tool_bar->addWidget (_current_directory_tool_button);
-            main_tool_bar->addWidget (_current_directory_up_tool_button);
-
-  connect (qApp,                        SIGNAL (aboutToQuit ()),
-           this,                        SLOT   (prepare_for_quit ()));
-  connect (preferences_action,          SIGNAL (triggered ()),
-           this,                        SLOT   (process_settings_dialog_request ()));
-  connect (exit_action,                 SIGNAL (triggered ()),
-           this,                        SLOT   (close ()));
-  connect (new_script_action,           SIGNAL (triggered ()),
-           this,                        SLOT   (new_file ()));
-  connect (open_action,                 SIGNAL (triggered ()),
-           this,                        SLOT   (open_file ()));
-  connect (report_bug_action,           SIGNAL (triggered ()),
-           this,                        SLOT   (open_bug_tracker_page ()));
-  connect (agora_action,                SIGNAL (triggered ()),
-           this,                        SLOT   (open_agora_page ()));
-  connect (octave_forge_action,         SIGNAL (triggered ()),
-           this,                        SLOT   (open_octave_forge_page ()));
-  connect (about_octave_action,         SIGNAL (triggered ()),
-           this,                        SLOT   (show_about_octave ()));
-  connect (show_command_window_action,  SIGNAL (toggled (bool)),
-           _terminal_dock_widget,       SLOT   (setVisible (bool)));
-  connect (_terminal_dock_widget,       SIGNAL (active_changed (bool)),
-           show_command_window_action,  SLOT   (setChecked (bool)));
-  connect (show_workspace_action,       SIGNAL (toggled (bool)),
-           _workspace_view,             SLOT   (setVisible (bool)));
-  connect (_workspace_view,             SIGNAL (active_changed (bool)),
-           show_workspace_action,       SLOT   (setChecked (bool)));
-  connect (show_history_action,         SIGNAL (toggled (bool)),
-           _history_dock_widget,        SLOT   (setVisible (bool)));
-  connect (_history_dock_widget,        SIGNAL (active_changed (bool)),
-           show_history_action,         SLOT   (setChecked (bool)));
-  connect (show_file_browser_action,    SIGNAL (toggled (bool)),
-           _files_dock_widget,          SLOT   (setVisible (bool)));
-  connect (_files_dock_widget,          SIGNAL (active_changed (bool)),
-           show_file_browser_action,    SLOT   (setChecked (bool)));
-  connect (show_editor_action,          SIGNAL (toggled (bool)),
-           _file_editor,                SLOT   (setVisible (bool)));
-  connect (_file_editor,                SIGNAL (active_changed (bool)),
-           show_editor_action,          SLOT   (setChecked (bool)));
-  connect (show_documentation_action,   SIGNAL (toggled (bool)),
-           _documentation_dock_widget,  SLOT   (setVisible (bool)));
-  connect (_documentation_dock_widget,  SIGNAL (active_changed (bool)),
-           show_documentation_action,   SLOT   (setChecked (bool)));
-
-  connect (command_window_action,       SIGNAL (triggered ()),
-           this,                        SLOT (focus_command_window ()));
-  connect (workspace_action,            SIGNAL (triggered ()),
-           this,                        SLOT (focus_workspace ()));
-  connect (history_action,              SIGNAL (triggered ()),
-           this,                        SLOT (focus_command_history ()));
-  connect (file_browser_action,         SIGNAL (triggered ()),
-           this,                        SLOT (focus_current_directory ()));
-  connect (editor_action,               SIGNAL (triggered ()),
-           this,                        SLOT (focus_editor ()));
-  connect (documentation_action,        SIGNAL (triggered ()),
-           this,                        SLOT (focus_documentation ()));
-
-  connect (reset_windows_action,        SIGNAL (triggered ()),
-           this,                        SLOT   (reset_windows ()));
-  connect (this,                        SIGNAL (settings_changed ()),
-           _files_dock_widget,          SLOT   (notice_settings ()));
-  connect (this,                        SIGNAL (settings_changed ()),
-           this,                        SLOT   (notice_settings ()));
-  connect (_files_dock_widget,          SIGNAL (open_file (QString)),
-           this,                        SLOT   (open_file (QString)));
-  connect (_files_dock_widget,          SIGNAL (displayed_directory_changed(QString)),
-           this,                        SLOT   (set_current_working_directory(QString)));
-  connect (_history_dock_widget,        SIGNAL (information (QString)),
-           this,                        SLOT   (report_status_message (QString)));
-  connect (_history_dock_widget,        SIGNAL (command_double_clicked (QString)),
-           this,                        SLOT   (handle_command_double_clicked (QString)));
-  connect (save_workspace_action,       SIGNAL (triggered ()),
-           this,                        SLOT   (handle_save_workspace_request ()));
-  connect (load_workspace_action,       SIGNAL (triggered ()),
-           this,                        SLOT   (handle_load_workspace_request ()));
-  connect (clear_workspace_action,      SIGNAL (triggered ()),
-           this,                        SLOT   (handle_clear_workspace_request ()));
-  connect (_current_directory_tool_button, SIGNAL (clicked ()),
-           this,                        SLOT   (change_current_working_directory ()));
-  connect (_current_directory_up_tool_button, SIGNAL (clicked ()),
-           this,                        SLOT   (current_working_directory_up()));
-  connect (copy_action,                 SIGNAL (triggered()),
-           _terminal,                   SLOT   (copyClipboard ()));
-  connect (paste_action,                SIGNAL (triggered()),
-           _terminal,                   SLOT   (pasteClipboard ()));
-  connect (_current_directory_combo_box, SIGNAL (activated (QString)),
-           this,                        SLOT (set_current_working_directory (QString)));
-  connect (_debug_continue,             SIGNAL (triggered ()),
-           this,                        SLOT (debug_continue ()));
-  connect (_debug_step_into,            SIGNAL (triggered ()),
-           this,                        SLOT (debug_step_into ()));
-  connect (_debug_step_over,            SIGNAL (triggered ()),
-           this,                        SLOT (debug_step_over ()));
-  connect (_debug_step_out,             SIGNAL (triggered ()),
-           this,                        SLOT (debug_step_out ()));
-  connect (_debug_quit,                 SIGNAL (triggered ()),
-           this,                        SLOT (debug_quit ()));
-
-  connect (clear_command_history,       SIGNAL (triggered ()),
-           this,                        SLOT (handle_clear_history_request ()));
-
-  setWindowTitle ("Octave");
-  setDockOptions(QMainWindow::AnimatedDocks | QMainWindow::AllowNestedDocks | QMainWindow::AllowTabbedDocks);
-  addDockWidget (Qt::LeftDockWidgetArea, _workspace_view);
-  addDockWidget (Qt::LeftDockWidgetArea, _history_dock_widget);
-  addDockWidget (Qt::RightDockWidgetArea, _files_dock_widget);
-  addDockWidget (Qt::RightDockWidgetArea, _file_editor);
-  addDockWidget (Qt::BottomDockWidgetArea, _terminal_dock_widget);
-  addDockWidget (Qt::RightDockWidgetArea, _documentation_dock_widget);
-  setStatusBar (_status_bar);
-  read_settings ();
-
-  _octave_qt_event_listener = new octave_qt_event_listener ();
-  octave_link::instance ()->register_event_listener (_octave_qt_event_listener);
-
-  connect (_octave_qt_event_listener,
-           SIGNAL (current_directory_has_changed_signal (QString)),
-           this,
-           SLOT (current_working_directory_has_changed (QString)));
-
-  connect (_octave_qt_event_listener,
-           SIGNAL (entered_debug_mode_signal ()),
-           this,
-           SLOT(handle_entered_debug_mode ()));
-
-  connect (_octave_qt_event_listener,
-           SIGNAL (quit_debug_mode_signal ()),
-           this,
-           SLOT (handle_quit_debug_mode ()));
-}
-
--- a/gui/src/main-window.h	Sat Aug 18 16:23:39 2012 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,156 +0,0 @@
-/* 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/>.
- */
-
-#ifndef MAINWINDOW_H
-#define MAINWINDOW_H
-
-// Qt includes
-#include <QtGui/QMainWindow>
-#include <QThread>
-#include <QTabWidget>
-#include <QMdiArea>
-#include <QStatusBar>
-#include <QToolBar>
-#include <QQueue>
-#include <QMdiSubWindow>
-#include <QCloseEvent>
-#include <QToolButton>
-#include <QComboBox>
-
-// Editor includes
-#include "file-editor-interface.h"
-
-// QTerminal includes
-#include "QTerminal.h"
-
-// Own includes
-#include "resource-manager.h"
-#include "octave-link.h"
-#include "workspace-view.h"
-#include "history-dockwidget.h"
-#include "files-dockwidget.h"
-#include "terminal-dockwidget.h"
-#include "documentation-dockwidget.h"
-#include "octave-qt-event-listener.h"
-#include "octave-event-observer.h"
-
-/**
-  * \class MainWindow
-  *
-  * Represents the main window.
-  */
-class main_window
-    : public QMainWindow, public octave_event_observer
-{
-Q_OBJECT public:
-  main_window (QWidget * parent = 0);
-  ~main_window ();
-
-  void event_accepted (octave_event *e);
-  void event_reject (octave_event *e);
-
-  QTerminal *get_terminal_view () { return _terminal; }
-  history_dock_widget *get_history_dock_widget ()
-  {
-    return _history_dock_widget;
-  }
-  files_dock_widget *get_files_dock_widget ()
-  {
-    return _files_dock_widget;
-  }
-  bool is_closing () { return _closing; }
-
-signals:
-  void settings_changed ();
-
-public slots:
-  void report_status_message (QString statusMessage);
-  void handle_save_workspace_request ();
-  void handle_load_workspace_request ();
-  void handle_clear_workspace_request ();
-  void handle_clear_history_request ();
-  void handle_command_double_clicked (QString command);
-  void new_file ();
-  void open_file ();
-  void open_file (QString file_name);
-  void open_bug_tracker_page ();
-  void open_agora_page ();
-  void open_octave_forge_page ();
-  void process_settings_dialog_request ();
-  void show_about_octave ();
-  void notice_settings ();
-  void prepare_for_quit ();
-  void reset_windows ();
-  void current_working_directory_has_changed (QString directory);
-  void change_current_working_directory ();
-  void set_current_working_directory (QString directory);
-  void current_working_directory_up ();
-
-  void focus_command_window ();
-  void focus_command_history ();
-  void focus_current_directory ();
-  void focus_workspace ();
-  void focus_editor ();
-  void focus_documentation ();
-
-  void handle_entered_debug_mode ();
-  void handle_quit_debug_mode ();
-  void debug_continue ();
-  void debug_step_into ();
-  void debug_step_over ();
-  void debug_step_out ();
-  void debug_quit ();
-
-protected:
-  void closeEvent (QCloseEvent * closeEvent);
-  void read_settings ();
-  void write_settings ();
-
-private:
-  void construct ();
-  void establish_octave_link ();
-
-  QTerminal *               _terminal;
-  file_editor_interface *   _file_editor;
-  QMenu *                   _debug_menu;
-
-  QAction *                 _debug_continue;
-  QAction *                 _debug_step_into;
-  QAction *                 _debug_step_over;
-  QAction *                 _debug_step_out;
-  QAction *                 _debug_quit;
-
-  // Dock widgets.
-  workspace_view *          _workspace_view;
-  history_dock_widget *     _history_dock_widget;
-  files_dock_widget *       _files_dock_widget;
-  terminal_dock_widget *    _terminal_dock_widget;
-  documentation_dock_widget*_documentation_dock_widget;
-
-  // Toolbars.
-  QStatusBar *              _status_bar;
-  QComboBox *               _current_directory_combo_box;
-  QToolButton *             _current_directory_tool_button;
-  QToolButton *             _current_directory_up_tool_button;
-
-  octave_qt_event_listener *_octave_qt_event_listener;
-
-  // Flag for closing whole application
-  bool                      _closing;
-};
-
-#endif // MAINWINDOW_H
--- a/gui/src/msvc-debug.pri	Sat Aug 18 16:23:39 2012 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,24 +0,0 @@
-# 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/>.
-
-win32-msvc* {
-	CONFIG += release warn_off
-	QMAKE_CXXFLAGS += -MP
-	QMAKE_CXXFLAGS_RELEASE += -Zi
-	QMAKE_CXXFLAGS_RELEASE -= -O2
-	QMAKE_LFLAGS_RELEASE += -debug
-	QMAKE_CLEAN += $(DESTDIR)$(QMAKE_TARGET).pdb
-}
--- a/gui/src/msvc.pri	Sat Aug 18 16:23:39 2012 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,11 +0,0 @@
-CONFIG += release
-
-QMAKE_CXXFLAGS += -MP
-LIBDIR_SUFFIX = release
-
-msvc-debug {
-	QMAKE_CXXFLAGS_RELEASE += -Zi
-	QMAKE_CXXFLAGS_RELEASE -= -O2
-	QMAKE_LFLAGS_RELEASE += -debug
-	QMAKE_CLEAN += $(DESTDIR)$(QMAKE_TARGET).pdb
-}
--- a/gui/src/octave-adapter/octave-event-listener.h	Sat Aug 18 16:23:39 2012 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,36 +0,0 @@
-/* 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/>.
- */
-
-#ifndef OCTAVEEVENTLISTENER_H
-#define OCTAVEEVENTLISTENER_H
-
-#include <string>
-
-class octave_event_listener
-{
-  public:
-    octave_event_listener () { }
-    virtual ~octave_event_listener () { }
-
-    virtual void current_directory_has_changed (std::string directory) = 0;
-    virtual void about_to_exit () = 0;
-
-    virtual void entered_debug_mode () = 0;
-    virtual void quit_debug_mode () = 0;
-};
-
-#endif // OCTAVEEVENTLISTENER_H
--- a/gui/src/octave-adapter/octave-event-observer.h	Sat Aug 18 16:23:39 2012 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,48 +0,0 @@
-/* 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/>.
- */
-
-#ifndef OCTAVEEVENTOBSERVER_H
-#define OCTAVEEVENTOBSERVER_H
-
-class octave_event;
-
-/**
-  * \class octave_event_observer
-  * \brief Implements the observer part for the observer pattern.
-  */
-class octave_event_observer
-{
-  public:
-    octave_event_observer () { }
-    virtual ~octave_event_observer () { }
-
-    /**
-      * This will be called when an event has been accepted. Operations
-      * in this routine will be processed in the octave thread.
-      */
-    virtual void event_accepted (octave_event *e) = 0;
-
-    /**
-      * This will be called when an event has been rejected. Operations
-      * in this routine will be processed in the octave thread.
-      */
-    virtual void event_reject (octave_event *e) = 0;
-};
-
-#include "octave-event.h"
-
-#endif // OCTAVEEVENTOBSERVER_H
--- a/gui/src/octave-adapter/octave-event.cc	Sat Aug 18 16:23:39 2012 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,170 +0,0 @@
-/* OctaveGUI - A graphical user interface for Octave
- * Copyright (C) 2011 John P. Swensen, 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 <string>
-
-#include "cmd-hist.h"
-#include "oct-env.h"
-
-#include "debug.h"
-#include "oct-obj.h"
-#include "parse.h"
-#include "symtab.h"
-#include "toplev.h"
-
-#include "octave-event.h"
-
-#include <readline/readline.h>
-
-void
-octave_event::call_octave_function (std::string name)
-{
-  call_octave_function (name, octave_value_list ());
-}
-
-void
-octave_event::call_octave_function (std::string name,
-                                    const octave_value_list& args,
-                                    int nargout)
-{
-  try
-    {
-      feval (name, args, nargout);
-    } catch (...) { } // Ignore exceptions. Crashes without that.
-}
-
-void
-octave_event::finish_readline_event () const
-{
-  rl_line_buffer[0] = '\0';
-  rl_point = rl_end = 0;
-  rl_done = 1;
-  //rl_forced_update_display ();
-}
-
-bool
-octave_clear_history_event::perform ()
-{
-  int i;
-  while ((i = command_history::length ()) > 0) {
-    command_history::remove (i - 1);
-  }
-  return true;
-}
-
-bool
-octave_debug_step_into_event::perform ()
-{
-  octave_value_list args;
-  args.append (octave_value ("in"));
-  call_octave_function ("dbstep", args);
-  finish_readline_event ();
-  return true;
-}
-
-bool
-octave_debug_step_out_event::perform ()
-{
-  octave_value_list args;
-  args.append (octave_value ("out"));
-  call_octave_function ("dbstep", args);
-  finish_readline_event ();
-  return true;
-}
-
-
-bool
-octave_exit_event::perform ()
-{
-  clean_up_and_exit (0);
-  return true;
-}
-
-bool
-octave_run_file_event::perform ()
-{
-  octave_value_list args;
-  args.append (octave_value (_file));
-  call_octave_function ("run", args);
-  finish_readline_event ();
-  return true;
-}
-
-bool
-octave_change_directory_event::perform ()
-{
-  return octave_env::chdir (_directory);
-}
-
-bool
-octave_load_workspace_event::perform ()
-{
-  octave_value_list args;
-  args.append (octave_value (_file));
-  call_octave_function ("load", args);
-  return true;
-}
-
-bool
-octave_save_workspace_event::perform ()
-{
-  octave_value_list args;
-  args.append (octave_value (_file));
-  call_octave_function ("save", args);
-  return true;
-}
-
-bool
-octave_add_breakpoint_event::perform ()
-{
-  bp_table::intmap intmap;
-  intmap[0] = _line + 1;
-
-  std::string previous_directory = octave_env::get_current_directory ();
-  octave_env::chdir (_path);
-  intmap = bp_table::add_breakpoint (_function_name, intmap);
-  octave_env::chdir (previous_directory);
-  return intmap.size () > 0;
-}
-
-bool
-octave_remove_breakpoint_event::perform ()
-{
-  bp_table::intmap intmap;
-  intmap[0] = _line;
-
-  std::string previous_directory = octave_env::get_current_directory ();
-  octave_env::chdir (_path);
-  bp_table::remove_breakpoint (_function_name, intmap);
-  octave_env::chdir (previous_directory);
-  return true; // TODO: Check result.
-}
-
-bool
-octave_remove_all_breakpoints_event::perform ()
-{
-  bp_table::intmap intmap;
-  std::string previous_directory = octave_env::get_current_directory ();
-  octave_env::chdir (_path);
-  intmap = bp_table::remove_all_breakpoints_in_file (_function_name, true);
-  octave_env::chdir (previous_directory);
-  return intmap.size() > 0;
-}
--- a/gui/src/octave-adapter/octave-event.h	Sat Aug 18 16:23:39 2012 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,377 +0,0 @@
-/* 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/>.
- */
-
-#ifndef OCTAVEEVENT_H
-#define OCTAVEEVENT_H
-
-#include <string>
-
-class octave_value_list;
-
-#include "octave-event-observer.h"
-
-/**
-  * \class octave_event
-  * \brief Base class for an octave event.
-  * In order to make communication with octave threadsafe, comunication is
-  * implemented via events. An application may create events and post them,
-  * however there is no guarantee events will be processed in a given time.
-  *
-  * In order to create an event, there must be an event observer. The event
-  * observer will be given the opportunity to react on the event as soon as
-  * it has been processed in the octave thread. Accepting and ignoring takes
-  * places in the octave thread.
-  */
-class octave_event
-{
-  public:
-    octave_event (octave_event_observer& o)
-      : _octave_event_observer (o)
-    { }
-
-    virtual ~octave_event ()
-    { }
-
-    /** Performs what is necessary to make this event happen. This
-      * code is thread-safe since it will be executed in the octave
-      * thread. However, you should take care to keep this code as
-      * short as possible. */
-    virtual bool perform () = 0;
-
-    /**
-      * Accepts this event. This allows the event observer to react properly
-      * onto the event.
-      */
-    void accept ()
-    { _octave_event_observer.event_accepted (this); }
-
-    /**
-      * Rejects this event. This allows the event observer to react properly
-      * onto the event.
-      */
-    void reject ()
-    { _octave_event_observer.event_reject (this); }
-
-  protected:
-    void call_octave_function (std::string name);
-
-    void call_octave_function (std::string name,
-                               const octave_value_list& args,
-                               int nargout = 0);
-
-    void finish_readline_event () const;
-
-  private:
-    octave_event_observer& _octave_event_observer;
-};
-
-class octave_update_history_event : public octave_event
-{
-  public:
-    /** Creates a new octave_exit_event. */
-    octave_update_history_event (octave_event_observer& o)
-      : octave_event (o)
-    { }
-
-    bool perform ()
-    { return true; /* Always grant. */ }
-};
-
-class octave_update_workspace_event : public octave_event
-{
-  public:
-    /** Creates a new octave_exit_event. */
-    octave_update_workspace_event (octave_event_observer& o)
-      : octave_event (o)
-    { }
-
-    bool perform ()
-    { return true; /* Always grant. */ }
-};
-
-/** Implements an octave exit event. */
-class octave_exit_event : public octave_event
-{
-  public:
-    /** Creates a new octave_exit_event. */
-    octave_exit_event (octave_event_observer& o)
-      : octave_event (o)
-    { }
-
-    bool perform ();
-};
-
-/** Implements an octave run file event. */
-class octave_run_file_event : public octave_event
-{
-  public:
-    /** Creates a new octave_run_file_event. */
-    octave_run_file_event (octave_event_observer& o,
-                           std::string file)
-      : octave_event (o)
-    { _file = file; }
-
-    bool perform ();
-
-  private:
-    std::string _file;
-};
-
-/** Implements a change directory event. */
-class octave_change_directory_event : public octave_event
-{
-  public:
-    /** Creates a new octave_change_directory_event. */
-    octave_change_directory_event (octave_event_observer& o,
-                                   std::string directory)
-      : octave_event (o)
-    { _directory = directory; }
-
-    bool perform ();
-
-  private:
-    std::string _directory;
-};
-
-/** Implements a clear workspace event. */
-class octave_clear_workspace_event : public octave_event
-{
-  public:
-    /** Creates a new octave_run_file_event. */
-    octave_clear_workspace_event (octave_event_observer& o)
-      : octave_event (o)
-    { }
-
-    bool perform ()
-    {
-      call_octave_function ("clear");
-      return true;
-    }
-};
-
-/** Implements a load workspace event. */
-class octave_load_workspace_event : public octave_event
-{
-  public:
-    /** Creates a new octave_change_directory_event. */
-    octave_load_workspace_event (octave_event_observer& o,
-                                 std::string file)
-      : octave_event (o)
-    { _file = file; }
-
-    bool perform ();
-
-  private:
-    std::string _file;
-};
-
-/** Implements a save workspace event. */
-class octave_save_workspace_event : public octave_event
-{
-  public:
-    /** Creates a new octave_change_directory_event. */
-    octave_save_workspace_event (octave_event_observer& o,
-                                 std::string file)
-      : octave_event (o)
-    { _file = file; }
-
-    bool perform ();
-
-  private:
-    std::string _file;
-};
-
-class octave_clear_history_event : public octave_event
-{
-  public:
-    /** Creates a new octave_clear_history_event. */
-    octave_clear_history_event (octave_event_observer& o)
-      : octave_event (o)
-    { }
-
-  bool perform ();
-};
-
-class octave_add_breakpoint_event : public octave_event
-{
-  public:
-    octave_add_breakpoint_event (octave_event_observer& o,
-                                 std::string path,
-                                 std::string function_name,
-                                 int line)
-      : octave_event (o)
-    {
-      _path = path;
-      _function_name = function_name;
-      _line = line;
-    }
-
-    bool perform ();
-
-    std::string get_path ()
-    {
-      return _path;
-    }
-
-    std::string get_function_name ()
-    {
-      return _function_name;
-    }
-
-    int get_line ()
-    {
-      return _line;
-    }
-
-  private:
-    std::string _path;
-    std::string _function_name;
-    int _line;
-};
-
-class octave_remove_breakpoint_event : public octave_event
-{
-  public:
-    octave_remove_breakpoint_event (octave_event_observer& o,
-                                    std::string path,
-                                    std::string function_name,
-                                    int line)
-      : octave_event (o)
-    {
-      _path = path;
-      _function_name = function_name;
-      _line = line;
-    }
-
-    bool perform ();
-
-    std::string get_path ()
-    {
-      return _path;
-    }
-
-    std::string get_function_name ()
-    {
-      return _function_name;
-    }
-
-    int get_line ()
-    {
-      return _line;
-    }
-
-  private:
-    std::string _path;
-    std::string _function_name;
-    int _line;
-};
-
-class octave_remove_all_breakpoints_event : public octave_event
-{
-  public:
-    octave_remove_all_breakpoints_event (octave_event_observer& o,
-                                         std::string path,
-                                         std::string function_name)
-      : octave_event (o)
-    {
-      _path = path;
-      _function_name = function_name;
-    }
-
-    bool perform ();
-
-    std::string get_path ()
-    {
-      return _path;
-    }
-
-    std::string get_function_name ()
-    {
-      return _function_name;
-    }
-
-  private:
-    std::string _path;
-    std::string _function_name;
-};
-
-class octave_debug_step_into_event : public octave_event
-{
-  public:
-    /** Creates a new octave_debug_step_into_event. */
-    octave_debug_step_into_event (octave_event_observer& o)
-      : octave_event (o) { }
-
-    bool perform ();
-};
-
-class octave_debug_step_over_event : public octave_event
-{
-  public:
-    /** Creates a new octave_debug_step_over_event. */
-    octave_debug_step_over_event (octave_event_observer& o)
-      : octave_event (o) { }
-
-    bool perform ()
-    {
-      call_octave_function ("dbnext");
-      finish_readline_event ();
-      return true;
-    }
-};
-
-class octave_debug_step_out_event : public octave_event
-{
-  public:
-    /** Creates a new octave_debug_step_out_event. */
-    octave_debug_step_out_event (octave_event_observer& o)
-      : octave_event (o) { }
-
-    bool perform ();
-};
-
-class octave_debug_continue_event : public octave_event
-{
-  public:
-    /** Creates a new octave_debug_step_out_event. */
-    octave_debug_continue_event (octave_event_observer& o)
-      : octave_event (o) { }
-
-    bool perform ()
-    {
-      call_octave_function ("dbcont");
-      finish_readline_event ();
-      return true;
-    }
-};
-
-class octave_debug_quit_event : public octave_event
-{
-  public:
-    /** Creates a new octave_debug_step_out_event. */
-    octave_debug_quit_event (octave_event_observer& o)
-      : octave_event (o) { }
-
-    bool perform ()
-    {
-      call_octave_function ("dbquit");
-      finish_readline_event ();
-      return true;
-    }
-};
-
-#endif // OCTAVEEVENT_H
--- a/gui/src/octave-adapter/octave-link.cc	Sat Aug 18 16:23:39 2012 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,161 +0,0 @@
-/* OctaveGUI - A graphical user interface for Octave
- * Copyright (C) 2011 John P. Swensen, 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 "cmd-edit.h"
-#include "oct-env.h"
-#include "oct-mutex.h"
-#include "symtab.h"
-#include "toplev.h"
-
-#include "octave-link.h"
-
-int octave_readline_hook ()
-{
-  octave_link::instance ()->entered_readline_hook ();
-  octave_link::instance ()->generate_events ();
-  octave_link::instance ()->process_events ();
-  octave_link::instance ()->finished_readline_hook ();
-  return 0;
-}
-
-void octave_exit_hook (int status)
-{
-  (void) status;
-  octave_link::instance ()->about_to_exit ();
-}
-
-octave_link octave_link::_singleton;
-
-octave_link::octave_link ()
-{
-  _event_queue_mutex = new octave_mutex ();
-  _last_working_directory = "";
-  _debugging_mode_active = false;
-}
-
-octave_link::~octave_link ()
-{
-}
-
-void
-octave_link::launch_octave ()
-{
-  // Create both threads.
-  _octave_main_thread = new octave_main_thread ();
-  command_editor::add_event_hook (octave_readline_hook);
-  octave_exit = octave_exit_hook;
-
-  // Start the first one.
-  _octave_main_thread->start ();
-}
-
-void
-octave_link::register_event_listener (octave_event_listener *oel)
-{ _octave_event_listener = oel; }
-
-void
-octave_link::generate_events ()
-{
-  std::string current_working_directory = octave_env::get_current_directory ();
-  if (current_working_directory != _last_working_directory)
-    {
-      _last_working_directory = current_working_directory;
-      if (_octave_event_listener)
-        _octave_event_listener
-            ->current_directory_has_changed (_last_working_directory);
-    }
-
-  if (_debugging_mode_active != Vdebugging)
-    {
-      _debugging_mode_active = Vdebugging;
-      if (_octave_event_listener)
-        {
-          if (_debugging_mode_active)
-            _octave_event_listener->entered_debug_mode ();
-          else
-            _octave_event_listener->quit_debug_mode ();
-        }
-    }
-}
-
-void
-octave_link::process_events ()
-{
-  _event_queue_mutex->lock ();
-
-  while (_event_queue.size () > 0)
-    {
-      octave_event * e = _event_queue.front ();
-      _event_queue.pop ();
-      if (e->perform ())
-        e->accept ();
-      else
-        e->reject ();
-    }
-  _event_queue_mutex->unlock ();
-}
-
-void
-octave_link::post_event (octave_event *e)
-{
-  if (e)
-    {
-      _event_queue_mutex->lock ();
-      _event_queue.push (e);
-      _event_queue_mutex->unlock ();
-    }
-}
-
-void
-octave_link::event_accepted (octave_event *e)
-{ delete e; }
-
-void
-octave_link::event_reject (octave_event *e)
-{ delete e; }
-
-void
-octave_link::about_to_exit ()
-{
-  _event_queue_mutex->lock ();
-  while (!_event_queue.empty ())
-    _event_queue.pop ();
-
-  _event_queue_mutex->unlock ();
-
-  if (_octave_event_listener)
-    _octave_event_listener->about_to_exit ();
-}
-
-void
-octave_link::entered_readline_hook ()
-{ }
-
-void
-octave_link::finished_readline_hook ()
-{
-}
-
-std::string
-octave_link::get_last_working_directory ()
-{
-  return _last_working_directory;
-}
--- a/gui/src/octave-adapter/octave-link.h	Sat Aug 18 16:23:39 2012 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,88 +0,0 @@
-/* OctaveGUI - A graphical user interface for Octave
- * Copyright (C) 2011 John P. Swensen, 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/>.
- */
-
-#ifndef OCTAVELINK_H
-#define OCTAVELINK_H
-
-#include <queue>
-#include <string>
-
-class octave_mutex;
-
-#include "octave-main-thread.h"
-#include "octave-event.h"
-#include "octave-event-observer.h"
-#include "octave-event-listener.h"
-
-/**
-  * \class OctaveLink
-  * \brief Provides threadsafe access to octave.
-  * \author Jacob Dawid
-  * This class is a wrapper around octave and provides threadsafety by
-  * buffering access operations to octave and executing them in the readline
-  * event hook, which lives in the octave thread.
-  */
-class octave_link : public octave_event_observer
-{
-public:
-  /** Provides a way to access the unique octave_link object. */
-  static octave_link * instance () { return &_singleton; }
-
-  /** Starts octave. */
-  void launch_octave ();
-  void register_event_listener (octave_event_listener *oel);
-
-  void generate_events ();
-  void process_events ();
-  void post_event (octave_event *e);
-  void event_accepted (octave_event *e);
-  void event_reject (octave_event *e);
-
-  void about_to_exit ();
-
-  void entered_readline_hook ();
-  void finished_readline_hook ();
-
-  std::string get_last_working_directory ();
-
-private:
-  /** Singleton. */
-  octave_link ();
-  ~octave_link ();
-
-  octave_event_listener *_octave_event_listener;
-
-  /** Thread running octave_main. */
-  octave_main_thread *_octave_main_thread;
-
-  /** Semaphore to lock access to the event queue. */
-  octave_mutex *_event_queue_mutex;
-
-  /** Buffer for queueing events until they will be processed. */
-  std::queue <octave_event *> _event_queue;
-
-  /** Stores the last known current working directory of octave. */
-  std::string _last_working_directory;
-  bool _debugging_mode_active;
-
-  /** Semaphore to lock access to the performance information. */
-  octave_mutex *_performance_information_mutex;
-
-  /** Unique instance. Singelton! */
-  static octave_link _singleton;
-};
-#endif // OCTAVELINK_H
--- a/gui/src/octave-adapter/octave-main-thread.cc	Sat Aug 18 16:23:39 2012 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,39 +0,0 @@
-/* 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 <string>
-
-#include "octave.h"
-
-#include "octave-main-thread.h"
-#include "octave-link.h"
-
-octave_main_thread::octave_main_thread () : QThread ()
-{
-}
-
-void
-octave_main_thread::run ()
-{
-  setlocale (LC_ALL, "en_US.UTF-8");
-  emit ready ();
-  octave_execute_interpreter ();
-}
--- a/gui/src/octave-adapter/octave-main-thread.h	Sat Aug 18 16:23:39 2012 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,45 +0,0 @@
-/* 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/>.
- */
-
-#ifndef OCTAVEMAINTHREAD_H
-#define OCTAVEMAINTHREAD_H
-
-#include <QThread>
-
-/**
-  * \class octave_main
-  * \brief This class represents a thread just running octave_main.
-  * \author Jacob Dawid
-  */
-class octave_main_thread : public QThread
-{
-  Q_OBJECT
-public:
-  /** Creates a new thread running octave_main. */
-  octave_main_thread ();
-
-signals:
-  /** This signal will be emitted when the thread is about to actually
-    * run octave_main. */
-  void ready();
-
-protected:
-  /** Runs octave_main. */
-  void run ();
-};
-
-#endif // OCTAVEMAINTHREAD_H
--- a/gui/src/octave-gui.cc	Sat Aug 18 16:23:39 2012 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,108 +0,0 @@
-/* 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 ();
-        }
-    }
-}
--- a/gui/src/octave-gui.h	Sat Aug 18 16:23:39 2012 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,28 +0,0 @@
-/*
-
-Copyright (C) 2012 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/>.
-
-*/
-
-#if !defined (octave_octave_gui_h)
-#define octave_octave_gui_h 1
-
-extern int octave_start_gui (int argc, char **argv);
-
-#endif
--- a/gui/src/octave-qt-event-listener.cc	Sat Aug 18 16:23:39 2012 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,46 +0,0 @@
-/* OctaveGUI - A graphical user interface for Octave
- * Copyright (C) 2012 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 "octave-qt-event-listener.h"
-#include <QApplication>
-
-octave_qt_event_listener::octave_qt_event_listener (QObject *parent)
-  : QObject (parent), octave_event_listener ()
-{
-}
-
-void
-octave_qt_event_listener::current_directory_has_changed (std::string directory)
-{
-  emit current_directory_has_changed_signal
-      (QString::fromStdString (directory));
-}
-
-void
-octave_qt_event_listener::about_to_exit ()
-{
-  qApp->quit ();
-}
-
-void
-octave_qt_event_listener::entered_debug_mode ()
-{ emit entered_debug_mode_signal (); }
-
-void
-octave_qt_event_listener::quit_debug_mode ()
-{ emit quit_debug_mode_signal (); }
-
--- a/gui/src/octave-qt-event-listener.h	Sat Aug 18 16:23:39 2012 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,44 +0,0 @@
-/* OctaveGUI - A graphical user interface for Octave
- * Copyright (C) 2012 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/>.
- */
-
-#ifndef OCTAVEQTEVENTLISTENER_H
-#define OCTAVEQTEVENTLISTENER_H
-
-#include <QObject>
-#include <QString>
-#include "octave-event-listener.h"
-
-class octave_qt_event_listener
-    : public QObject, public octave_event_listener
-{
-    Q_OBJECT
-  public:
-    octave_qt_event_listener (QObject *parent = 0);
-
-    void current_directory_has_changed (std::string directory);
-    void about_to_exit ();
-
-    void entered_debug_mode ();
-    void quit_debug_mode ();
-
-  signals:
-    void current_directory_has_changed_signal (QString directory);
-    void entered_debug_mode_signal ();
-    void quit_debug_mode_signal ();
-};
-
-#endif // OCTAVEQTEVENTLISTENER_H
--- a/gui/src/qtinfo/parser.cc	Sat Aug 18 16:23:39 2012 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,578 +0,0 @@
-/* Copyright (C) 2009 P.L. Lucas
- * Copyright (C) 2012 Jacob Dawid <jacob.dawid@gmail.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 2 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, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-#include "parser.h"
-#include <QFileInfo>
-#include <QDir>
-#include <QFile>
-#include <QUrl>
-#include <QRegExp>
-#include <QProcess>
-#include <QBuffer>
-
-parser::parser(QObject *parent)
-  : QObject(parent)
-{
-  _compressors_map.insert ("bz2",  "bzip2 -dc \"%1\"");
-  _compressors_map.insert ("gz",   "gzip -dc \"%1\"");
-  _compressors_map.insert ("lzma", "lzma -dc \"%1\"");
-  _compressors_map.insert ("xz",   "xz -dc \"%1\"");
-  _compressors_map.insert ("Z",    "gunzip -c \"%1\"");
-}
-
-void
-parser::set_info_path (QString infoPath)
-{
-  this->_info_path = infoPath;
-
-  _info_files.clear ();
-
-  QFileInfo info (infoPath);
-
-  QString path = info.absolutePath ();
-  QString fileName = info.fileName ();
-
-  QDir infoDir (path);
-  QStringList filter;
-  filter.append (fileName + "*");
-
-  _info_files = infoDir.entryInfoList (filter, QDir::Files);
-  parse_info_map ();
-}
-
-QString
-parser::get_info_path ()
-{
-  return _info_path;
-}
-
-QIODevice *
-parser::open_file (QFileInfo & file_info)
-{
-  QIODevice *iodevice=NULL;
-  if ( _compressors_map.contains(file_info.suffix ()))
-    {
-      QProcess gzip;
-      gzip.start (_compressors_map.value (file_info.suffix ()).arg (file_info.absoluteFilePath ()));
-
-      if (!gzip.waitForFinished ())
-        return NULL;
-
-      QByteArray result = gzip.readAll ();
-
-      QBuffer *io = new QBuffer (this);
-      io->setData (result);
-
-      if (!io->open (QIODevice::ReadOnly | QIODevice::Text))
-        return NULL;
-
-      iodevice = io;
-    }
-  else
-    {
-      QFile *io = new QFile (file_info.absoluteFilePath ());
-      if (!io->open (QIODevice::ReadOnly | QIODevice::Text))
-        return NULL;
-      iodevice = io;
-    }
-
-  return iodevice;
-}
-
-int
-parser::is_ref (QString node)
-{
-  if (_ref_map.contains (node))
-    {
-      node_position ref = _ref_map [node];
-
-      return ref.pos-_node_map [ref._node_name].pos;
-    }
-  return -1;
-}
-
-QString
-parser::search_node (QString node)
-{
-  QFileInfo file_info;
-  QString ref;
-
-  if (_ref_map.contains (node))
-    {
-      ref = node;
-      node = _ref_map [ref]._node_name;
-    }
-
-  if (_node_map.contains (node))
-    {
-      int pos = _node_map [node].pos;
-      int realPos;
-
-      real_position (pos, file_info, realPos);
-
-      QIODevice *io = open_file (file_info);
-      if (io == NULL)
-        {
-          return QString ();
-        }
-
-      seek (io, realPos);
-
-      QString text = get_next_node (io);
-      if (!text.isEmpty())
-        {
-          return text;
-        }
-
-      io->close ();
-      delete io;
-    }
-
-  return QString ();
-}
-
-QString
-parser::search_node (QString node, QIODevice *io)
-{
-  while (!io->atEnd ())
-    {
-      QString text = get_next_node (io);
-      if(node == get_node_name (text))
-        {
-          return text;
-        }
-    }
-
-  return QString ();
-}
-
-QString
-parser::get_next_node (QIODevice *io)
-{
-  QString text;
-  while (!io->atEnd ())
-    {
-      QByteArray line = io->readLine ();
-      if (line.at(0) == 31)
-        {
-          break;
-        }
-      else
-        {
-          text.append (line);
-        }
-    }
-  return text;
-}
-
-static QString
-get_first_line (QString text)
-{
-  int n = text.indexOf ("\n");
-
-  if (n < 0)
-    {
-      return QString ();
-    }
-
-  QString first_line = text.left (n);
-  return first_line;
-}
-
-static QString
-parser_node (QString text, QString node_name)
-{
-  QString firstLine = get_first_line (text);
-  QStringList nodes = firstLine.split (",");
-  for (int i = 0;i < nodes.size (); i++)
-    {
-      QString node = nodes.at (i).trimmed ();
-
-      if (node.startsWith (node_name))
-        {
-          return node.remove (0, node_name.size ()).trimmed ();
-        }
-    }
-  return QString ();
-}
-
-QString
-parser::get_node_name (QString text)
-{
-  return parser_node (text, "Node:");
-}
-
-QString
-parser::get_node_up (QString text)
-{
-  return parser_node (text, "Up:");
-}
-
-QString
-parser::get_node_next (QString text)
-{
-  return parser_node (text, "Next:");
-}
-
-QString
-parser::get_node_prev (QString text)
-{
-  return parser_node (text, "Prev:");
-}
-
-static void
-replace_links (QString &text)
-{
-  QRegExp re ("(\\*[N|n]ote|\n\\*)([ |\n]+)([^:]+):([^:\\.,]*)([:,\\.])");
-  int i = 0, f;
-
-  while ( (i = re.indexIn (text,i)) != -1)
-    {
-      QString type     = re.cap (1);
-      QString note     = re.cap (3);
-      QString url_link = re.cap (4);
-      QString link     = re.cap (4);
-
-      if (url_link.isEmpty ())
-        {
-          url_link = note;
-        }
-
-      url_link = url_link.trimmed ();
-      url_link.replace ("\n"," ");
-      url_link.replace (QRegExp ("  +")," ");
-      url_link.replace ("<b>","");
-      url_link.replace ("</b>","");
-      url_link = QUrl::toPercentEncoding (url_link, "", "'");
-
-      QString href;
-      if (type=="\n*")
-        {
-          href="\n<img src=':/actions/icons/bookmark.png'/>";
-        }
-      else
-        {
-          href="<img src=':/actions/icons/bookmark.png'/>";
-        }
-      href += re.cap (2) + "<a href='" + url_link + "'>" + note + ":" + link + re.cap (5) + "</a>";
-      f = re.matchedLength ();
-      text.replace (i,f,href);
-      i += href.size ();
-    }
-}
-
-static void
-replace_colons (QString &text)
-{
-  QRegExp re ("`([^']+)'");
-  int i = 0, f;
-  while ( (i = re.indexIn (text, i)) != -1)
-    {
-      QString t = re.cap (1);
-      QString bold = "<b>`" + t + "</b>'";
-
-      f = re.matchedLength ();
-      text.replace (i,f,bold);
-      i += bold.size ();
-    }
-}
-
-static void
-info_to_html (QString &text)
-{
-  text.replace ("&", "&amp;");
-  text.replace ("<", "&lt;");
-  text.replace (">", "&gt;");
-
-  text.replace ("\n* Menu:", "\n<b>Menu:</b>");
-  text.replace ("*See also:*", "<b>See also:</b>");
-  replace_colons (text);
-  replace_links (text);
-}
-
-QString
-parser::node_text_to_html (QString text, int anchorPos, QString anchor)
-{
-  QString nodeName = get_node_name (text);
-  QString nodeUp   = get_node_up (text);
-  QString nodeNext = get_node_next (text);
-  QString nodePrev = get_node_prev (text);
-
-  if (anchorPos > -1)
-    {
-      QString text1 = text.left (anchorPos);
-      QString text2 = text.mid (anchorPos);
-
-      int n = text1.indexOf ("\n");
-      text1.remove (0, n);
-
-      info_to_html (text1);
-      info_to_html (text2);
-
-      text = text1 + "<a name='" + anchor + "' /><img src=':/actions/icons/stop.png'>" + text2;
-    }
-  else
-    {
-      int n = text.indexOf ("\n");
-      text.remove (0, n);
-      info_to_html (text);
-    }
-
-  QString navigationLinks = QString (
-        "<img src=':/actions/icons/arrow_right.png'/> <b>Section:</b> %1<br>"
-        "<b>Previous Section:</b> <a href='%2'>%3</a><br>"
-        "<b>Next Section:</b> <a href='%4'>%5</a><br>"
-        "<b>Up:</b> <a href='%6'>%7</a><br>\n"
-        )
-      .arg (nodeName)
-      .arg (QString (QUrl::toPercentEncoding (nodePrev, "", "'")))
-      .arg (nodePrev)
-      .arg (QString (QUrl::toPercentEncoding (nodeNext, "", "'")))
-      .arg (nodeNext)
-      .arg (QString (QUrl::toPercentEncoding (nodeUp, "", "'")))
-      .arg (nodeUp);
-
-
-  text.prepend ("<hr>\n<pre>");
-  text.append ("</pre>\n<hr><hr>\n");
-  text.prepend (navigationLinks);
-  text.append (navigationLinks);
-  text.prepend ("<html><body>\n");
-  text.append ("</body></html>\n");
-  return text;
-}
-
-void
-parser::parse_info_map ()
-{
-  QRegExp re ("(Node|Ref): ([^\\0177]+)\\0177(\\d+)\n");
-  QRegExp re_files ("([^:]+): (\\d+)\n");
-  int foundCount = 0;
-
-  for(int i = 0; i < _info_files.size (); i++)
-    {
-      QFileInfo fileInfo = _info_files.at (i);
-
-      QIODevice *io = open_file (fileInfo);
-      if (io == NULL)
-        {
-          continue;
-        }
-
-      QString nodeText;
-      while (! (nodeText=get_next_node (io)).isEmpty () && foundCount < 2)
-        {
-          QString first_line = get_first_line (nodeText);
-          if (first_line.startsWith ("Tag") )
-            {
-              foundCount++;
-              int pos = 0;
-              QString last_node;
-
-              while ((pos = re.indexIn (nodeText, pos)) != -1) {
-                  QString type = re.cap (1);
-                  QString node = re.cap (2);
-                  int index = re.cap (3).toInt ();
-
-                  if (type == "Node")
-                    {
-                      node_map_item item;
-                      item.pos = index;
-                      _node_map [node] = item;
-                      last_node = node;
-                    }
-                  else if (type == "Ref")
-                    {
-                      node_position item;
-                      item._node_name = last_node;
-                      item.pos = index;
-                      _ref_map [node] = item;
-                    }
-                  pos += re.matchedLength ();
-                }
-              break;
-            }
-          else if (first_line.startsWith ("Indirect:"))
-            {
-              foundCount++;
-              int pos = 0;
-
-              while ( (pos = re_files.indexIn (nodeText, pos)) != -1) {
-                  QString fileCap = re_files.cap (1).trimmed ();
-                  int index = re_files.cap (2).toInt ();
-
-                  info_file_item item;
-                  for (int j = 0;j < _info_files.size (); j++)
-                    {
-                      QFileInfo info = _info_files.at (j);
-                      if (info.fileName ().startsWith (fileCap))
-                        {
-                          item.file_info = info;
-                          break;
-                        }
-                    }
-                  item.real_size = index;
-                  _info_file_real_size_list.append (item);
-                  pos += re_files.matchedLength ();
-                }
-
-            }
-        }
-      io->close ();
-      delete io;
-    }
-}
-
-void
-parser::real_position (int pos, QFileInfo & file_info, int & real_pos)
-{
-  int header = -1, sum = 0;
-  for (int i = 0; i < _info_file_real_size_list.size (); i++)
-    {
-      info_file_item item = _info_file_real_size_list.at (i);
-      if (header == -1)
-        {
-          file_info = item.file_info;
-          header = item.real_size;
-        }
-
-      if (pos < item.real_size)
-        {
-          break;
-        }
-
-      file_info = item.file_info;
-      sum = item.real_size;
-    }
-  real_pos = pos - sum + header + 2;
-}
-
-void
-parser::seek (QIODevice *io, int pos)
-{
-  char ch;
-  while (!io->atEnd () && pos > 0)
-    {
-      io->getChar (&ch);
-      pos--;
-    }
-}
-
-static void
-replace (QString &text, QRegExp re, QString after)
-{
-  int pos = 0;
-
-  while ( (pos = re.indexIn (text, pos)) != -1)
-    {
-      QString cap = text.mid (pos,re.matchedLength ());
-      QString a (after);
-      a = a.arg (cap);
-      text.remove (pos, re.matchedLength ());
-      text.insert (pos, a);
-      pos += a.size ();
-    }
-}
-
-QString
-parser::global_search (QString text, int max_founds)
-{
-  QString results;
-  QStringList words = text.split (" ",QString::SkipEmptyParts);
-
-  QString re_program ("(" + words.at (0));
-  for (int i = 1; i < words.size (); i++)
-    {
-      re_program += "|" + words.at (i);
-    }
-  re_program += ")";
-
-  QRegExp re (re_program, Qt::CaseInsensitive);
-
-  results.append ("<html><body>\n<h1>Search results</h1>\n<b>Results for:</b> ");
-  results.append (text);
-  results.append ("<br>\n");
-
-  for (int i = 0; i < _info_files.size (); i++)
-    {
-      QFileInfo file_info = _info_files.at (i);
-      QIODevice *io = open_file (file_info);
-      if (io == NULL)
-        {
-          continue;
-        }
-
-      QString node_text;
-      while ( !(node_text = get_next_node (io)).isEmpty ())
-        {
-          QString firstLine = get_first_line (node_text);
-          QString node = get_node_name (node_text);
-          if (node.isEmpty ())
-            {
-              continue;
-            }
-
-          int n = node_text.indexOf ("\n");
-          node_text.remove (0, n);
-
-          int pos = 0;
-          int founds = 0;
-
-          for (; founds < words.size () && node_text.indexOf (words.at (founds)) >= 0; founds++)
-            { }
-
-          if (founds<words.size ())
-            {
-              continue;
-            }
-          founds = 0;
-
-          while ( (pos = re.indexIn (node_text, pos)) != -1 && founds < max_founds)
-            {
-              int line_start, line_end;
-              line_start = node_text.lastIndexOf ("\n", pos);
-              line_end = node_text.indexOf ("\n", pos);
-              QString line = node_text.mid (line_start, line_end - line_start).trimmed ();
-
-              if (founds == 0)
-                {
-                  results.append(
-                        "<br>\n<img src=':/actions/icons/bookmark.png'> <a href='"
-                        + QString(QUrl::toPercentEncoding(node,"","'")) +
-                        "'>");
-                  results.append (node);
-                  results.append ("</a><br>\n");
-                }
-
-              replace (line, re, "<i>%1</i>");
-              results.append (line);
-              results.append ("<br>\n");
-
-              founds++;
-
-              pos += re.matchedLength ();
-            }
-        }
-      io->close ();
-      delete io;
-    }
-
-  results.append ("</body></html>");
-  return results;
-}
--- a/gui/src/qtinfo/parser.h	Sat Aug 18 16:23:39 2012 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,111 +0,0 @@
-/* Copyright (C) 2009 P.L. Lucas
- * Copyright (C) 2012 Jacob Dawid <jacob.dawid@gmail.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 2 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, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-#include <QStringList>
-#include <QIODevice>
-#include <QFileInfoList>
-#include <QHash>
-
-/**
- * \class parser
- * This class gets nodes and searchs inside of `info files'.
- * <p>Each info file has nodes. Every node has the documentation.
- * Info files contains a map with position of each node.</p>
- * <p>What is position?
- * There is a simple answer:
- * If you make a queue with info files, position will be the number of bytes
- * from begining to node position.</p>
- * <p>
- * But is not so easy. There is headers, and qtinfo must not take these headers into account.
- * </p>
- * <p>
- * This class also translates info files to html.
- * </p>
- */
-class parser
-    : public QObject
-{
-  Q_OBJECT
-
-public:
-  parser (QObject *parent = 0);
-  void set_info_path (QString _info_path);
-  QString get_info_path ();
-  QString search_node (QString node);
-  QString global_search (QString text, int maxFounds);
-
-  /** Checks if this node is reference. If node is reference, it will be returned its position
-    * in text, else  it will be returned -1.
-    */
-  int is_ref (QString node);
-
-  /**Translates text of node to Html. If anchorPos is not -1, then anchor is inserted in that
-    * position.
-    */
-  QString node_text_to_html (QString text, int anchorPos=-1, QString anchor=QString());
-
-private:
-  struct node_position
-  {
-    QString _node_name;
-    int pos;
-  };
-
-  struct node_map_item
-  {
-    int pos;
-  };
-
-  struct info_file_item
-  {
-    QFileInfo file_info;
-    int real_size;
-  };
-
-  QString search_node (QString node, QIODevice * io);
-  QString get_next_node (QIODevice * io);
-  QString get_node_name (QString text);
-  QString get_node_up (QString text);
-  QString get_node_next (QString text);
-  QString get_node_prev (QString text);
-
-  /** Parses info files and gets map of node positions.*/
-  void parse_info_map();
-
-  /** Open info files and uncompress them. */
-  QIODevice *open_file(QFileInfo & fileInfo);
-
-  /** Calculates real position of nodes.
-    * \param pos position from info file.
-    * \param fileInfo returns file what contains that position.
-    * \param realPos returns real position inside of fileInfo.
-    */
-  void real_position (int pos, QFileInfo & file_info, int & real_pos);
-
-  /** Seeks to position pos. */
-  void seek (QIODevice *io, int pos);
-
-
-  QString                       _info_path;
-  QFileInfoList                 _info_files;
-  QHash<QString, node_map_item> _node_map;
-  QHash<QString, node_position> _ref_map;
-  QList<info_file_item>         _info_file_real_size_list;
-  QHash<QString, QString>       _compressors_map;
-};
--- a/gui/src/qtinfo/webinfo.cc	Sat Aug 18 16:23:39 2012 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,211 +0,0 @@
-/* Copyright (C) 2009 P.L. Lucas
- * Copyright (C) 2012 Jacob Dawid <jacob.dawid@gmail.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 2 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, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-#include "webinfo.h"
-#include <QVBoxLayout>
-#include <QHBoxLayout>
-
-
-webinfo::webinfo (QWidget *parent)
-  :QWidget (parent)
-{
-  _font_web = font ();
-
-  QVBoxLayout *layout = new QVBoxLayout ();
-  layout->setMargin (0);
-  setLayout (layout);
-
-  QHBoxLayout *hboxLayout = new QHBoxLayout ();
-  hboxLayout->setMargin (2);
-  layout->addLayout (hboxLayout);
-
-  _close_tab_button = new QPushButton (this);
-  _close_tab_button->setSizePolicy (QSizePolicy::Fixed,QSizePolicy::Preferred);
-  _close_tab_button->setIcon (QIcon (":/actions/icons/stop.png"));
-  hboxLayout->addWidget (_close_tab_button);
-
-  _tab_bar = new QTabBar (this);
-  _tab_bar->setSizePolicy (QSizePolicy::Preferred,QSizePolicy::Preferred);
-  _tab_bar->setExpanding (false);
-  hboxLayout->addWidget (_tab_bar);
-
-  _zoom_in_button = new QToolButton (this);
-  _zoom_in_button->setSizePolicy (QSizePolicy::Fixed,QSizePolicy::Preferred);
-  _zoom_in_button->setIcon (QIcon (":/actions/icons/zoom-in.png"));
-  hboxLayout->addWidget (_zoom_in_button);
-
-  _zoom_out_button = new QToolButton (this);
-  _zoom_out_button->setSizePolicy (QSizePolicy::Fixed,QSizePolicy::Preferred);
-  _zoom_out_button->setIcon (QIcon (":/actions/icons/zoom-out.png"));
-  hboxLayout->addWidget (_zoom_out_button);
-
-  _stacked_widget = new QStackedWidget (this);
-  layout->addWidget (_stacked_widget);
-
-  hboxLayout = new QHBoxLayout ();
-  layout->addLayout (hboxLayout);
-
-  _search_line_edit = new QLineEdit(this);
-  _search_line_edit->setPlaceholderText (tr ("Type here and press \'Return\' to search"));
-  hboxLayout->addWidget (_search_line_edit);
-
-  _search_check_box = new QCheckBox (tr ("Global search"));
-  hboxLayout->addWidget (_search_check_box);
-
-  connect (_close_tab_button, SIGNAL (clicked ()), this, SLOT (close_tab ()));
-  connect (_tab_bar, SIGNAL (currentChanged (int)), this, SLOT (current_tab_changed (int)));
-  connect (_zoom_in_button, SIGNAL (clicked ()), this, SLOT (zoom_in ()));
-  connect (_zoom_out_button, SIGNAL (clicked ()), this, SLOT (zoom_out ()));
-  connect (_search_line_edit, SIGNAL (returnPressed ()), this, SLOT (search ()));
-
-  resize (500, 300);
-
-  set_info_path ("../../doc/interpreter/octave.info");
-}
-
-void
-webinfo::set_info_path (QString info_path)
-{
-  _parser.set_info_path (info_path);
-  load_node ("Top");
-}
-
-void
-webinfo::load_node (QString node_name)
-{
-  //Check if node has been already opened.
-  for (int i = 0;i < _tab_bar->count (); i++)
-    {
-      if (node_name == _tab_bar->tabText (i))
-        {
-          _tab_bar->setCurrentIndex (i);
-          return;
-        }
-    }
-
-  QString text = _parser.search_node (node_name);
-  int i = _parser.is_ref (node_name);
-  _text_browser = addNewTab (node_name);
-  _text_browser->setHtml (_parser.node_text_to_html (text, i - 1, "anchor"));
-
-  if (i != -1)
-    {
-      _text_browser->scrollToAnchor ("anchor");
-    }
-}
-
-void
-webinfo::link_clicked (const QUrl & link)
-{
-  QString node = link.toString ();
-  load_node (node);
-}
-
-void
-webinfo::current_tab_changed (int index)
-{
-  QVariant data = _tab_bar->tabData (index);
-  _text_browser = (QTextBrowser*) (data.value<void*> ());
-
-  _stacked_widget->setCurrentIndex (_stacked_widget->indexOf (_text_browser));
-
-  if (_text_browser->font () != _font_web)
-    {
-      _text_browser->setFont (_font_web);
-    }
-}
-
-QTextBrowser *
-webinfo::addNewTab(QString name)
-{
-  _text_browser = new QTextBrowser (this);
-  _text_browser->setOpenLinks (false);
-  _text_browser->show ();
-
-  connect (_text_browser, SIGNAL (anchorClicked (const QUrl &)), this, SLOT (link_clicked (const QUrl &)) );
-  disconnect(_tab_bar, SIGNAL (currentChanged(int)), this, SLOT (current_tab_changed (int)));
-
-  int ns = _stacked_widget->addWidget (_text_browser);
-  _stacked_widget->setCurrentIndex (ns);
-
-  int nt = _tab_bar->addTab (name);
-  _tab_bar->setCurrentIndex (nt);
-  QVariant data;
-  data.setValue ( (void*)_text_browser);
-  _tab_bar->setTabData (nt, data);
-
-  connect (_tab_bar, SIGNAL (currentChanged (int)), this, SLOT (current_tab_changed (int)));
-
-  if (_text_browser->font () != _font_web)
-    {
-      _text_browser->setFont (_font_web);
-    }
-  return _text_browser;
-}
-
-void
-webinfo::close_tab ()
-{
-  int index = _tab_bar->currentIndex ();
-  if (_tab_bar->tabText (index) != "Top")
-    closeTab (index);
-}
-
-void
-webinfo::closeTab (int index)
-{
-  QVariant data = _tab_bar->tabData (index);
-  QWidget *w = (QWidget*) (data.value<void*> ());
-  _stacked_widget->removeWidget (w);
-  delete w;
-
-  _tab_bar->removeTab (index);
-}
-
-void
-webinfo::search ()
-{
-  if (_search_check_box->isChecked ())
-    {
-      // Global search
-      QString results = _parser.global_search (_search_line_edit->text (), 5);
-      _text_browser=addNewTab ("Results for: " + _search_line_edit->text ());
-      _text_browser->setHtml (results);
-    }
-  else
-    {
-      // Local search
-      _text_browser->find (_search_line_edit->text ());
-    }
-}
-
-void
-webinfo::zoom_in ()
-{
-  _font_web.setPointSize (_font_web.pointSize() + 1);
-  _text_browser->setFont (_font_web);
-}
-
-void
-webinfo::zoom_out ()
-{
-  _font_web.setPointSize (_font_web.pointSize() - 1);
-  _text_browser->setFont (_font_web);
-}
-
--- a/gui/src/qtinfo/webinfo.h	Sat Aug 18 16:23:39 2012 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,60 +0,0 @@
-/* Copyright (C) 2009 P.L. Lucas
- * Copyright (C) 2012 Jacob Dawid <jacob.dawid@gmail.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 2 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, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-#include <QTextBrowser>
-#include "parser.h"
-#include <QStackedWidget>
-#include <QTabBar>
-#include <QPushButton>
-#include <QLineEdit>
-#include <QCheckBox>
-#include <QToolButton>
-
-class webinfo : public QWidget
-{
-  Q_OBJECT
-public:
-  webinfo (QWidget *parent = 0);
-  void set_info_path (QString info_path);
-  void load_node (QString node_name);
-
-public slots:
-  void link_clicked (const QUrl &link);
-  void current_tab_changed (int index);
-  void close_tab ();
-  void search ();
-  void zoom_in ();
-  void zoom_out ();
-
-private:
-  QTextBrowser        *_text_browser;
-  QTabBar             *_tab_bar;
-  QStackedWidget      *_stacked_widget;
-  QPushButton         *_close_tab_button;
-  QLineEdit           *_search_line_edit;
-  QCheckBox           *_search_check_box;
-  QToolButton         *_zoom_in_button;
-  QToolButton         *_zoom_out_button;
-
-  parser              _parser;
-  QFont               _font_web;
-
-  QTextBrowser *addNewTab (QString name);
-  void closeTab(int index);
-};
--- a/gui/src/resource-manager.cc	Sat Aug 18 16:23:39 2012 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1721 +0,0 @@
-/* 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 <string>
-
-#include <QFile>
-#include <QDir>
-#include <QNetworkProxy>
-
-#include "error.h"
-#include "file-ops.h"
-#include "oct-env.h"
-#include "singleton-cleanup.h"
-
-#include "defaults.h"
-
-#include "resource-manager.h"
-
-resource_manager *resource_manager::instance = 0;
-
-resource_manager::resource_manager (void)
-  : settings (0), home_path (), first_run (false)
-{
-  do_reload_settings ();
-}
-
-resource_manager::~resource_manager (void)
-{
-  delete settings;
-}
-
-QString
-resource_manager::find_translator_file (QString language)
-{
-  // TODO: Quick hack to be able to test language files.
-  return QString ("../languages/%1.qm").arg (language);
-}
-
-bool
-resource_manager::instance_ok (void)
-{
-  bool retval = true;
-
-  if (! instance)
-    {
-      instance = new resource_manager ();
-
-      if (instance)
-        singleton_cleanup_list::add (cleanup_instance);
-    }
-
-  if (! instance)
-    {
-      ::error ("unable to create resource_manager object!");
-
-      retval = false;
-    }
-
-  return retval;
-}
-
-QSettings *
-resource_manager::do_get_settings (void)
-{
-  return settings;
-}
-
-QString
-resource_manager::do_get_home_path (void)
-{
-  return home_path;
-}
-
-static std::string
-default_qt_settings_file (void)
-{
-  std::string dsf = octave_env::getenv ("OCTAVE_DEFAULT_QT_SETTINGS");
-
-  if (dsf.empty ())
-    dsf = Voct_etc_dir + file_ops::dir_sep_str () + "default-qt-settings";
-
-  return dsf;
-}
-
-void
-resource_manager::do_reload_settings (void)
-{
-  QDesktopServices desktopServices;
-  home_path = desktopServices.storageLocation (QDesktopServices::HomeLocation);
-  QString settings_path = home_path + "/.config/octave/";
-  QString settings_file = settings_path + "qt-settings";
-
-  if (!QFile::exists (settings_file))
-   {
-     QDir("/").mkpath (settings_path);
-     QFile::copy (QString::fromStdString (default_qt_settings_file ()),
-                  settings_file);
-     first_run = true;
-   }
-  else
-     first_run = false;
-
-  do_set_settings (settings_file);
-}
-
-void
-resource_manager::do_set_settings (QString file)
-{
-  delete settings;
-  settings = new QSettings (file, QSettings::IniFormat);
-}
-
-bool
-resource_manager::do_is_first_run (void)
-{
-  return first_run;
-}
-
-void
-resource_manager::do_update_network_settings (void)
-{
-  QNetworkProxy::ProxyType proxyType = QNetworkProxy::NoProxy;
-
-  if (settings->value ("useProxyServer").toBool ())
-    {
-      QString proxyTypeString = settings->value ("proxyType").toString ();
-
-      if (proxyTypeString == "Socks5Proxy")
-        proxyType = QNetworkProxy::Socks5Proxy;
-      else if (proxyTypeString == "HttpProxy")
-        proxyType = QNetworkProxy::HttpProxy;
-    }
-
-  QNetworkProxy proxy;
-
-  proxy.setType (proxyType);
-  proxy.setHostName (settings->value ("proxyHostName").toString ());
-  proxy.setPort (settings->value ("proxyPort").toInt ());
-  proxy.setUser (settings->value ("proxyUserName").toString ());
-  proxy.setPassword (settings->value ("proxyPassword").toString ());
-
-  QNetworkProxy::setApplicationProxy (proxy);
-}
-
-const char*
-resource_manager::octave_keywords (void)
-{
-  return
-      ".nargin. "
-      "EDITOR "
-      "EXEC_PATH "
-      "F_DUPFD "
-      "F_GETFD "
-      "F_GETFL "
-      "F_SETFD "
-      "F_SETFL "
-      "I "
-      "IMAGE_PATH "
-      "Inf "
-      "J "
-      "NA "
-      "NaN "
-      "OCTAVE_HOME "
-      "OCTAVE_VERSION "
-      "O_APPEND "
-      "O_ASYNC "
-      "O_CREAT "
-      "O_EXCL "
-      "O_NONBLOCK "
-      "O_RDONLY "
-      "O_RDWR "
-      "O_SYNC "
-      "O_TRUNC "
-      "O_WRONLY "
-      "PAGER "
-      "PAGER_FLAGS "
-      "PS1 "
-      "PS2 "
-      "PS4 "
-      "P_tmpdir "
-      "SEEK_CUR "
-      "SEEK_END "
-      "SEEK_SET "
-      "SIG "
-      "S_ISBLK "
-      "S_ISCHR "
-      "S_ISDIR "
-      "S_ISFIFO "
-      "S_ISLNK "
-      "S_ISREG "
-      "S_ISSOCK "
-      "WCONTINUE "
-      "WCOREDUMP "
-      "WEXITSTATUS "
-      "WIFCONTINUED "
-      "WIFEXITED "
-      "WIFSIGNALED "
-      "WIFSTOPPED "
-      "WNOHANG "
-      "WSTOPSIG "
-      "WTERMSIG "
-      "WUNTRACED "
-      "__accumarray_max__ "
-      "__accumarray_min__ "
-      "__accumarray_sum__ "
-      "__accumdim_sum__ "
-      "__all_opts__ "
-      "__builtins__ "
-      "__calc_dimensions__ "
-      "__contourc__ "
-      "__current_scope__ "
-      "__delaunayn__ "
-      "__dispatch__ "
-      "__display_tokens__ "
-      "__dsearchn__ "
-      "__dump_symtab_info__ "
-      "__end__ "
-      "__error_text__ "
-      "__finish__ "
-      "__fltk_ginput__ "
-      "__fltk_print__ "
-      "__fltk_uigetfile__ "
-      "__ftp__ "
-      "__ftp_ascii__ "
-      "__ftp_binary__ "
-      "__ftp_close__ "
-      "__ftp_cwd__ "
-      "__ftp_delete__ "
-      "__ftp_dir__ "
-      "__ftp_mget__ "
-      "__ftp_mkdir__ "
-      "__ftp_mode__ "
-      "__ftp_mput__ "
-      "__ftp_pwd__ "
-      "__ftp_rename__ "
-      "__ftp_rmdir__ "
-      "__get__ "
-      "__glpk__ "
-      "__gnuplot_drawnow__ "
-      "__gnuplot_get_var__ "
-      "__gnuplot_ginput__ "
-      "__gnuplot_has_feature__ "
-      "__gnuplot_open_stream__ "
-      "__gnuplot_print__ "
-      "__gnuplot_version__ "
-      "__go_axes__ "
-      "__go_axes_init__ "
-      "__go_close_all__ "
-      "__go_delete__ "
-      "__go_draw_axes__ "
-      "__go_draw_figure__ "
-      "__go_execute_callback__ "
-      "__go_figure__ "
-      "__go_figure_handles__ "
-      "__go_handles__ "
-      "__go_hggroup__ "
-      "__go_image__ "
-      "__go_line__ "
-      "__go_patch__ "
-      "__go_surface__ "
-      "__go_text__ "
-      "__go_uimenu__ "
-      "__gud_mode__ "
-      "__image_pixel_size__ "
-      "__init_fltk__ "
-      "__isa_parent__ "
-      "__keywords__ "
-      "__lexer_debug_flag__ "
-      "__lin_interpn__ "
-      "__list_functions__ "
-      "__magick_finfo__ "
-      "__magick_format_list__ "
-      "__magick_read__ "
-      "__magick_write__ "
-      "__makeinfo__ "
-      "__marching_cube__ "
-      "__next_line_color__ "
-      "__next_line_style__ "
-      "__operators__ "
-      "__parent_classes__ "
-      "__parser_debug_flag__ "
-      "__pathorig__ "
-      "__pchip_deriv__ "
-      "__plt_get_axis_arg__ "
-      "__print_parse_opts__ "
-      "__qp__ "
-      "__request_drawnow__ "
-      "__sort_rows_idx__ "
-      "__strip_html_tags__ "
-      "__token_count__ "
-      "__varval__ "
-      "__version_info__ "
-      "__voronoi__ "
-      "__which__ "
-      "abs "
-      "accumarray "
-      "accumdim "
-      "acos "
-      "acosd "
-      "acosh "
-      "acot "
-      "acotd "
-      "acoth "
-      "acsc "
-      "acscd "
-      "acsch "
-      "add_input_event_hook "
-      "addlistener "
-      "addpath "
-      "addproperty "
-      "addtodate "
-      "airy "
-      "all "
-      "allchild "
-      "allow_noninteger_range_as_index "
-      "amd "
-      "ancestor "
-      "and "
-      "angle "
-      "anova "
-      "ans "
-      "any "
-      "arch_fit "
-      "arch_rnd "
-      "arch_test "
-      "area "
-      "arg "
-      "argnames "
-      "argv "
-      "arma_rnd "
-      "arrayfun "
-      "asctime "
-      "asec "
-      "asecd "
-      "asech "
-      "asin "
-      "asind "
-      "asinh "
-      "assert "
-      "assignin "
-      "atan "
-      "atan2 "
-      "atand "
-      "atanh "
-      "atexit "
-      "autocor "
-      "autocov "
-      "autoload "
-      "autoreg_matrix "
-      "autumn "
-      "available_graphics_toolkits "
-      "axes "
-      "axis "
-      "balance "
-      "bar "
-      "barh "
-      "bartlett "
-      "bartlett_test "
-      "base2dec "
-      "beep "
-      "beep_on_error "
-      "bessel "
-      "besselh "
-      "besseli "
-      "besselj "
-      "besselk "
-      "bessely "
-      "beta "
-      "betacdf "
-      "betai "
-      "betainc "
-      "betainv "
-      "betaln "
-      "betapdf "
-      "betarnd "
-      "bicgstab "
-      "bicubic "
-      "bin2dec "
-      "bincoeff "
-      "binocdf "
-      "binoinv "
-      "binopdf "
-      "binornd "
-      "bitand "
-      "bitcmp "
-      "bitget "
-      "bitmax "
-      "bitor "
-      "bitpack "
-      "bitset "
-      "bitshift "
-      "bitunpack "
-      "bitxor "
-      "blackman "
-      "blanks "
-      "blkdiag "
-      "blkmm "
-      "bone "
-      "box "
-      "break "
-      "brighten "
-      "bsxfun "
-      "bug_report "
-      "builtin "
-      "bunzip2 "
-      "bzip2 "
-      "calendar "
-      "canonicalize_file_name "
-      "cart2pol "
-      "cart2sph "
-      "case "
-      "cast "
-      "cat "
-      "catch "
-      "cauchy_cdf "
-      "cauchy_inv "
-      "cauchy_pdf "
-      "cauchy_rnd "
-      "caxis "
-      "cbrt "
-      "ccolamd "
-      "cd "
-      "ceil "
-      "cell "
-      "cell2mat "
-      "cell2struct "
-      "celldisp "
-      "cellfun "
-      "cellidx "
-      "cellindexmat "
-      "cellslices "
-      "cellstr "
-      "center "
-      "cgs "
-      "char "
-      "chdir "
-      "chi2cdf "
-      "chi2inv "
-      "chi2pdf "
-      "chi2rnd "
-      "chisquare_test_homogeneity "
-      "chisquare_test_independence "
-      "chol "
-      "chol2inv "
-      "choldelete "
-      "cholinsert "
-      "cholinv "
-      "cholshift "
-      "cholupdate "
-      "chop "
-      "circshift "
-      "cla "
-      "clabel "
-      "class "
-      "clc "
-      "clear "
-      "clf "
-      "clg "
-      "clock "
-      "cloglog "
-      "close "
-      "closereq "
-      "colamd "
-      "colloc "
-      "colon "
-      "colorbar "
-      "colormap "
-      "colperm "
-      "colstyle "
-      "columns "
-      "comet "
-      "comet3 "
-      "comma "
-      "command_line_path "
-      "common_size "
-      "commutation_matrix "
-      "compan "
-      "compare_versions "
-      "compass "
-      "complement "
-      "completion_append_char "
-      "completion_matches "
-      "complex "
-      "computer "
-      "cond "
-      "condest "
-      "confirm_recursive_rmdir "
-      "conj "
-      "continue "
-      "contour "
-      "contour3 "
-      "contourc "
-      "contourf "
-      "contrast "
-      "conv "
-      "conv2 "
-      "convhull "
-      "convhulln "
-      "convn "
-      "cool "
-      "copper "
-      "copyfile "
-      "cor "
-      "cor_test "
-      "corrcoef "
-      "cos "
-      "cosd "
-      "cosh "
-      "cot "
-      "cotd "
-      "coth "
-      "cov "
-      "cplxpair "
-      "cputime "
-      "cquad "
-      "crash_dumps_octave_core "
-      "create_set "
-      "cross "
-      "csc "
-      "cscd "
-      "csch "
-      "cstrcat "
-      "csvread "
-      "csvwrite "
-      "csymamd "
-      "ctime "
-      "ctranspose "
-      "cummax "
-      "cummin "
-      "cumprod "
-      "cumsum "
-      "cumtrapz "
-      "curl "
-      "cut "
-      "cylinder "
-      "daspect "
-      "daspk "
-      "daspk_options "
-      "dasrt "
-      "dasrt_options "
-      "dassl "
-      "dassl_options "
-      "date "
-      "datenum "
-      "datestr "
-      "datetick "
-      "datevec "
-      "dbclear "
-      "dbcont "
-      "dbdown "
-      "dblquad "
-      "dbnext "
-      "dbquit "
-      "dbstack "
-      "dbstatus "
-      "dbstep "
-      "dbstop "
-      "dbtype "
-      "dbup "
-      "dbwhere "
-      "deal "
-      "deblank "
-      "debug "
-      "debug_on_error "
-      "debug_on_interrupt "
-      "debug_on_warning "
-      "dec2base "
-      "dec2bin "
-      "dec2hex "
-      "deconv "
-      "default_save_options "
-      "del2 "
-      "delaunay "
-      "delaunay3 "
-      "delaunayn "
-      "delete "
-      "dellistener "
-      "demo "
-      "det "
-      "detrend "
-      "diag "
-      "diary "
-      "diff "
-      "diffpara "
-      "diffuse "
-      "dir "
-      "discrete_cdf "
-      "discrete_inv "
-      "discrete_pdf "
-      "discrete_rnd "
-      "disp "
-      "dispatch "
-      "display "
-      "divergence "
-      "dlmread "
-      "dlmwrite "
-      "dmperm "
-      "dmult "
-      "do "
-      "do_braindead_shortcircuit_evaluation "
-      "do_string_escapes "
-      "doc "
-      "doc_cache_file "
-      "dos "
-      "dot "
-      "double "
-      "drawnow "
-      "dsearch "
-      "dsearchn "
-      "dump_prefs "
-      "dup2 "
-      "duplication_matrix "
-      "durbinlevinson "
-      "e "
-      "echo "
-      "echo_executing_commands "
-      "edit "
-      "edit_history "
-      "eig "
-      "eigs "
-      "ellipsoid "
-      "else "
-      "elseif "
-      "empirical_cdf "
-      "empirical_inv "
-      "empirical_pdf "
-      "empirical_rnd "
-      "end "
-      "end_try_catch "
-      "end_unwind_protect "
-      "endfor "
-      "endfunction "
-      "endgrent "
-      "endif "
-      "endpwent "
-      "endswitch "
-      "endwhile "
-      "eomday "
-      "eps "
-      "eq "
-      "erf "
-      "erfc "
-      "erfcx "
-      "erfinv "
-      "errno "
-      "errno_list "
-      "error "
-      "error_text "
-      "errorbar "
-      "etime "
-      "etree "
-      "etreeplot "
-      "eval "
-      "evalin "
-      "example "
-      "exec "
-      "exist "
-      "exit "
-      "exp "
-      "expcdf "
-      "expinv "
-      "expm "
-      "expm1 "
-      "exppdf "
-      "exprnd "
-      "eye "
-      "ezcontour "
-      "ezcontourf "
-      "ezmesh "
-      "ezmeshc "
-      "ezplot "
-      "ezplot3 "
-      "ezpolar "
-      "ezsurf "
-      "ezsurfc "
-      "f_test_regression "
-      "factor "
-      "factorial "
-      "fail "
-      "false "
-      "fcdf "
-      "fclear "
-      "fclose "
-      "fcntl "
-      "fdisp "
-      "feather "
-      "feof "
-      "ferror "
-      "feval "
-      "fflush "
-      "fft "
-      "fft2 "
-      "fftconv "
-      "fftfilt "
-      "fftn "
-      "fftshift "
-      "fftw "
-      "fgetl "
-      "fgets "
-      "fieldnames "
-      "figure "
-      "file_in_loadpath "
-      "file_in_path "
-      "fileattrib "
-      "filemarker "
-      "fileparts "
-      "fileread "
-      "filesep "
-      "fill "
-      "filter "
-      "filter2 "
-      "find "
-      "find_dir_in_path "
-      "findall "
-      "findobj "
-      "findstr "
-      "finite "
-      "finv "
-      "fix "
-      "fixed_point_format "
-      "flag "
-      "flipdim "
-      "fliplr "
-      "flipud "
-      "floor "
-      "fminbnd "
-      "fminunc "
-      "fmod "
-      "fnmatch "
-      "fopen "
-      "for "
-      "fork "
-      "format "
-      "formula "
-      "fpdf "
-      "fplot "
-      "fprintf "
-      "fputs "
-      "fractdiff "
-      "fread "
-      "freport "
-      "freqz "
-      "freqz_plot "
-      "frewind "
-      "frnd "
-      "fscanf "
-      "fseek "
-      "fskipl "
-      "fsolve "
-      "fstat "
-      "ftell "
-      "full "
-      "fullfile "
-      "func2str "
-      "function "
-      "functions "
-      "fwrite "
-      "fzero "
-      "gamcdf "
-      "gaminv "
-      "gamma "
-      "gammai "
-      "gammainc "
-      "gammaln "
-      "gampdf "
-      "gamrnd "
-      "gca "
-      "gcbf "
-      "gcbo "
-      "gcd "
-      "gcf "
-      "ge "
-      "gen_doc_cache "
-      "genpath "
-      "genvarname "
-      "geocdf "
-      "geoinv "
-      "geopdf "
-      "geornd "
-      "get "
-      "get_first_help_sentence "
-      "get_help_text "
-      "get_help_text_from_file "
-      "getappdata "
-      "getegid "
-      "getenv "
-      "geteuid "
-      "getfield "
-      "getgid "
-      "getgrent "
-      "getgrgid "
-      "getgrnam "
-      "gethostname "
-      "getpgrp "
-      "getpid "
-      "getppid "
-      "getpwent "
-      "getpwnam "
-      "getpwuid "
-      "getrusage "
-      "getuid "
-      "ginput "
-      "givens "
-      "glob "
-      "global "
-      "glpk "
-      "glpkmex "
-      "gls "
-      "gmap40 "
-      "gmres "
-      "gmtime "
-      "gnuplot_binary "
-      "gplot "
-      "gradient "
-      "graphics_toolkit "
-      "gray "
-      "gray2ind "
-      "grid "
-      "griddata "
-      "griddata3 "
-      "griddatan "
-      "gt "
-      "gtext "
-      "gunzip "
-      "gzip "
-      "hadamard "
-      "hamming "
-      "hankel "
-      "hanning "
-      "help "
-      "hess "
-      "hex2dec "
-      "hex2num "
-      "hggroup "
-      "hidden "
-      "hilb "
-      "hist "
-      "histc "
-      "history "
-      "history_control "
-      "history_file "
-      "history_size "
-      "history_timestamp_format_string "
-      "hold "
-      "home "
-      "horzcat "
-      "hot "
-      "hotelling_test "
-      "hotelling_test_2 "
-      "housh "
-      "hsv "
-      "hsv2rgb "
-      "hurst "
-      "hygecdf "
-      "hygeinv "
-      "hygepdf "
-      "hygernd "
-      "hypot "
-      "i "
-      "idivide "
-      "if "
-      "ifelse "
-      "ifft "
-      "ifft2 "
-      "ifftn "
-      "ifftshift "
-      "ignore_function_time_stamp "
-      "imag "
-      "image "
-      "imagesc "
-      "imfinfo "
-      "imread "
-      "imshow "
-      "imwrite "
-      "ind2gray "
-      "ind2rgb "
-      "ind2sub "
-      "index "
-      "inf "
-      "inferiorto "
-      "info "
-      "info_file "
-      "info_program "
-      "inline "
-      "inpolygon "
-      "input "
-      "inputname "
-      "int16 "
-      "int2str "
-      "int32 "
-      "int64 "
-      "int8 "
-      "interp1 "
-      "interp1q "
-      "interp2 "
-      "interp3 "
-      "interpft "
-      "interpn "
-      "intersect "
-      "intmax "
-      "intmin "
-      "intwarning "
-      "inv "
-      "inverse "
-      "invhilb "
-      "ipermute "
-      "iqr "
-      "is_absolute_filename "
-      "is_duplicate_entry "
-      "is_global "
-      "is_leap_year "
-      "is_rooted_relative_filename "
-      "is_valid_file_id "
-      "isa "
-      "isalnum "
-      "isalpha "
-      "isappdata "
-      "isargout "
-      "isascii "
-      "isbool "
-      "iscell "
-      "iscellstr "
-      "ischar "
-      "iscntrl "
-      "iscolumn "
-      "iscommand "
-      "iscomplex "
-      "isdebugmode "
-      "isdefinite "
-      "isdeployed "
-      "isdigit "
-      "isdir "
-      "isempty "
-      "isequal "
-      "isequalwithequalnans "
-      "isfield "
-      "isfigure "
-      "isfinite "
-      "isfloat "
-      "isglobal "
-      "isgraph "
-      "ishandle "
-      "ishermitian "
-      "ishghandle "
-      "ishold "
-      "isieee "
-      "isindex "
-      "isinf "
-      "isinteger "
-      "iskeyword "
-      "isletter "
-      "islogical "
-      "islower "
-      "ismac "
-      "ismatrix "
-      "ismember "
-      "ismethod "
-      "isna "
-      "isnan "
-      "isnull "
-      "isnumeric "
-      "isobject "
-      "isocolors "
-      "isonormals "
-      "isosurface "
-      "ispc "
-      "isprime "
-      "isprint "
-      "isprop "
-      "ispunct "
-      "israwcommand "
-      "isreal "
-      "isrow "
-      "isscalar "
-      "issorted "
-      "isspace "
-      "issparse "
-      "issquare "
-      "isstr "
-      "isstrprop "
-      "isstruct "
-      "issymmetric "
-      "isunix "
-      "isupper "
-      "isvarname "
-      "isvector "
-      "isxdigit "
-      "j "
-      "jet "
-      "kbhit "
-      "kendall "
-      "keyboard "
-      "kill "
-      "kolmogorov_smirnov_cdf "
-      "kolmogorov_smirnov_test "
-      "kolmogorov_smirnov_test_2 "
-      "kron "
-      "kruskal_wallis_test "
-      "krylov "
-      "krylovb "
-      "kurtosis "
-      "laplace_cdf "
-      "laplace_inv "
-      "laplace_pdf "
-      "laplace_rnd "
-      "lasterr "
-      "lasterror "
-      "lastwarn "
-      "lchol "
-      "lcm "
-      "ldivide "
-      "le "
-      "legend "
-      "legendre "
-      "length "
-      "lgamma "
-      "license "
-      "lin2mu "
-      "line "
-      "link "
-      "linkprop "
-      "linspace "
-      "list "
-      "list_in_columns "
-      "list_primes "
-      "load "
-      "loadaudio "
-      "loadimage "
-      "loadobj "
-      "localtime "
-      "log "
-      "log10 "
-      "log1p "
-      "log2 "
-      "logical "
-      "logistic_cdf "
-      "logistic_inv "
-      "logistic_pdf "
-      "logistic_regression "
-      "logistic_rnd "
-      "logit "
-      "loglog "
-      "loglogerr "
-      "logm "
-      "logncdf "
-      "logninv "
-      "lognpdf "
-      "lognrnd "
-      "logspace "
-      "lookfor "
-      "lookup "
-      "lower "
-      "ls "
-      "ls_command "
-      "lsode "
-      "lsode_options "
-      "lsqnonneg "
-      "lstat "
-      "lt "
-      "lu "
-      "luinc "
-      "luupdate "
-      "magic "
-      "mahalanobis "
-      "make_absolute_filename "
-      "makeinfo_program "
-      "manova "
-      "mark_as_command "
-      "mark_as_rawcommand "
-      "mat2cell "
-      "mat2str "
-      "matlabroot "
-      "matrix_type "
-      "max "
-      "max_recursion_depth "
-      "mcnemar_test "
-      "md5sum "
-      "mean "
-      "meansq "
-      "median "
-      "menu "
-      "merge "
-      "mesh "
-      "meshc "
-      "meshgrid "
-      "meshz "
-      "methods "
-      "mex "
-      "mexext "
-      "mfilename "
-      "mgorth "
-      "min "
-      "minus "
-      "mislocked "
-      "missing_function_hook "
-      "mist "
-      "mkdir "
-      "mkfifo "
-      "mkoctfile "
-      "mkpp "
-      "mkstemp "
-      "mktime "
-      "mldivide "
-      "mlock "
-      "mod "
-      "mode "
-      "moment "
-      "more "
-      "most "
-      "movefile "
-      "mpoles "
-      "mpower "
-      "mrdivide "
-      "mtimes "
-      "mu2lin "
-      "munlock "
-      "namelengthmax "
-      "nan "
-      "nargchk "
-      "nargin "
-      "nargout "
-      "nargoutchk "
-      "native_float_format "
-      "nbincdf "
-      "nbininv "
-      "nbinpdf "
-      "nbinrnd "
-      "nchoosek "
-      "ndgrid "
-      "ndims "
-      "ne "
-      "newplot "
-      "news "
-      "nextpow2 "
-      "nfields "
-      "nnz "
-      "nonzeros "
-      "norm "
-      "normcdf "
-      "normest "
-      "norminv "
-      "normpdf "
-      "normrnd "
-      "not "
-      "now "
-      "nproc "
-      "nth_element "
-      "nthroot "
-      "ntsc2rgb "
-      "null "
-      "num2cell "
-      "num2hex "
-      "num2str "
-      "numel "
-      "nzmax "
-      "ocean "
-      "octave_config_info "
-      "octave_core_file_limit "
-      "octave_core_file_name "
-      "octave_core_file_options "
-      "octave_tmp_file_name "
-      "ols "
-      "onCleanup "
-      "onenormest "
-      "ones "
-      "optimget "
-      "optimize_subsasgn_calls "
-      "optimset "
-      "or "
-      "orderfields "
-      "orient "
-      "orth "
-      "otherwise "
-      "output_max_field_width "
-      "output_precision "
-      "pack "
-      "page_output_immediately "
-      "page_screen_output "
-      "paren "
-      "pareto "
-      "parseparams "
-      "pascal "
-      "patch "
-      "path "
-      "pathdef "
-      "pathsep "
-      "pause "
-      "pbaspect "
-      "pcg "
-      "pchip "
-      "pclose "
-      "pcolor "
-      "pcr "
-      "peaks "
-      "periodogram "
-      "perl "
-      "perms "
-      "permute "
-      "perror "
-      "persistent "
-      "pi "
-      "pie "
-      "pie3 "
-      "pink "
-      "pinv "
-      "pipe "
-      "pkg "
-      "planerot "
-      "playaudio "
-      "plot "
-      "plot3 "
-      "plotmatrix "
-      "plotyy "
-      "plus "
-      "poisscdf "
-      "poissinv "
-      "poisspdf "
-      "poissrnd "
-      "pol2cart "
-      "polar "
-      "poly "
-      "polyaffine "
-      "polyarea "
-      "polyder "
-      "polyderiv "
-      "polyfit "
-      "polygcd "
-      "polyint "
-      "polyout "
-      "polyreduce "
-      "polyval "
-      "polyvalm "
-      "popen "
-      "popen2 "
-      "postpad "
-      "pow2 "
-      "power "
-      "powerset "
-      "ppder "
-      "ppint "
-      "ppjumps "
-      "ppplot "
-      "ppval "
-      "pqpnonneg "
-      "prctile "
-      "prepad "
-      "primes "
-      "print "
-      "print_empty_dimensions "
-      "print_struct_array_contents "
-      "print_usage "
-      "printf "
-      "prism "
-      "probit "
-      "prod "
-      "program_invocation_name "
-      "program_name "
-      "prop_test_2 "
-      "putenv "
-      "puts "
-      "pwd "
-      "qp "
-      "qqplot "
-      "qr "
-      "qrdelete "
-      "qrinsert "
-      "qrshift "
-      "qrupdate "
-      "quad "
-      "quad_options "
-      "quadcc "
-      "quadgk "
-      "quadl "
-      "quadv "
-      "quantile "
-      "quit "
-      "quiver "
-      "quiver3 "
-      "qz "
-      "qzhess "
-      "rainbow "
-      "rand "
-      "rande "
-      "randg "
-      "randi "
-      "randn "
-      "randp "
-      "randperm "
-      "range "
-      "rank "
-      "ranks "
-      "rat "
-      "rats "
-      "rcond "
-      "rdivide "
-      "re_read_readline_init_file "
-      "read_readline_init_file "
-      "readdir "
-      "readlink "
-      "real "
-      "reallog "
-      "realmax "
-      "realmin "
-      "realpow "
-      "realsqrt "
-      "record "
-      "rectangle "
-      "rectint "
-      "refresh "
-      "refreshdata "
-      "regexp "
-      "regexpi "
-      "regexprep "
-      "regexptranslate "
-      "rehash "
-      "rem "
-      "remove_input_event_hook "
-      "rename "
-      "repelems "
-      "replot "
-      "repmat "
-      "reset "
-      "reshape "
-      "residue "
-      "resize "
-      "restoredefaultpath "
-      "rethrow "
-      "return "
-      "rgb2hsv "
-      "rgb2ind "
-      "rgb2ntsc "
-      "ribbon "
-      "rindex "
-      "rmappdata "
-      "rmdir "
-      "rmfield "
-      "rmpath "
-      "roots "
-      "rose "
-      "rosser "
-      "rot90 "
-      "rotdim "
-      "round "
-      "roundb "
-      "rows "
-      "rref "
-      "rsf2csf "
-      "run "
-      "run_count "
-      "run_history "
-      "run_test "
-      "rundemos "
-      "runlength "
-      "runtests "
-      "save "
-      "save_header_format_string "
-      "save_precision "
-      "saveas "
-      "saveaudio "
-      "saveimage "
-      "saveobj "
-      "savepath "
-      "saving_history "
-      "scanf "
-      "scatter "
-      "scatter3 "
-      "schur "
-      "sec "
-      "secd "
-      "sech "
-      "semicolon "
-      "semilogx "
-      "semilogxerr "
-      "semilogy "
-      "semilogyerr "
-      "set "
-      "setappdata "
-      "setaudio "
-      "setdiff "
-      "setenv "
-      "setfield "
-      "setgrent "
-      "setpwent "
-      "setstr "
-      "setxor "
-      "shading "
-      "shell_cmd "
-      "shg "
-      "shift "
-      "shiftdim "
-      "sighup_dumps_octave_core "
-      "sign "
-      "sign_test "
-      "sigterm_dumps_octave_core "
-      "silent_functions "
-      "sin "
-      "sinc "
-      "sind "
-      "sinetone "
-      "sinewave "
-      "single "
-      "sinh "
-      "size "
-      "size_equal "
-      "sizemax "
-      "sizeof "
-      "skewness "
-      "sleep "
-      "slice "
-      "sombrero "
-      "sort "
-      "sortrows "
-      "source "
-      "spalloc "
-      "sparse "
-      "sparse_auto_mutate "
-      "spatan2 "
-      "spaugment "
-      "spchol "
-      "spchol2inv "
-      "spcholinv "
-      "spconvert "
-      "spcumprod "
-      "spcumsum "
-      "spdet "
-      "spdiag "
-      "spdiags "
-      "spearman "
-      "spectral_adf "
-      "spectral_xdf "
-      "specular "
-      "speed "
-      "spencer "
-      "speye "
-      "spfind "
-      "spfun "
-      "sph2cart "
-      "sphcat "
-      "sphere "
-      "spinmap "
-      "spinv "
-      "spkron "
-      "splchol "
-      "spline "
-      "split "
-      "split_long_rows "
-      "splu "
-      "spmax "
-      "spmin "
-      "spones "
-      "spparms "
-      "spprod "
-      "spqr "
-      "sprand "
-      "sprandn "
-      "sprandsym "
-      "sprank "
-      "spring "
-      "sprintf "
-      "spstats "
-      "spsum "
-      "spsumsq "
-      "spvcat "
-      "spy "
-      "sqp "
-      "sqrt "
-      "sqrtm "
-      "squeeze "
-      "sscanf "
-      "stairs "
-      "stat "
-      "static "
-      "statistics "
-      "std "
-      "stderr "
-      "stdin "
-      "stdnormal_cdf "
-      "stdnormal_inv "
-      "stdnormal_pdf "
-      "stdnormal_rnd "
-      "stdout "
-      "stem "
-      "stem3 "
-      "stft "
-      "str2double "
-      "str2func "
-      "str2mat "
-      "str2num "
-      "strcat "
-      "strchr "
-      "strcmp "
-      "strcmpi "
-      "strerror "
-      "strfind "
-      "strftime "
-      "string_fill_char "
-      "strjust "
-      "strmatch "
-      "strncmp "
-      "strncmpi "
-      "strptime "
-      "strread "
-      "strrep "
-      "strsplit "
-      "strtok "
-      "strtrim "
-      "strtrunc "
-      "struct "
-      "struct2cell "
-      "struct_levels_to_print "
-      "structfun "
-      "strvcat "
-      "studentize "
-      "sub2ind "
-      "subplot "
-      "subsasgn "
-      "subsindex "
-      "subspace "
-      "subsref "
-      "substr "
-      "substruct "
-      "sum "
-      "summer "
-      "sumsq "
-      "superiorto "
-      "suppress_verbose_help_message "
-      "surf "
-      "surface "
-      "surfc "
-      "surfl "
-      "surfnorm "
-      "svd "
-      "svd_driver "
-      "svds "
-      "swapbytes "
-      "switch "
-      "syl "
-      "sylvester_matrix "
-      "symamd "
-      "symbfact "
-      "symlink "
-      "symrcm "
-      "symvar "
-      "synthesis "
-      "system "
-      "t_test "
-      "t_test_2 "
-      "t_test_regression "
-      "table "
-      "tan "
-      "tand "
-      "tanh "
-      "tar "
-      "tcdf "
-      "tempdir "
-      "tempname "
-      "terminal_size "
-      "test "
-      "test2 "
-      "test3 "
-      "text "
-      "textread "
-      "textscan "
-      "tic "
-      "tilde_expand "
-      "time "
-      "times "
-      "tinv "
-      "title "
-      "tmpfile "
-      "tmpnam "
-      "toascii "
-      "toc "
-      "toeplitz "
-      "tolower "
-      "toupper "
-      "tpdf "
-      "trace "
-      "transpose "
-      "trapz "
-      "treelayout "
-      "treeplot "
-      "tril "
-      "trimesh "
-      "triplequad "
-      "triplot "
-      "trisurf "
-      "triu "
-      "trnd "
-      "true "
-      "try "
-      "tsearch "
-      "tsearchn "
-      "type "
-      "typecast "
-      "typeinfo "
-      "u_test "
-      "uigetdir "
-      "uigetfile "
-      "uimenu "
-      "uint16 "
-      "uint32 "
-      "uint64 "
-      "uint8 "
-      "uiputfile "
-      "umask "
-      "uminus "
-      "uname "
-      "undo_string_escapes "
-      "unidcdf "
-      "unidinv "
-      "unidpdf "
-      "unidrnd "
-      "unifcdf "
-      "unifinv "
-      "unifpdf "
-      "unifrnd "
-      "unimplemented "
-      "union "
-      "unique "
-      "unix "
-      "unlink "
-      "unmark_command "
-      "unmark_rawcommand "
-      "unmkpp "
-      "unpack "
-      "untabify "
-      "untar "
-      "until "
-      "unwind_protect "
-      "unwind_protect_cleanup "
-      "unwrap "
-      "unzip "
-      "uplus "
-      "upper "
-      "urlread "
-      "urlwrite "
-      "usage "
-      "usleep "
-      "validatestring "
-      "values "
-      "vander "
-      "var "
-      "var_test "
-      "varargin "
-      "varargout "
-      "vec "
-      "vech "
-      "vectorize "
-      "ver "
-      "version "
-      "vertcat "
-      "view "
-      "voronoi "
-      "voronoin "
-      "waitforbuttonpress "
-      "waitpid "
-      "warning "
-      "warning_ids "
-      "warranty "
-      "wavread "
-      "wavwrite "
-      "wblcdf "
-      "wblinv "
-      "wblpdf "
-      "wblrnd "
-      "weekday "
-      "weibcdf "
-      "weibinv "
-      "weibpdf "
-      "weibrnd "
-      "welch_test "
-      "what "
-      "which "
-      "while "
-      "white "
-      "whitebg "
-      "who "
-      "whos "
-      "whos_line_format "
-      "wienrnd "
-      "wilcoxon_test "
-      "wilkinson "
-      "winter "
-      "xlabel "
-      "xlim "
-      "xor "
-      "yes_or_no "
-      "ylabel "
-      "ylim "
-      "yulewalker "
-      "z_test "
-      "z_test_2 "
-      "zeros "
-      "zip "
-      "zlabel "
-      "zlim ";
-  /*            "break case catch continue do else elseif end end_unwind_protect "
-              "endfor endfunction endif endswitch endwhile for function "
-              "global if otherwise persistent return switch try until "
-              "unwind_protect unwind_protect_cleanup while";
-  */
-}
--- a/gui/src/resource-manager.h	Sat Aug 18 16:23:39 2012 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,106 +0,0 @@
-/* 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/>.
- */
-
-#ifndef RESOURCEMANAGER_H
-#define RESOURCEMANAGER_H
-
-#include <QDesktopServices>
-#include <QIcon>
-#include <QMap>
-#include <QSettings>
-
-class resource_manager
-{
-protected:
-
-  resource_manager (void);
-
-public:
-
-  ~resource_manager ();
-
-  static QSettings *get_settings (void)
-  {
-    return instance_ok () ? instance->do_get_settings () : 0;
-  }
-
-  static QString get_home_path (void)
-  {
-    return instance_ok () ? instance->do_get_home_path () : QString ();
-  }
-
-  static void reload_settings (void)
-  {
-    if (instance_ok ())
-      instance->do_reload_settings ();
-  }
-
-  static void set_settings (QString file)
-  {
-    if (instance_ok ())
-      instance->do_set_settings (file);
-  }
-
-  static QString find_translator_file (QString language);
-
-  static void update_network_settings (void)
-  {
-    if (instance_ok ())
-      instance->do_update_network_settings ();
-  }
-
-  static bool is_first_run (void)
-  {
-    return instance_ok () ? instance->do_is_first_run () : true;
-  }
-
-  static const char *octave_keywords (void);
-
-private:
-
-  static resource_manager *instance;
-
-  static void cleanup_instance (void) { delete instance; instance = 0; }
-
-  // No copying!
-
-  resource_manager (const resource_manager&);
-
-  resource_manager& operator = (const resource_manager&);
-
-  static bool instance_ok (void);
-
-  QSettings *settings;
-
-  QString home_path;
-
-  bool first_run;
-
-  QSettings *do_get_settings (void);
-
-  QString do_get_home_path (void);
-
-  void do_reload_settings (void);
-
-  void do_set_settings (QString file);
-
-  void do_update_network_settings (void);
-
-  bool do_is_first_run (void);
-};
-
-#endif // RESOURCEMANAGER_H
--- a/gui/src/resource.qrc	Sat Aug 18 16:23:39 2012 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,40 +0,0 @@
-<RCC>
-    <qresource prefix="/actions">
-        <file>icons/artsbuilderexecute.png</file>
-        <file>icons/editcopy.png</file>
-        <file>icons/editcut.png</file>
-        <file>icons/editpaste.png</file>
-        <file>icons/filenew.png</file>
-        <file>icons/fileopen.png</file>
-        <file>icons/filesave.png</file>
-        <file>icons/redo.png</file>
-        <file>icons/search.png</file>
-        <file>icons/undo.png</file>
-        <file>icons/up.png</file>
-        <file>icons/configure.png</file>
-        <file>icons/filesaveas.png</file>
-        <file>icons/redled.png</file>
-        <file>icons/arrow_right.png</file>
-        <file>icons/bookmark.png</file>
-        <file>icons/question.png</file>
-        <file>icons/star.png</file>
-        <file>icons/stop.png</file>
-        <file>icons/zoom-in.png</file>
-        <file>icons/zoom-out.png</file>
-        <file>icons/find.png</file>
-        <file>icons/chat.png</file>
-        <file>icons/help_index.png</file>
-        <file>icons/jabber_protocol.png</file>
-        <file>icons/logo.png</file>
-        <file>icons/terminal.png</file>
-        <file>icons/bp_toggle.png</file>
-        <file>icons/bp_rm_all.png</file>
-        <file>icons/bp_prev.png</file>
-        <file>icons/bp_next.png</file>
-        <file>icons/db_cont.png</file>
-        <file>icons/db_step.png</file>
-        <file>icons/db_step_in.png</file>
-        <file>icons/db_step_out.png</file>
-        <file>icons/db_stop.png</file>
-    </qresource>
-</RCC>
--- a/gui/src/settings-dialog.cc	Sat Aug 18 16:23:39 2012 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,121 +0,0 @@
-/* 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 "resource-manager.h"
-#include "settings-dialog.h"
-#include "ui-settings-dialog.h"
-#include <QSettings>
-
-settings_dialog::settings_dialog (QWidget * parent):
-QDialog (parent), ui (new Ui::settings_dialog)
-{
-  ui->setupUi (this);
-
-  QSettings *settings = resource_manager::get_settings ();
-
-  // FIXME -- what should happen if settings is 0?
-
-  ui->useCustomFileEditor->setChecked (settings->value ("useCustomFileEditor").toBool ());
-  ui->customFileEditor->setText (settings->value ("customFileEditor").toString ());
-  ui->editor_showLineNumbers->setChecked (settings->value ("editor/showLineNumbers",true).toBool () );
-  ui->editor_highlightCurrentLine->setChecked (settings->value ("editor/highlightCurrentLine",true).toBool () );
-  ui->editor_codeCompletion->setChecked (settings->value ("editor/codeCompletion",true).toBool () );
-  ui->editor_fontName->setCurrentFont (QFont (settings->value ("editor/fontName","Courier").toString()) );
-  ui->editor_fontSize->setValue (settings->value ("editor/fontSize",10).toInt ());
-  ui->editor_longWindowTitle->setChecked (settings->value ("editor/longWindowTitle",true).toBool ());
-  ui->terminal_fontName->setCurrentFont (QFont (settings->value ("terminal/fontName","Courier").toString()) );
-  ui->terminal_fontSize->setValue (settings->value ("terminal/fontSize",10).toInt ());
-  ui->showFilenames->setChecked (settings->value ("showFilenames").toBool());
-  ui->showFileSize->setChecked (settings->value ("showFileSize").toBool());
-  ui->showFileType->setChecked (settings->value ("showFileType").toBool());
-  ui->showLastModified->setChecked (settings->value ("showLastModified").toBool());
-  ui->showHiddenFiles->setChecked (settings->value ("showHiddenFiles").toBool());
-  ui->useAlternatingRowColors->setChecked (settings->value ("useAlternatingRowColors").toBool());
-  ui->useProxyServer->setChecked (settings->value ("useProxyServer").toBool ());
-  ui->proxyHostName->setText (settings->value ("proxyHostName").toString ());
-  ui->terminal_cursorBlinking->setChecked (settings->value ("terminal/cursorBlinking").toBool ());
-
-  QString cursorType = settings->value ("terminal/cursorType").toString ();
-
-  QStringList items;
-  items << QString("0") << QString("1") << QString("2");
-  ui->terminal_cursorType->addItems(items);
-  ui->terminal_cursorType->setItemText (0, "IBeam Cursor");
-  ui->terminal_cursorType->setItemText (1, "Block Cursor");
-  ui->terminal_cursorType->setItemText (2, "Underline Cursor");
-
-  if (cursorType == "ibeam")
-    ui->terminal_cursorType->setCurrentIndex (0);
-  else if (cursorType == "block")
-    ui->terminal_cursorType->setCurrentIndex (1);
-  else if (cursorType == "underline")
-    ui->terminal_cursorType->setCurrentIndex (2);
-
-  int currentIndex = 0;
-  QString proxyTypeString = settings->value ("proxyType").toString ();
-  while ( (currentIndex < ui->proxyType->count ()) && (ui->proxyType->currentText () != proxyTypeString))
-    {
-      currentIndex++;
-      ui->proxyType->setCurrentIndex (currentIndex);
-    }
-
-  ui->proxyPort->setText (settings->value ("proxyPort").toString ());
-  ui->proxyUserName->setText (settings->value ("proxyUserName").toString ());
-  ui->proxyPassword->setText (settings->value ("proxyPassword").toString ());
-}
-
-settings_dialog::~settings_dialog ()
-{
-  QSettings *settings = resource_manager::get_settings ();
-
-  // FIXME -- what should happen if settings is 0?
-
-  settings->setValue ("useCustomFileEditor", ui->useCustomFileEditor->isChecked ());
-  settings->setValue ("customFileEditor", ui->customFileEditor->text ());
-  settings->setValue ("editor/showLineNumbers", ui->editor_showLineNumbers->isChecked ());
-  settings->setValue ("editor/highlightCurrentLine", ui->editor_highlightCurrentLine->isChecked ());
-  settings->setValue ("editor/codeCompletion", ui->editor_codeCompletion->isChecked ());
-  settings->setValue ("editor/fontName", ui->editor_fontName->currentFont().family());
-  settings->setValue ("editor/fontSize", ui->editor_fontSize->value());
-  settings->setValue ("editor/longWindowTitle", ui->editor_longWindowTitle->isChecked());
-  settings->setValue ("terminal/fontSize", ui->terminal_fontSize->value());
-  settings->setValue ("terminal/fontName", ui->terminal_fontName->currentFont().family());
-  settings->setValue ("showFilenames", ui->showFilenames->isChecked ());
-  settings->setValue ("showFileSize", ui->showFileSize->isChecked ());
-  settings->setValue ("showFileType", ui->showFileType->isChecked ());
-  settings->setValue ("showLastModified", ui->showLastModified->isChecked ());
-  settings->setValue ("showHiddenFiles", ui->showHiddenFiles->isChecked ());
-  settings->setValue ("useAlternatingRowColors", ui->useAlternatingRowColors->isChecked ());
-  settings->setValue ("useProxyServer", ui->useProxyServer->isChecked ());
-  settings->setValue ("proxyType", ui->proxyType->currentText ());
-  settings->setValue ("proxyHostName", ui->proxyHostName->text ());
-  settings->setValue ("proxyPort", ui->proxyPort->text ());
-  settings->setValue ("proxyUserName", ui->proxyUserName->text ());
-  settings->setValue ("proxyPassword", ui->proxyPassword->text ());
-  settings->setValue ("terminal/cursorBlinking", ui->terminal_cursorBlinking->isChecked ());
-
-  QString cursorType;
-  switch (ui->terminal_cursorType->currentIndex ())
-    {
-    case 0: cursorType = "ibeam"; break;
-    case 1: cursorType = "block"; break;
-    case 2: cursorType = "underline";  break;
-    }
-  settings->setValue ("terminal/cursorType", cursorType);
-  settings->sync ();
-  delete ui;
-}
--- a/gui/src/settings-dialog.h	Sat Aug 18 16:23:39 2012 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,39 +0,0 @@
-/* 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.
- *md5
-
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef SETTINGSDIALOG_H
-#define SETTINGSDIALOG_H
-
-#include <QDialog>
-
-namespace Ui
-{
-  class settings_dialog;
-}
-
-class settings_dialog:public QDialog
-{
-Q_OBJECT public:
-  explicit settings_dialog (QWidget * parent);
-  ~settings_dialog ();
-
-private:
-  Ui::settings_dialog * ui;
-};
-
-#endif // SETTINGSDIALOG_H
--- a/gui/src/settings-dialog.ui	Sat Aug 18 16:23:39 2012 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,719 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<ui version="4.0">
- <class>settings_dialog</class>
- <widget class="QDialog" name="settings_dialog">
-  <property name="windowModality">
-   <enum>Qt::ApplicationModal</enum>
-  </property>
-  <property name="geometry">
-   <rect>
-    <x>0</x>
-    <y>0</y>
-    <width>600</width>
-    <height>400</height>
-   </rect>
-  </property>
-  <property name="minimumSize">
-   <size>
-    <width>600</width>
-    <height>400</height>
-   </size>
-  </property>
-  <property name="maximumSize">
-   <size>
-    <width>600</width>
-    <height>400</height>
-   </size>
-  </property>
-  <property name="windowTitle">
-   <string>Settings</string>
-  </property>
-  <layout class="QVBoxLayout" name="verticalLayout_2">
-   <item>
-    <widget class="QTabWidget" name="tabWidget">
-     <property name="currentIndex">
-      <number>0</number>
-     </property>
-     <widget class="QWidget" name="tab">
-      <attribute name="title">
-       <string>Editor</string>
-      </attribute>
-      <layout class="QVBoxLayout" name="verticalLayout_6">
-       <item>
-        <layout class="QVBoxLayout" name="verticalLayout_5">
-         <item>
-          <layout class="QHBoxLayout" name="horizontalLayout_4">
-           <item>
-            <widget class="QLabel" name="label_8">
-             <property name="text">
-              <string>Font</string>
-             </property>
-            </widget>
-           </item>
-           <item>
-            <widget class="QFontComboBox" name="editor_fontName">
-             <property name="editable">
-              <bool>false</bool>
-             </property>
-             <property name="fontFilters">
-              <set>QFontComboBox::MonospacedFonts</set>
-             </property>
-            </widget>
-           </item>
-           <item>
-            <widget class="QLabel" name="label_9">
-             <property name="text">
-              <string>Font Size</string>
-             </property>
-            </widget>
-           </item>
-           <item>
-            <widget class="QSpinBox" name="editor_fontSize">
-             <property name="minimum">
-              <number>2</number>
-             </property>
-             <property name="maximum">
-              <number>96</number>
-             </property>
-             <property name="value">
-              <number>10</number>
-             </property>
-            </widget>
-           </item>
-           <item>
-            <spacer name="horizontalSpacer_4">
-             <property name="orientation">
-              <enum>Qt::Horizontal</enum>
-             </property>
-             <property name="sizeHint" stdset="0">
-              <size>
-               <width>40</width>
-               <height>20</height>
-              </size>
-             </property>
-            </spacer>
-           </item>
-          </layout>
-         </item>
-         <item>
-          <widget class="QCheckBox" name="editor_showLineNumbers">
-           <property name="enabled">
-            <bool>true</bool>
-           </property>
-           <property name="text">
-            <string>Show line numbers</string>
-           </property>
-           <property name="checked">
-            <bool>false</bool>
-           </property>
-          </widget>
-         </item>
-         <item>
-          <widget class="QCheckBox" name="editor_highlightCurrentLine">
-           <property name="enabled">
-            <bool>true</bool>
-           </property>
-           <property name="text">
-            <string>Highlight current line</string>
-           </property>
-           <property name="checked">
-            <bool>false</bool>
-           </property>
-          </widget>
-         </item>
-         <item>
-          <widget class="QCheckBox" name="editor_codeCompletion">
-           <property name="enabled">
-            <bool>true</bool>
-           </property>
-           <property name="text">
-            <string>Code completion</string>
-           </property>
-           <property name="checked">
-            <bool>false</bool>
-           </property>
-          </widget>
-         </item>
-         <item>
-          <widget class="QCheckBox" name="editor_longWindowTitle">
-           <property name="text">
-            <string>Show complete path in window title</string>
-           </property>
-          </widget>
-         </item>
-        </layout>
-       </item>
-       <item>
-        <spacer name="verticalSpacer">
-         <property name="orientation">
-          <enum>Qt::Vertical</enum>
-         </property>
-         <property name="sizeHint" stdset="0">
-          <size>
-           <width>20</width>
-           <height>40</height>
-          </size>
-         </property>
-        </spacer>
-       </item>
-       <item>
-        <layout class="QHBoxLayout" name="horizontalLayout">
-         <item>
-          <widget class="QCheckBox" name="useCustomFileEditor">
-           <property name="enabled">
-            <bool>true</bool>
-           </property>
-           <property name="text">
-            <string>Use custom file editor:</string>
-           </property>
-          </widget>
-         </item>
-         <item>
-          <widget class="QLineEdit" name="customFileEditor">
-           <property name="enabled">
-            <bool>false</bool>
-           </property>
-           <property name="text">
-            <string>emacs</string>
-           </property>
-          </widget>
-         </item>
-        </layout>
-       </item>
-      </layout>
-     </widget>
-     <widget class="QWidget" name="tab_5">
-      <attribute name="title">
-       <string>Terminal</string>
-      </attribute>
-      <layout class="QVBoxLayout" name="verticalLayout">
-       <item>
-        <layout class="QHBoxLayout" name="horizontalLayout_5">
-         <item>
-          <widget class="QLabel" name="label_11">
-           <property name="text">
-            <string>Font</string>
-           </property>
-          </widget>
-         </item>
-         <item>
-          <widget class="QFontComboBox" name="terminal_fontName">
-           <property name="editable">
-            <bool>false</bool>
-           </property>
-           <property name="fontFilters">
-            <set>QFontComboBox::MonospacedFonts</set>
-           </property>
-          </widget>
-         </item>
-         <item>
-          <widget class="QLabel" name="label_12">
-           <property name="text">
-            <string>Font Size</string>
-           </property>
-          </widget>
-         </item>
-         <item>
-          <widget class="QSpinBox" name="terminal_fontSize">
-           <property name="minimum">
-            <number>2</number>
-           </property>
-           <property name="maximum">
-            <number>96</number>
-           </property>
-           <property name="value">
-            <number>10</number>
-           </property>
-          </widget>
-         </item>
-         <item>
-          <spacer name="horizontalSpacer_5">
-           <property name="orientation">
-            <enum>Qt::Horizontal</enum>
-           </property>
-           <property name="sizeHint" stdset="0">
-            <size>
-             <width>40</width>
-             <height>20</height>
-            </size>
-           </property>
-          </spacer>
-         </item>
-        </layout>
-       </item>
-       <item>
-        <layout class="QHBoxLayout" name="horizontalLayout_3">
-         <item>
-          <widget class="QLabel" name="label">
-           <property name="text">
-            <string>Cursor type:</string>
-           </property>
-          </widget>
-         </item>
-         <item>
-          <widget class="QComboBox" name="terminal_cursorType"/>
-         </item>
-         <item>
-          <spacer name="horizontalSpacer">
-           <property name="orientation">
-            <enum>Qt::Horizontal</enum>
-           </property>
-           <property name="sizeHint" stdset="0">
-            <size>
-             <width>40</width>
-             <height>20</height>
-            </size>
-           </property>
-          </spacer>
-         </item>
-        </layout>
-       </item>
-       <item>
-        <layout class="QHBoxLayout" name="horizontalLayout_2">
-         <item>
-          <widget class="QCheckBox" name="terminal_cursorBlinking">
-           <property name="text">
-            <string>Cursor blinking</string>
-           </property>
-          </widget>
-         </item>
-         <item>
-          <spacer name="horizontalSpacer_2">
-           <property name="orientation">
-            <enum>Qt::Horizontal</enum>
-           </property>
-           <property name="sizeHint" stdset="0">
-            <size>
-             <width>40</width>
-             <height>20</height>
-            </size>
-           </property>
-          </spacer>
-         </item>
-        </layout>
-       </item>
-       <item>
-        <spacer name="verticalSpacer_3">
-         <property name="orientation">
-          <enum>Qt::Vertical</enum>
-         </property>
-         <property name="sizeHint" stdset="0">
-          <size>
-           <width>20</width>
-           <height>321</height>
-          </size>
-         </property>
-        </spacer>
-       </item>
-      </layout>
-     </widget>
-     <widget class="QWidget" name="tab_2">
-      <attribute name="title">
-       <string>File Browser</string>
-      </attribute>
-      <layout class="QVBoxLayout" name="verticalLayout_3">
-       <item>
-        <widget class="QCheckBox" name="showFilenames">
-         <property name="text">
-          <string>Show filenames</string>
-         </property>
-        </widget>
-       </item>
-       <item>
-        <widget class="QCheckBox" name="showFileSize">
-         <property name="text">
-          <string>Show file size</string>
-         </property>
-        </widget>
-       </item>
-       <item>
-        <widget class="QCheckBox" name="showFileType">
-         <property name="text">
-          <string>Show file type</string>
-         </property>
-        </widget>
-       </item>
-       <item>
-        <widget class="QCheckBox" name="showLastModified">
-         <property name="text">
-          <string>Show date of last modification</string>
-         </property>
-        </widget>
-       </item>
-       <item>
-        <widget class="QCheckBox" name="showHiddenFiles">
-         <property name="text">
-          <string>Show hidden files</string>
-         </property>
-        </widget>
-       </item>
-       <item>
-        <widget class="QCheckBox" name="useAlternatingRowColors">
-         <property name="text">
-          <string>Alternating row colors</string>
-         </property>
-        </widget>
-       </item>
-       <item>
-        <spacer name="verticalSpacer_2">
-         <property name="orientation">
-          <enum>Qt::Vertical</enum>
-         </property>
-         <property name="sizeHint" stdset="0">
-          <size>
-           <width>20</width>
-           <height>360</height>
-          </size>
-         </property>
-        </spacer>
-       </item>
-      </layout>
-     </widget>
-     <widget class="QWidget" name="tab_3">
-      <attribute name="title">
-       <string>Network</string>
-      </attribute>
-      <layout class="QVBoxLayout" name="verticalLayout_4">
-       <item>
-        <widget class="QCheckBox" name="useProxyServer">
-         <property name="text">
-          <string>Use proxy server</string>
-         </property>
-        </widget>
-       </item>
-       <item>
-        <layout class="QFormLayout" name="formLayout">
-         <item row="0" column="0">
-          <widget class="QLabel" name="label_3">
-           <property name="enabled">
-            <bool>false</bool>
-           </property>
-           <property name="text">
-            <string>Proxy Type:</string>
-           </property>
-          </widget>
-         </item>
-         <item row="0" column="1">
-          <widget class="QComboBox" name="proxyType">
-           <property name="enabled">
-            <bool>false</bool>
-           </property>
-           <item>
-            <property name="text">
-             <string>HttpProxy</string>
-            </property>
-           </item>
-           <item>
-            <property name="text">
-             <string>Socks5Proxy</string>
-            </property>
-           </item>
-          </widget>
-         </item>
-         <item row="1" column="0">
-          <widget class="QLabel" name="label_4">
-           <property name="enabled">
-            <bool>false</bool>
-           </property>
-           <property name="text">
-            <string>Hostname:</string>
-           </property>
-          </widget>
-         </item>
-         <item row="1" column="1">
-          <widget class="QLineEdit" name="proxyHostName">
-           <property name="enabled">
-            <bool>false</bool>
-           </property>
-          </widget>
-         </item>
-         <item row="2" column="0">
-          <widget class="QLabel" name="label_5">
-           <property name="enabled">
-            <bool>false</bool>
-           </property>
-           <property name="text">
-            <string>Port:</string>
-           </property>
-          </widget>
-         </item>
-         <item row="2" column="1">
-          <widget class="QLineEdit" name="proxyPort">
-           <property name="enabled">
-            <bool>false</bool>
-           </property>
-          </widget>
-         </item>
-         <item row="3" column="0">
-          <widget class="QLabel" name="label_6">
-           <property name="enabled">
-            <bool>false</bool>
-           </property>
-           <property name="text">
-            <string>Username:</string>
-           </property>
-          </widget>
-         </item>
-         <item row="3" column="1">
-          <widget class="QLineEdit" name="proxyUserName">
-           <property name="enabled">
-            <bool>false</bool>
-           </property>
-          </widget>
-         </item>
-         <item row="4" column="0">
-          <widget class="QLabel" name="label_7">
-           <property name="enabled">
-            <bool>false</bool>
-           </property>
-           <property name="text">
-            <string>Password:</string>
-           </property>
-          </widget>
-         </item>
-         <item row="4" column="1">
-          <widget class="QLineEdit" name="proxyPassword">
-           <property name="enabled">
-            <bool>false</bool>
-           </property>
-           <property name="echoMode">
-            <enum>QLineEdit::Password</enum>
-           </property>
-          </widget>
-         </item>
-        </layout>
-       </item>
-      </layout>
-     </widget>
-    </widget>
-   </item>
-  </layout>
- </widget>
- <resources/>
- <connections>
-  <connection>
-   <sender>useProxyServer</sender>
-   <signal>toggled(bool)</signal>
-   <receiver>label_4</receiver>
-   <slot>setEnabled(bool)</slot>
-   <hints>
-    <hint type="sourcelabel">
-     <x>249</x>
-     <y>59</y>
-    </hint>
-    <hint type="destinationlabel">
-     <x>69</x>
-     <y>122</y>
-    </hint>
-   </hints>
-  </connection>
-  <connection>
-   <sender>useProxyServer</sender>
-   <signal>toggled(bool)</signal>
-   <receiver>label_3</receiver>
-   <slot>setEnabled(bool)</slot>
-   <hints>
-    <hint type="sourcelabel">
-     <x>249</x>
-     <y>59</y>
-    </hint>
-    <hint type="destinationlabel">
-     <x>59</x>
-     <y>91</y>
-    </hint>
-   </hints>
-  </connection>
-  <connection>
-   <sender>useProxyServer</sender>
-   <signal>toggled(bool)</signal>
-   <receiver>label_5</receiver>
-   <slot>setEnabled(bool)</slot>
-   <hints>
-    <hint type="sourcelabel">
-     <x>249</x>
-     <y>59</y>
-    </hint>
-    <hint type="destinationlabel">
-     <x>44</x>
-     <y>152</y>
-    </hint>
-   </hints>
-  </connection>
-  <connection>
-   <sender>useProxyServer</sender>
-   <signal>toggled(bool)</signal>
-   <receiver>proxyType</receiver>
-   <slot>setEnabled(bool)</slot>
-   <hints>
-    <hint type="sourcelabel">
-     <x>249</x>
-     <y>59</y>
-    </hint>
-    <hint type="destinationlabel">
-     <x>291</x>
-     <y>91</y>
-    </hint>
-   </hints>
-  </connection>
-  <connection>
-   <sender>useProxyServer</sender>
-   <signal>toggled(bool)</signal>
-   <receiver>proxyHostName</receiver>
-   <slot>setEnabled(bool)</slot>
-   <hints>
-    <hint type="sourcelabel">
-     <x>249</x>
-     <y>59</y>
-    </hint>
-    <hint type="destinationlabel">
-     <x>291</x>
-     <y>124</y>
-    </hint>
-   </hints>
-  </connection>
-  <connection>
-   <sender>useProxyServer</sender>
-   <signal>toggled(bool)</signal>
-   <receiver>proxyPort</receiver>
-   <slot>setEnabled(bool)</slot>
-   <hints>
-    <hint type="sourcelabel">
-     <x>249</x>
-     <y>59</y>
-    </hint>
-    <hint type="destinationlabel">
-     <x>364</x>
-     <y>154</y>
-    </hint>
-   </hints>
-  </connection>
-  <connection>
-   <sender>useCustomFileEditor</sender>
-   <signal>toggled(bool)</signal>
-   <receiver>customFileEditor</receiver>
-   <slot>setEnabled(bool)</slot>
-   <hints>
-    <hint type="sourcelabel">
-     <x>111</x>
-     <y>62</y>
-    </hint>
-    <hint type="destinationlabel">
-     <x>343</x>
-     <y>63</y>
-    </hint>
-   </hints>
-  </connection>
-  <connection>
-   <sender>useProxyServer</sender>
-   <signal>toggled(bool)</signal>
-   <receiver>label_7</receiver>
-   <slot>setEnabled(bool)</slot>
-   <hints>
-    <hint type="sourcelabel">
-     <x>249</x>
-     <y>59</y>
-    </hint>
-    <hint type="destinationlabel">
-     <x>67</x>
-     <y>212</y>
-    </hint>
-   </hints>
-  </connection>
-  <connection>
-   <sender>editor_showLineNumbers</sender>
-   <signal>toggled(bool)</signal>
-   <receiver>editor_showLineNumbers</receiver>
-   <slot>setEnabled(bool)</slot>
-   <hints>
-    <hint type="sourcelabel">
-     <x>249</x>
-     <y>87</y>
-    </hint>
-    <hint type="destinationlabel">
-     <x>249</x>
-     <y>87</y>
-    </hint>
-   </hints>
-  </connection>
-  <connection>
-   <sender>editor_highlightCurrentLine</sender>
-   <signal>toggled(bool)</signal>
-   <receiver>editor_highlightCurrentLine</receiver>
-   <slot>setEnabled(bool)</slot>
-   <hints>
-    <hint type="sourcelabel">
-     <x>249</x>
-     <y>112</y>
-    </hint>
-    <hint type="destinationlabel">
-     <x>249</x>
-     <y>112</y>
-    </hint>
-   </hints>
-  </connection>
-  <connection>
-   <sender>useProxyServer</sender>
-   <signal>toggled(bool)</signal>
-   <receiver>proxyUserName</receiver>
-   <slot>setEnabled(bool)</slot>
-   <hints>
-    <hint type="sourcelabel">
-     <x>249</x>
-     <y>59</y>
-    </hint>
-    <hint type="destinationlabel">
-     <x>364</x>
-     <y>184</y>
-    </hint>
-   </hints>
-  </connection>
-  <connection>
-   <sender>useProxyServer</sender>
-   <signal>toggled(bool)</signal>
-   <receiver>proxyPassword</receiver>
-   <slot>setEnabled(bool)</slot>
-   <hints>
-    <hint type="sourcelabel">
-     <x>249</x>
-     <y>59</y>
-    </hint>
-    <hint type="destinationlabel">
-     <x>364</x>
-     <y>214</y>
-    </hint>
-   </hints>
-  </connection>
-  <connection>
-   <sender>useProxyServer</sender>
-   <signal>toggled(bool)</signal>
-   <receiver>label_6</receiver>
-   <slot>setEnabled(bool)</slot>
-   <hints>
-    <hint type="sourcelabel">
-     <x>249</x>
-     <y>59</y>
-    </hint>
-    <hint type="destinationlabel">
-     <x>68</x>
-     <y>182</y>
-    </hint>
-   </hints>
-  </connection>
-  <connection>
-   <sender>editor_codeCompletion</sender>
-   <signal>toggled(bool)</signal>
-   <receiver>editor_codeCompletion</receiver>
-   <slot>setEnabled(bool)</slot>
-   <hints>
-    <hint type="sourcelabel">
-     <x>249</x>
-     <y>137</y>
-    </hint>
-    <hint type="destinationlabel">
-     <x>249</x>
-     <y>137</y>
-    </hint>
-   </hints>
-  </connection>
- </connections>
-</ui>
--- a/gui/src/src.pro	Sat Aug 18 16:23:39 2012 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,139 +0,0 @@
-# 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/>.
-
-# Basic settings:
-QT                  += core gui webkit network	    # Qt modules
-TEMPLATE            = app                           # Build as application
-TARGET              = octave-gui                    # Name of the target binary
-
-DESTDIR             = ../bin                           # Destination of the output
-
-TRANSLATIONS        += languages/generic.ts \
-                       languages/de-de.ts \
-                       languages/pt-br.ts \
-                       languages/es-es.ts \
-                       languages/ru-ru.ts \
-                       languages/uk-ua.ts           # Available translations
-
-win32-msvc*: include(msvc.pri)
-
-LIBS                += -lreadline -lqscintilla2  \
-                       -L../qterminal/libqterminal/$$LIBDIR_SUFFIX -lqterminal -lm \
-                       -L../../libcruft/.libs -lcruft \
-                       -L../../liboctave/.libs -loctave \
-                       -L../../src/.libs -loctinterp
-
-mac {
-    CONFIG -= app_bundle
-}
-
-# Includepaths and libraries to link against:
-INCLUDEPATH         += . \
-                       octave-adapter \
-                       m-editor \
-                       qtinfo \
-                       ../qterminal/libqterminal \
-                       /usr/include/qt4 \
-                       ../.. \
-                       ../../src \
-                       ../../src/interpfcn \
-                       ../../src/interp-core \
-                       ../../src/octave-value \
-                       ../../src/parse-tree \
-                       ../../src/operators \
-                       ../../liboctave \
-                       ../../libcruft/misc
-
-#QMAKE_LIBDIR        += $$system(octave-config -p OCTLIBDIR)
-#unix {
-#    QMAKE_RPATHDIR += $$system(octave-config -p OCTLIBDIR)
-#}
-
-mac {
-    LFLAGS += -L/opt/local/lib
-}
-
-unix {
-    LIBS += -lutil
-}
-
-win32-g++ {
-    QMAKE_LFLAGS += --enable-auto-import
-}
-
-win32-msvc* {
-    DEFINES += QSCINTILLA_DLL
-    QMAKE_CXXFLAGS += -wd4244
-}
-
-QMAKE_LFLAGS        += $$LFLAGS
-QMAKE_CXXFLAGS      += $$INCFLAGS
-
-# Files associated with the project:
-SOURCES +=\
-    octave-adapter/octave-link.cc \
-    octave-adapter/octave-main-thread.cc \
-    m-editor/lexer-octave-gui.cc \
-    m-editor/file-editor.cc \
-    m-editor/file-editor-tab.cc \
-    m-editor/find-dialog.cc \
-    qtinfo/parser.cc \
-    qtinfo/webinfo.cc \
-    main-window.cc \
-    workspace-view.cc \
-    history-dockwidget.cc \
-    files-dockwidget.cc \
-    settings-dialog.cc \
-    octave-gui.cc \
-    resource-manager.cc \
-    welcome-wizard.cc \
-    workspace-model.cc \
-    terminal-dockwidget.cc \
-    octave-qt-event-listener.cc \
-    documentation-dockwidget.cc
-
-HEADERS += \
-    octave-adapter/octave-link.h \
-    octave-adapter/octave-main-thread.h \
-    octave-adapter/octave-event.h \
-    octave-adapter/octave-event-observer.h \
-    octave-adapter/octave-event-listener.h \
-    m-editor/lexer-octave-gui.h \
-    m-editor/file-editor.h \
-    m-editor/file-editor-interface.h \
-    m-editor/file-editor-tab.h \
-    m-editor/find-dialog.h \
-    qtinfo/parser.h \
-    qtinfo/webinfo.h \
-    symbol-information.h \
-    main-window.h \
-    workspace-view.h \
-    history-dockwidget.h \
-    files-dockwidget.h \
-    settings-dialog.h \
-    resource-manager.h \
-    welcome-wizard.h \
-    workspace-model.h \
-    terminal-dockwidget.h \
-    octave-qt-event-listener.h \
-    documentation-dockwidget.h
-
-FORMS += \
-    settings-dialog.ui \
-    welcome-wizard.ui
-
-RESOURCES += \
-    resource.qrc
--- a/gui/src/symbol-information.cc	Sat Aug 18 16:23:39 2012 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,100 +0,0 @@
-/* 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 <QString>
-
-#include "ov.h"
-#include "symtab.h"
-
-#include "symbol-information.h"
-
-bool
-symbol_information::from_symbol_record
-  (const symbol_table::symbol_record& symbol_record)
-{
-  if (symbol_record.is_local () && !symbol_record.is_global () && !symbol_record.is_hidden ())
-    _scope = local;
-  else if (symbol_record.is_global ())
-    _scope = global;
-  else if (symbol_record.is_persistent ())
-    _scope = persistent;
-  else if (symbol_record.is_hidden ())
-    _scope = hidden;
-
-  _symbol = QString (symbol_record.name ().c_str ());
-  _type   = QString (symbol_record.varval ().type_name ().c_str ());
-  octave_value ov = symbol_record.varval ();
-
-  // In case we have really large matrices or strings, cut them down
-  // for performance reasons.
-  QString short_value_string;
-  bool use_short_value_string = false;
-  if (ov.is_matrix_type () || ov.is_cell ())
-    {
-      if (ov.rows () * ov.columns () > 10)
-        {
-          use_short_value_string = true;
-          short_value_string
-            = QString ("%1x%2 items").arg (ov.rows ()).arg (ov.columns ());
-        }
-    }
-  else if (ov.is_string ())
-    {
-      if (ov.string_value ().length () > 40)
-        {
-          use_short_value_string = true;
-          short_value_string
-            = QString::fromStdString (ov.string_value ().substr (0, 40));
-        }
-    }
-
-  if (use_short_value_string)
-    {
-      _value = short_value_string;
-    }
-  else
-    {
-      std::stringstream buffer;
-      ov.print (buffer, true);
-      _value  = QString::fromStdString (buffer.str ());
-    }
-  _value.replace("\n", " ");
-
-  if (ov.is_string ())
-    _dimension = QString ("%1").arg (ov.string_value ().length ());
-  else if (ov.is_range ())
-    _dimension =  QString ("%1 : %2 : %3").arg (ov.range_value ().base ())
-      .arg (ov.range_value ().inc ())
-      .arg (ov.range_value ().limit ());
-  else if (ov.is_matrix_type () || ov.is_cell ())
-    _dimension = QString ("%1x%2").arg (ov.rows ())
-      .arg (ov.columns ());
-  else if (ov.is_function_handle ())
-    // See code for func2str for a possible solution
-    _dimension = QString ("func handle");
-  else if (ov.is_inline_function ())
-    // See code for formula for a possible solution
-    _dimension = QString ("inline func");
-  else
-    _dimension = "1";
-
-  return true;
-}
--- a/gui/src/symbol-information.h	Sat Aug 18 16:23:39 2012 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,86 +0,0 @@
-/* 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/>.
- */
-
-#ifndef SYMBOLINFORMATION_H
-#define SYMBOLINFORMATION_H
-
-// FIXME -- we should not be including config.h in header files.
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include <QString>
-#include <QHash>
-
-#include <sstream>
-
-#include "symtab.h"
-
-/**
-  * \struct symbol_information
-  * \brief Meta-information over a symbol-table entry.
-  * \author Jacob Dawid
-  * This struct is used to store meta information over a symbol entry.
-  * It reduces memory consumption, since it only stores relevant data
-  * about a symbol-table entry that will be used in the model for the
-  * graphical user interface.
-  */
-struct symbol_information
-{
-  enum Scope
-  {
-    local       = 0,
-    global      = 1,
-    persistent  = 2,
-    hidden      = 3
-  };
-
-  QString _symbol;
-  QString _type;
-  QString _value;
-  QString _dimension;
-  Scope   _scope;
-
-  /** Hashes the symbol information for quickly comparing it. */
-  int
-  hash () const
-  {
-    return qHash (_symbol) + qHash (_type) + qHash (_value)
-      + qHash (_dimension) + (int)_scope;
-  }
-
-  /** Compares two symbol information objects. */
-  bool
-  equals (const symbol_information& other) const
-  {
-    if (hash () == other.hash ())
-      {
-        return _symbol == other._symbol
-            && _type   == other._type
-            && _value  == other._value
-            && _scope  == other._scope
-            && _dimension == other._dimension;
-      }
-  }
-
-  /** Extracts meta information from a given symbol record. */
-  bool
-  from_symbol_record (const symbol_table::symbol_record& symbol_record);
-};
-
-#endif // SYMBOLINFORMATION_H
--- a/gui/src/terminal-dockwidget.cc	Sat Aug 18 16:23:39 2012 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,28 +0,0 @@
-/* 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 "terminal-dockwidget.h"
-
-terminal_dock_widget::terminal_dock_widget (QTerminal *terminal, QWidget *parent)
-  : QDockWidget (parent)
-{
-  setObjectName ("TerminalDockWidget");
-  setWindowTitle (tr ("Command Window"));
-  setWidget (terminal);
-
-  connect (this, SIGNAL (visibilityChanged (bool)), this, SLOT (handle_visibility_changed (bool)));
-}
--- a/gui/src/terminal-dockwidget.h	Sat Aug 18 16:23:39 2012 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,41 +0,0 @@
-/* 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/>.
- */
-
-#ifndef TERMINALDOCKWIDGET_H
-#define TERMINALDOCKWIDGET_H
-
-#include <QDockWidget>
-#include "QTerminal.h"
-
-class terminal_dock_widget : public QDockWidget
-{
-  Q_OBJECT
-public:
-  terminal_dock_widget (QTerminal *terminal, QWidget *parent = 0);
-
-signals:
-    void active_changed (bool active);
-
-public slots:
-    void handle_visibility_changed (bool visible)
-    {
-      if (visible)
-        emit active_changed (true);
-    }
-};
-
-#endif // TERMINALDOCKWIDGET_H
--- a/gui/src/welcome-wizard.cc	Sat Aug 18 16:23:39 2012 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,53 +0,0 @@
-/* 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 "welcome-wizard.h"
-#include "ui-welcome-wizard.h"
-
-welcome_wizard::welcome_wizard (QWidget *parent) :
-  QDialog (parent),
-  _ui (new Ui::welcome_wizard)
-{
-  _ui->setupUi (this);
-  connect (_ui->nextButton1, SIGNAL (clicked ()), this, SLOT (next ()));
-  connect (_ui->nextButton2, SIGNAL (clicked ()), this, SLOT (next ()));
-  connect (_ui->nextButton3, SIGNAL (clicked ()), this, SLOT (next ()));
-  connect (_ui->nextButton4, SIGNAL (clicked ()), this, SLOT (next ()));
-
-  connect (_ui->previousButton2, SIGNAL (clicked ()), this, SLOT (previous ()));
-  connect (_ui->previousButton3, SIGNAL (clicked ()), this, SLOT (previous ()));
-  connect (_ui->previousButton4, SIGNAL (clicked ()), this, SLOT (previous ()));
-  connect (_ui->previousButton5, SIGNAL (clicked ()), this, SLOT (previous ()));
-}
-
-welcome_wizard::~welcome_wizard()
-{
-  delete _ui;
-}
-
-void
-welcome_wizard::next ()
-{
-  _ui->stackedWidget->setCurrentIndex (_ui->stackedWidget->currentIndex () + 1);
-}
-
-void
-welcome_wizard::previous ()
-{
-  _ui->stackedWidget->setCurrentIndex (_ui->stackedWidget->currentIndex () - 1);
-}
-
--- a/gui/src/welcome-wizard.h	Sat Aug 18 16:23:39 2012 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,43 +0,0 @@
-/* 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/>.
- */
-
-#ifndef WELCOMEWIZARD_H
-#define WELCOMEWIZARD_H
-
-#include <QDialog>
-
-namespace Ui {
-    class welcome_wizard;
-}
-
-class welcome_wizard : public QDialog
-{
-  Q_OBJECT
-
-public:
-  explicit welcome_wizard (QWidget *parent = 0);
-  ~welcome_wizard ();
-
-public slots:
-  void next ();
-  void previous ();
-
-private:
-  Ui::welcome_wizard *_ui;
-};
-
-#endif // WELCOMEWIZARD_H
--- a/gui/src/welcome-wizard.ui	Sat Aug 18 16:23:39 2012 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,354 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<ui version="4.0">
- <class>welcome_wizard</class>
- <widget class="QDialog" name="welcome_wizard">
-  <property name="geometry">
-   <rect>
-    <x>0</x>
-    <y>0</y>
-    <width>647</width>
-    <height>400</height>
-   </rect>
-  </property>
-  <property name="minimumSize">
-   <size>
-    <width>647</width>
-    <height>400</height>
-   </size>
-  </property>
-  <property name="maximumSize">
-   <size>
-    <width>647</width>
-    <height>400</height>
-   </size>
-  </property>
-  <property name="windowTitle">
-   <string>Welcome to GNU Octave</string>
-  </property>
-  <layout class="QVBoxLayout" name="verticalLayout_2">
-   <item>
-    <widget class="QStackedWidget" name="stackedWidget">
-     <property name="currentIndex">
-      <number>4</number>
-     </property>
-     <widget class="QWidget" name="page">
-      <layout class="QVBoxLayout" name="verticalLayout">
-       <item>
-        <widget class="QLabel" name="label">
-         <property name="text">
-          <string>It appears that you have launched Octave GUI for the first time on this computer, since no configuration file could be found at '~/.octave-gui'. This wizard will guide you through the essential settings you should make before you can start using Octave GUI. If you want to transfer your settings you have previously made just close this dialog and copy over the settings file to your home folder. The presence of that file will automatically be detected and will skip this wizard. IMPORTANT: This wizard is not fully functional yet. Just click your way to the end and it will create a standard settings file.</string>
-         </property>
-         <property name="alignment">
-          <set>Qt::AlignJustify|Qt::AlignVCenter</set>
-         </property>
-         <property name="wordWrap">
-          <bool>true</bool>
-         </property>
-        </widget>
-       </item>
-       <item>
-        <spacer name="verticalSpacer">
-         <property name="orientation">
-          <enum>Qt::Vertical</enum>
-         </property>
-         <property name="sizeHint" stdset="0">
-          <size>
-           <width>20</width>
-           <height>218</height>
-          </size>
-         </property>
-        </spacer>
-       </item>
-       <item>
-        <layout class="QHBoxLayout" name="horizontalLayout_2">
-         <item>
-          <spacer name="horizontalSpacer">
-           <property name="orientation">
-            <enum>Qt::Horizontal</enum>
-           </property>
-           <property name="sizeHint" stdset="0">
-            <size>
-             <width>40</width>
-             <height>20</height>
-            </size>
-           </property>
-          </spacer>
-         </item>
-         <item>
-          <widget class="QPushButton" name="nextButton1">
-           <property name="text">
-            <string>Next</string>
-           </property>
-          </widget>
-         </item>
-        </layout>
-       </item>
-      </layout>
-     </widget>
-     <widget class="QWidget" name="page_2">
-      <layout class="QVBoxLayout" name="verticalLayout_4">
-       <item>
-        <layout class="QVBoxLayout" name="verticalLayout_3">
-         <item>
-          <spacer name="verticalSpacer_2">
-           <property name="orientation">
-            <enum>Qt::Vertical</enum>
-           </property>
-           <property name="sizeHint" stdset="0">
-            <size>
-             <width>20</width>
-             <height>40</height>
-            </size>
-           </property>
-          </spacer>
-         </item>
-         <item>
-          <layout class="QHBoxLayout" name="horizontalLayout">
-           <item>
-            <widget class="QPushButton" name="previousButton2">
-             <property name="text">
-              <string>Previous</string>
-             </property>
-            </widget>
-           </item>
-           <item>
-            <spacer name="horizontalSpacer_2">
-             <property name="orientation">
-              <enum>Qt::Horizontal</enum>
-             </property>
-             <property name="sizeHint" stdset="0">
-              <size>
-               <width>40</width>
-               <height>20</height>
-              </size>
-             </property>
-            </spacer>
-           </item>
-           <item>
-            <widget class="QPushButton" name="nextButton2">
-             <property name="text">
-              <string>Next</string>
-             </property>
-            </widget>
-           </item>
-          </layout>
-         </item>
-        </layout>
-       </item>
-      </layout>
-     </widget>
-     <widget class="QWidget" name="page_3">
-      <layout class="QHBoxLayout" name="horizontalLayout_4">
-       <item>
-        <layout class="QVBoxLayout" name="verticalLayout_5">
-         <item>
-          <spacer name="verticalSpacer_3">
-           <property name="orientation">
-            <enum>Qt::Vertical</enum>
-           </property>
-           <property name="sizeHint" stdset="0">
-            <size>
-             <width>20</width>
-             <height>40</height>
-            </size>
-           </property>
-          </spacer>
-         </item>
-         <item>
-          <layout class="QHBoxLayout" name="horizontalLayout_3">
-           <item>
-            <widget class="QPushButton" name="previousButton3">
-             <property name="text">
-              <string>Previous</string>
-             </property>
-            </widget>
-           </item>
-           <item>
-            <spacer name="horizontalSpacer_3">
-             <property name="orientation">
-              <enum>Qt::Horizontal</enum>
-             </property>
-             <property name="sizeHint" stdset="0">
-              <size>
-               <width>40</width>
-               <height>20</height>
-              </size>
-             </property>
-            </spacer>
-           </item>
-           <item>
-            <widget class="QPushButton" name="nextButton3">
-             <property name="text">
-              <string>Next</string>
-             </property>
-            </widget>
-           </item>
-          </layout>
-         </item>
-        </layout>
-       </item>
-      </layout>
-     </widget>
-     <widget class="QWidget" name="page_4">
-      <layout class="QHBoxLayout" name="horizontalLayout_6">
-       <item>
-        <layout class="QVBoxLayout" name="verticalLayout_6">
-         <item>
-          <spacer name="verticalSpacer_4">
-           <property name="orientation">
-            <enum>Qt::Vertical</enum>
-           </property>
-           <property name="sizeHint" stdset="0">
-            <size>
-             <width>20</width>
-             <height>40</height>
-            </size>
-           </property>
-          </spacer>
-         </item>
-         <item>
-          <layout class="QHBoxLayout" name="horizontalLayout_5">
-           <item>
-            <widget class="QPushButton" name="previousButton4">
-             <property name="text">
-              <string>Previous</string>
-             </property>
-            </widget>
-           </item>
-           <item>
-            <spacer name="horizontalSpacer_4">
-             <property name="orientation">
-              <enum>Qt::Horizontal</enum>
-             </property>
-             <property name="sizeHint" stdset="0">
-              <size>
-               <width>40</width>
-               <height>20</height>
-              </size>
-             </property>
-            </spacer>
-           </item>
-           <item>
-            <widget class="QPushButton" name="nextButton4">
-             <property name="text">
-              <string>Next</string>
-             </property>
-            </widget>
-           </item>
-          </layout>
-         </item>
-        </layout>
-       </item>
-      </layout>
-     </widget>
-     <widget class="QWidget" name="page_5">
-      <layout class="QHBoxLayout" name="horizontalLayout_8">
-       <item>
-        <layout class="QVBoxLayout" name="verticalLayout_7">
-         <item>
-          <widget class="QLabel" name="label_2">
-           <property name="font">
-            <font>
-             <pointsize>20</pointsize>
-            </font>
-           </property>
-           <property name="text">
-            <string>Welcome to Octave!</string>
-           </property>
-          </widget>
-         </item>
-         <item>
-          <widget class="QLabel" name="label_3">
-           <property name="text">
-            <string>This is the development version of Octave with the first official GUI.</string>
-           </property>
-           <property name="wordWrap">
-            <bool>true</bool>
-           </property>
-          </widget>
-         </item>
-         <item>
-          <widget class="QLabel" name="label_4">
-           <property name="text">
-            <string>You seem to run Octave GUI for the first time on this computer. This assistant will help you to configure this software installation. Click 'Finish' to write a configuration file and launch Octave GUI.</string>
-           </property>
-           <property name="wordWrap">
-            <bool>true</bool>
-           </property>
-          </widget>
-         </item>
-         <item>
-          <spacer name="verticalSpacer_5">
-           <property name="orientation">
-            <enum>Qt::Vertical</enum>
-           </property>
-           <property name="sizeHint" stdset="0">
-            <size>
-             <width>20</width>
-             <height>40</height>
-            </size>
-           </property>
-          </spacer>
-         </item>
-         <item>
-          <layout class="QHBoxLayout" name="horizontalLayout_7">
-           <item>
-            <widget class="QPushButton" name="previousButton5">
-             <property name="enabled">
-              <bool>false</bool>
-             </property>
-             <property name="text">
-              <string>Previous</string>
-             </property>
-            </widget>
-           </item>
-           <item>
-            <spacer name="horizontalSpacer_5">
-             <property name="orientation">
-              <enum>Qt::Horizontal</enum>
-             </property>
-             <property name="sizeHint" stdset="0">
-              <size>
-               <width>40</width>
-               <height>20</height>
-              </size>
-             </property>
-            </spacer>
-           </item>
-           <item>
-            <widget class="QPushButton" name="finishButton">
-             <property name="text">
-              <string>Finish</string>
-             </property>
-            </widget>
-           </item>
-          </layout>
-         </item>
-        </layout>
-       </item>
-      </layout>
-     </widget>
-    </widget>
-   </item>
-  </layout>
- </widget>
- <resources/>
- <connections>
-  <connection>
-   <sender>finishButton</sender>
-   <signal>clicked()</signal>
-   <receiver>welcome_wizard</receiver>
-   <slot>accept()</slot>
-   <hints>
-    <hint type="sourcelabel">
-     <x>577</x>
-     <y>372</y>
-    </hint>
-    <hint type="destinationlabel">
-     <x>323</x>
-     <y>199</y>
-    </hint>
-   </hints>
-  </connection>
- </connections>
-</ui>
--- a/gui/src/workspace-model.cc	Sat Aug 18 16:23:39 2012 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,224 +0,0 @@
-/* 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 <QTreeWidget>
-#include <QTime>
-
-#include <list>
-
-#include <symtab.h>
-
-#include "workspace-model.h"
-#include "octave-link.h"
-
-workspace_model::workspace_model(QObject *parent)
-  : QAbstractItemModel(parent), octave_event_observer ()
-{
-  QList<QVariant> rootData;
-  rootData << tr ("Name") << tr ("Type") << tr("Dimension") << tr ("Value");
-  _rootItem = new tree_item(rootData);
-
-  insert_top_level_item(0, new tree_item ("Local"));
-  insert_top_level_item(1, new tree_item ("Global"));
-  insert_top_level_item(2, new tree_item ("Persistent"));
-  insert_top_level_item(3, new tree_item ("Hidden"));
-
-  connect(&_update_workspace_model_timer,
-          SIGNAL (timeout ()),
-          this,
-          SLOT (request_update_workspace()));
-
-  _update_workspace_model_timer.setInterval (500);
-  _update_workspace_model_timer.setSingleShot (true);
-  _update_workspace_model_timer.start ();
-}
-
-workspace_model::~workspace_model()
-{
-  delete _rootItem;
-}
-
-void
-workspace_model::request_update_workspace ()
-{
-  octave_link::instance ()
-      ->post_event (new octave_update_workspace_event (*this));
-}
-
-void
-workspace_model::event_accepted (octave_event *e)
-{
-  if (dynamic_cast <octave_update_workspace_event*> (e))
-    {
-      std::list < symbol_table::symbol_record > symbolTable = symbol_table::all_variables ();
-
-      _symbol_information.clear ();
-      for (std::list < symbol_table::symbol_record > ::iterator iterator = symbolTable.begin ();
-         iterator != symbolTable.end (); iterator++)
-      {
-        symbol_information symbolInformation;
-        symbolInformation.from_symbol_record (*iterator);
-        _symbol_information.push_back (symbolInformation);
-      }
-
-      beginResetModel();
-      top_level_item (0)->delete_child_items ();
-      top_level_item (1)->delete_child_items ();
-      top_level_item (2)->delete_child_items ();
-      top_level_item (3)->delete_child_items ();
-
-      foreach (const symbol_information& s, _symbol_information)
-        {
-          tree_item *child = new tree_item ();
-
-          child->set_data (0, s._symbol);
-          child->set_data (1, s._type);
-          child->set_data (2, s._dimension);
-          child->set_data (3, s._value);
-
-          switch (s._scope)
-            {
-              case symbol_information::local:       top_level_item (0)->add_child (child); break;
-              case symbol_information::global:      top_level_item (1)->add_child (child); break;
-              case symbol_information::persistent:  top_level_item (2)->add_child (child); break;
-              case symbol_information::hidden:      top_level_item (3)->add_child (child); break;
-            }
-        }
-
-      endResetModel();
-      emit model_changed();
-    }
-
-  // Post a new event in a given time.
-  // This prevents flooding the event queue when no events are being processed.
-  _update_workspace_model_timer.start ();
-  delete e;
-}
-
-void
-workspace_model::event_reject (octave_event *e)
-{
-  delete e;
-}
-
-QModelIndex
-workspace_model::index(int row, int column, const QModelIndex &parent) const
-{
-  if (!hasIndex(row, column, parent))
-    return QModelIndex();
-
-  tree_item *parentItem;
-
-  if (!parent.isValid())
-    parentItem = _rootItem;
-  else
-    parentItem = static_cast<tree_item*>(parent.internalPointer());
-
-  tree_item *childItem = parentItem->child(row);
-  if (childItem)
-    return createIndex(row, column, childItem);
-  else
-    return QModelIndex();
-}
-
-QModelIndex
-workspace_model::parent(const QModelIndex &index) const
-{
-  if (!index.isValid())
-    return QModelIndex();
-
-  tree_item *childItem = static_cast<tree_item*>(index.internalPointer());
-  tree_item *parentItem = childItem->parent();
-
-  if (parentItem == _rootItem)
-    return QModelIndex();
-
-  return createIndex(parentItem->row(), 0, parentItem);
-}
-
-int
-workspace_model::rowCount(const QModelIndex &parent) const
-{
-  tree_item *parentItem;
-  if (parent.column() > 0)
-    return 0;
-
-  if (!parent.isValid())
-    parentItem = _rootItem;
-  else
-    parentItem = static_cast<tree_item*>(parent.internalPointer());
-
-  return parentItem->child_count();
-}
-
-int
-workspace_model::columnCount(const QModelIndex &parent) const
-{
-  if (parent.isValid())
-    return static_cast<tree_item*>(parent.internalPointer())->column_count();
-  else
-    return _rootItem->column_count();
-}
-
-void
-workspace_model::insert_top_level_item(int at, tree_item *treeItem)
-{
-  _rootItem->insert_child_item(at, treeItem);
-}
-
-tree_item *
-workspace_model::top_level_item (int at)
-{
-  return _rootItem->child(at);
-}
-
-Qt::ItemFlags
-workspace_model::flags(const QModelIndex &index) const
-{
-  if (!index.isValid())
-    return 0;
-
-  return Qt::ItemIsEnabled | Qt::ItemIsSelectable;
-}
-
-QVariant
-workspace_model::headerData(int section, Qt::Orientation orientation, int role) const
-{
-  if (orientation == Qt::Horizontal && role == Qt::DisplayRole)
-    return _rootItem->data(section);
-
-  return QVariant();
-}
-
-QVariant
-workspace_model::data(const QModelIndex &index, int role) const
-{
-  if (!index.isValid())
-    return QVariant();
-
-  if (role != Qt::DisplayRole)
-    return QVariant();
-
-  tree_item *item = static_cast<tree_item*>(index.internalPointer());
-
-  return item->data(index.column());
-}
-
--- a/gui/src/workspace-model.h	Sat Aug 18 16:23:39 2012 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,150 +0,0 @@
-/* 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/>.
- */
-
-#ifndef WORKSPACEMODEL_H
-#define WORKSPACEMODEL_H
-
-// Qt includes
-#include <QAbstractItemModel>
-#include <QVector>
-#include <QSemaphore>
-#include <QTimer>
-
-#include "symbol-information.h"
-#include "octave-event-observer.h"
-
-class tree_item
-{
-public:
-  tree_item (const QList<QVariant> &data, tree_item *parent = 0) {
-    _parent_item = parent;
-    _item_data = data;
-  }
-
-  tree_item (QVariant data = QVariant(), tree_item *parent = 0) {
-    QList<QVariant> variantList;
-    variantList << data << QVariant () << QVariant () << QVariant ();
-    _parent_item = parent;
-    _item_data = variantList;
-  }
-
-  ~tree_item () {
-     qDeleteAll (_child_items);
-  }
-
-  void insert_child_item (int at, tree_item *item) {
-    item->_parent_item = this;
-    _child_items.insert (at, item);
-  }
-
-  void add_child (tree_item *item) {
-    item->_parent_item = this;
-    _child_items.append (item);
-  }
-
-  void delete_child_items () {
-      qDeleteAll (_child_items);
-      _child_items.clear ();
-  }
-
-  void remove_child (tree_item *item) {
-    _child_items.removeAll (item);
-  }
-
-  QVariant data (int column) const
-  {
-    return _item_data[column];
-  }
-
-  void set_data (int column, QVariant data)
-  {
-    _item_data[column] = data;
-  }
-
-  tree_item *child (int row) {
-    return _child_items[row];
-  }
-
-  int child_count () const {
-    return _child_items.count();
-  }
-
-  int column_count () const
-  {
-    return _item_data.count();
-  }
-
-  int row () const {
-    if (_parent_item)
-      return _parent_item->_child_items.indexOf (const_cast<tree_item*>(this));
-
-    return 0;
-  }
-
-  tree_item *parent ()
-  {
-    return _parent_item;
-  }
-
-private:
-  QList<tree_item*> _child_items;
-  QList<QVariant> _item_data;
-  tree_item *_parent_item;
-};
-
-class workspace_model
-    : public QAbstractItemModel, public octave_event_observer
-{
-  Q_OBJECT
-
-public:
-  workspace_model (QObject *parent = 0);
-  ~workspace_model ();
-
-  void event_accepted (octave_event *e);
-  void event_reject (octave_event *e);
-
-  QVariant data (const QModelIndex &index, int role) const;
-  Qt::ItemFlags flags (const QModelIndex &index) const;
-  QVariant headerData (int section, Qt::Orientation orientation,
-                       int role = Qt::DisplayRole) const;
-  QModelIndex index (int row, int column,
-                    const QModelIndex &parent = QModelIndex ()) const;
-  QModelIndex parent (const QModelIndex &index) const;
-  int rowCount (const QModelIndex &parent = QModelIndex ()) const;
-  int columnCount (const QModelIndex &parent = QModelIndex ()) const;
-
-  void insert_top_level_item (int at, tree_item *treeItem);
-  tree_item *top_level_item (int at);
-
-public slots:
-  void request_update_workspace ();
-
-signals:
-  void model_changed ();
-
-private:
-  /** Timer for periodically updating the workspace model from the current
-    * symbol information. */
-  QTimer _update_workspace_model_timer;
-
-  /** Stores the current symbol information. */
-  QList <symbol_information> _symbol_information;
-  tree_item *_rootItem;
-};
-
-#endif // WORKSPACEMODEL_H
--- a/gui/src/workspace-view.cc	Sat Aug 18 16:23:39 2012 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,216 +0,0 @@
-/* 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 "workspace-view.h"
-#include "resource-manager.h"
-#include <QHBoxLayout>
-#include <QVBoxLayout>
-#include <QPushButton>
-
-workspace_view::workspace_view (QWidget * parent) : QDockWidget
-  (parent)
-{
-  setObjectName ("WorkspaceView");
-  setWindowTitle (tr ("Workspace"));
-
-  // Create a new workspace model.
-  _workspace_model = new workspace_model ();
-
-  _workspace_tree_view = new QTreeView (this);            // Create a new tree view.
-  _workspace_tree_view->setHeaderHidden (false);          // Do not show header columns.
-  _workspace_tree_view->setAlternatingRowColors (true);   // Activate alternating row colors.
-  _workspace_tree_view->setAnimated (false);              // Deactivate animations because of strange glitches.
-  _workspace_tree_view->setTextElideMode (Qt::ElideRight);// Elide text to the right side of the cells.
-  _workspace_tree_view->setWordWrap (false);              // No wordwrapping in cells.
-  _workspace_tree_view->setModel (_workspace_model);      // Assign model.
-
-  // Set an empty widget, so we can assign a layout to it.
-  setWidget (new QWidget (this));
-
-  // Create a new layout and add widgets to it.
-  QVBoxLayout *layout = new QVBoxLayout ();
-  layout->addWidget (_workspace_tree_view);
-  layout->setMargin (2);
-
-  // Set the empty widget to have our layout.
-  widget ()->setLayout (layout);
-
-  // Initialize collapse/expand state of the workspace subcategories.
-
-  QSettings *settings = resource_manager::get_settings ();
-
-  // FIXME -- what should happen if settings is 0?
-
-  _explicit_collapse.local      = settings->value ("workspaceview/local_collapsed", false).toBool ();
-  _explicit_collapse.global     = settings->value ("workspaceview/global_collapsed", false).toBool ();;
-  _explicit_collapse.persistent = settings->value ("workspaceview/persistent_collapsed", false).toBool ();;
-  _explicit_collapse.hidden     = settings->value ("workspaceview/hidden_collapsed", false).toBool ();;
-
-  // Connect signals and slots.
-  connect (this, SIGNAL (visibilityChanged (bool)),
-           this, SLOT(handle_visibility_changed (bool)));
-
-  connect (_workspace_model, SIGNAL (model_changed ()),
-           this, SLOT (model_changed ()));
-
-  connect (_workspace_tree_view, SIGNAL (collapsed (QModelIndex)),
-           this, SLOT (collapse_requested (QModelIndex)));
-  connect (_workspace_tree_view, SIGNAL (expanded (QModelIndex)),
-           this, SLOT (expand_requested (QModelIndex)));
-
-  connect (_workspace_tree_view, SIGNAL (doubleClicked (QModelIndex)),
-           this, SLOT (item_double_clicked (QModelIndex)));
-
-}
-
-workspace_view::~workspace_view ()
-{
-  QSettings *settings = resource_manager::get_settings ();
-
-  // FIXME -- what should happen if settings is 0?
-
-  settings->setValue("workspaceview/local_collapsed", _explicit_collapse.local);
-  settings->setValue("workspaceview/global_collapsed", _explicit_collapse.global);
-  settings->setValue("workspaceview/persistent_collapsed", _explicit_collapse.persistent);
-  settings->setValue("workspaceview/hidden_collapsed", _explicit_collapse.hidden);
-}
-
-void
-workspace_view::handle_visibility_changed (bool visible)
-{
-  if (visible)
-    emit active_changed (true);
-}
-
-void
-workspace_view::model_changed ()
-{
-  // This code is very quirky and requires some explanation.
-  // Usually, we should not deal with collapsing or expanding ourselves,
-  // because the view itself determines (based on the model) whether it
-  // is appropriate to collapse or expand items.
-  //
-  // Now, the logic requires that we update our model item by item, which
-  // would make it work correctly, but this is extremely slow and scales
-  // very bad (O(n^2)). That's why we throw away our model and rebuild it
-  // completely from scratch (O(n)), which is why the view renders all
-  // displayed data as invalid.
-  //
-  // In order to make collapsing/expanding work again, we need to set
-  // flags ourselves here.
-
-  QModelIndex local_model_index = _workspace_model->index (0, 0);
-  QModelIndex global_model_index = _workspace_model->index (1, 0);
-  QModelIndex persistent_model_index = _workspace_model->index (2, 0);
-  QModelIndex hidden_model_index = _workspace_model->index (3, 0);
-
-  if (_explicit_collapse.local) {
-    _workspace_tree_view->collapse (local_model_index);
-  } else {
-    _workspace_tree_view->expand (local_model_index);
-  }
-
-  if (_explicit_collapse.global) {
-    _workspace_tree_view->collapse (global_model_index);
-  } else {
-    _workspace_tree_view->expand (global_model_index);
-  }
-
-  if (_explicit_collapse.persistent) {
-    _workspace_tree_view->collapse (persistent_model_index);
-  } else {
-    _workspace_tree_view->expand (persistent_model_index);
-  }
-
-  if (_explicit_collapse.hidden) {
-    _workspace_tree_view->collapse (hidden_model_index);
-  } else {
-    _workspace_tree_view->expand (hidden_model_index);
-  }
-}
-
-void
-workspace_view::collapse_requested (QModelIndex index)
-{
-  // This code is very quirky and requires some explanation.
-  // Usually, we should not deal with collapsing or expanding ourselves,
-  // because the view itself determines (based on the model) whether it
-  // is appropriate to collapse or expand items.
-  //
-  // Now, the logic requires that we update our model item by item, which
-  // would make it work correctly, but this is extremely slow and scales
-  // very bad (O(n^2)). That's why we throw away our model and rebuild it
-  // completely from scratch (O(n)), which is why the view renders all
-  // displayed data as invalid.
-  //
-  // In order to make collapsing/expanding work again, we need to set
-  // flags ourselves here.
-  QMap<int, QVariant> item_data
-      = _workspace_model->itemData (index);
-
-  if (item_data[0] == "Local")
-    _explicit_collapse.local = true;
-  if (item_data[0] == "Global")
-    _explicit_collapse.global = true;
-  if (item_data[0] == "Persistent")
-    _explicit_collapse.persistent = true;
-  if (item_data[0] == "Hidden")
-    _explicit_collapse.hidden = true;
-}
-
-void
-workspace_view::expand_requested (QModelIndex index)
-{
-  // This code is very quirky and requires some explanation.
-  // Usually, we should not deal with collapsing or expanding ourselves,
-  // because the view itself determines (based on the model) whether it
-  // is appropriate to collapse or expand items.
-  //
-  // Now, the logic requires that we update our model item by item, which
-  // would make it work correctly, but this is extremely slow and scales
-  // very bad (O(n^2)). That's why we throw away our model and rebuild it
-  // completely from scratch (O(n)), which is why the view renders all
-  // displayed data as invalid.
-  //
-  // In order to make collapsing/expanding work again, we need to do set
-  // flags ourselves here.
-  QMap<int, QVariant> item_data
-      = _workspace_model->itemData (index);
-
-  if (item_data[0] == "Local")
-    _explicit_collapse.local = false;
-  if (item_data[0] == "Global")
-    _explicit_collapse.global = false;
-  if (item_data[0] == "Persistent")
-    _explicit_collapse.persistent = false;
-  if (item_data[0] == "Hidden")
-    _explicit_collapse.hidden = false;
-}
-
-void
-workspace_view::item_double_clicked (QModelIndex index)
-{
-  Q_UNUSED (index);
-  // TODO: Implement opening a dialog that allows the user to change a variable in the workspace.
-}
-
-void
-workspace_view::closeEvent (QCloseEvent *event)
-{
-  emit active_changed (false);
-  QDockWidget::closeEvent (event);
-}
--- a/gui/src/workspace-view.h	Sat Aug 18 16:23:39 2012 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,65 +0,0 @@
-/* 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/>.
- */
-
-#ifndef WORKSPACEVIEW_H
-#define WORKSPACEVIEW_H
-
-#include <QDockWidget>
-#include <QTreeView>
-#include <QSemaphore>
-#include "octave-link.h"
-#include "workspace-model.h"
-
-class workspace_view : public QDockWidget
-{
-  Q_OBJECT
-public:
-  workspace_view (QWidget * parent = 0);
-  ~workspace_view ();
-
-public slots:
-  void handle_visibility_changed (bool visible);
-  void model_changed ();
-
-signals:
-  /** Custom signal that tells if a user has clicke away that dock widget. */
-  void active_changed (bool active);
-
-protected:
-  void closeEvent (QCloseEvent *event);
-
-protected slots:
-  void collapse_requested (QModelIndex index);
-  void expand_requested (QModelIndex index);
-  void item_double_clicked (QModelIndex index);
-
-private:
-  QTreeView *_workspace_tree_view;
-
-  /** Stores the current workspace model. */
-  workspace_model *_workspace_model;
-
-  struct
-  {
-    bool local;
-    bool global;
-    bool persistent;
-    bool hidden;
-  } _explicit_collapse;
-};
-
-#endif // WORKSPACEVIEW_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/libgui/Makefile.am	Sat Aug 18 18:10:09 2012 -0400
@@ -0,0 +1,3 @@
+SUBDIRS = src
+
+octetc_DATA = default-qt-settings
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/libgui/default-qt-settings	Sat Aug 18 18:10:09 2012 -0400
@@ -0,0 +1,37 @@
+[General]
+connectOnStartup=true
+showMessageOfTheDay=true
+showTopic=true
+autoIdentification=false
+nickServPassword=
+useCustomFileEditor=false
+customFileEditor=emacs
+showFilenames=true
+showFileSize=false
+showFileType=false
+showLastModified=false
+showHiddenFiles=false
+useAlternatingRowColors=true
+useProxyServer=false
+proxyType=
+proxyHostName=none
+proxyPort=8080
+proxyUserName=
+proxyPassword=
+
+[editor]
+showLineNumbers=true
+highlightCurrentLine=true
+codeCompletion=true
+fontName=Ubuntu Mono
+fontSize=12
+shortWindowTitle=true
+longWindowTitle=true
+
+[terminal]
+fontSize=10
+fontName=Andale Mono
+
+[MainWindow]
+geometry=@ByteArray(\x1\xd9\xd0\xcb\0\x1\0\0\0\0\0\x31\0\0\0\x18\0\0\x4\xff\0\0\x3\xff\0\0\0\0\0\0\0\0\xff\xff\xff\xfe\xff\xff\xff\xfe\0\0\0\0\x2\0)
+windowState=@ByteArray(\0\0\0\xff\0\0\0\0\xfd\0\0\0\x1\0\0\0\x1\0\0\x4\xcf\0\0\x3\x91\xfc\x2\0\0\0\x1\xfc\0\0\0\x41\0\0\x3\x91\0\0\x1\xc7\0\xff\xff\xff\xfc\x1\0\0\0\x3\xfc\0\0\0\0\0\0\x1.\0\0\0R\0\xff\xff\xff\xfc\x2\0\0\0\x2\xfb\0\0\0\x1a\0W\0o\0r\0k\0s\0p\0\x61\0\x63\0\x65\0V\0i\0\x65\0w\x1\0\0\0\x41\0\0\x1\xe8\0\0\0k\0\xff\xff\xff\xfb\0\0\0\"\0H\0i\0s\0t\0o\0r\0y\0\x44\0o\0\x63\0k\0W\0i\0\x64\0g\0\x65\0t\x1\0\0\x2/\0\0\x1\xa3\0\0\0\x8c\0\xff\xff\xff\xfc\0\0\x1\x34\0\0\x2\x81\0\0\x2\x81\0\0\x2\x81\xfa\0\0\0\0\x2\0\0\0\x2\xfb\0\0\0$\0T\0\x65\0r\0m\0i\0n\0\x61\0l\0\x44\0o\0\x63\0k\0W\0i\0\x64\0g\0\x65\0t\x1\0\0\0\0\xff\xff\xff\xff\0\0\x1\xa9\0\xff\xff\xff\xfb\0\0\0\x14\0\x46\0i\0l\0\x65\0\x45\0\x64\0i\0t\0o\0r\x1\0\0\x1\xf0\0\0\x1\xe2\0\0\0j\0\xff\xff\xff\xfb\0\0\0\x1e\0\x46\0i\0l\0\x65\0s\0\x44\0o\0\x63\0k\0W\0i\0\x64\0g\0\x65\0t\x1\0\0\x3\xbb\0\0\x1\x14\0\0\0P\0\xff\xff\xff\0\0\0\0\0\0\x3\x91\0\0\0\x4\0\0\0\x4\0\0\0\b\0\0\0\b\xfc\0\0\0\x1\0\0\0\x2\0\0\0\x1\xff\xff\xff\xff\x1\0\0\0\0\xff\xff\xff\xff\0\0\0\0\0\0\0\0)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/libgui/gui.pro	Sat Aug 18 18:10:09 2012 -0400
@@ -0,0 +1,2 @@
+TEMPLATE = subdirs
+SUBDIRS = qterminal src
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/libgui/kb-layouts/default.keytab	Sat Aug 18 18:10:09 2012 -0400
@@ -0,0 +1,133 @@
+# [README.default.Keytab] Buildin Keyboard Table
+#
+# To customize your keyboard, copy this file to something
+# ending with .keytab and change it to meet you needs.
+# Please read the README.KeyTab and the README.keyboard
+# in this case.
+#
+# --------------------------------------------------------------
+
+keyboard "Default (XFree 4)"
+
+# --------------------------------------------------------------
+#
+# Note that this particular table is a "risc" version made to
+# ease customization without bothering with obsolete details.
+# See VT100.keytab for the more hairy stuff.
+#
+# --------------------------------------------------------------
+
+# common keys
+
+key Escape             : "\E"
+
+key Tab   -Shift       : "\t"
+key Tab   +Shift+Ansi  : "\E[Z"
+key Tab   +Shift-Ansi  : "\t"
+key Backtab     +Ansi  : "\E[Z"
+key Backtab     -Ansi  : "\t"
+
+key Return-Shift-NewLine : "\r"
+key Return-Shift+NewLine : "\r\n"
+
+key Return+Shift         : "\EOM"
+
+# Backspace and Delete codes are preserving CTRL-H.
+
+key Backspace      : "\x7f"
+
+# Arrow keys in VT52 mode
+# shift up/down are reserved for scrolling.
+# shift left/right are reserved for switching between tabs (this is hardcoded).
+
+key Up   -Shift-Ansi : "\EA"
+key Down -Shift-Ansi : "\EB"
+key Right-Shift-Ansi : "\EC"
+key Left -Shift-Ansi : "\ED"
+
+# Arrow keys in ANSI mode with Application - and Normal Cursor Mode)
+
+key Up    -Shift-AnyMod+Ansi+AppCuKeys           : "\EOA"
+key Down  -Shift-AnyMod+Ansi+AppCuKeys           : "\EOB"
+key Right -Shift-AnyMod+Ansi+AppCuKeys           : "\EOC"
+key Left  -Shift-AnyMod+Ansi+AppCuKeys           : "\EOD"
+
+key Up    -Shift-AnyMod+Ansi-AppCuKeys           : "\E[A"
+key Down  -Shift-AnyMod+Ansi-AppCuKeys           : "\E[B"
+key Right -Shift-AnyMod+Ansi-AppCuKeys           : "\E[C"
+key Left  -Shift-AnyMod+Ansi-AppCuKeys           : "\E[D"
+
+key Up    -Shift+AnyMod+Ansi                     : "\E[1;*A"
+key Down  -Shift+AnyMod+Ansi                     : "\E[1;*B"
+key Right -Shift+AnyMod+Ansi                     : "\E[1;*C"
+key Left  -Shift+AnyMod+Ansi                     : "\E[1;*D"
+
+# other grey PC keys
+
+key Enter+NewLine : "\r\n"
+key Enter-NewLine : "\r"
+
+key Home        -AnyMod     -AppCuKeys           : "\E[H"  
+key End         -AnyMod     -AppCuKeys           : "\E[F"  
+key Home        -AnyMod     +AppCuKeys           : "\EOH"  
+key End         -AnyMod     +AppCuKeys           : "\EOF"  
+key Home        +AnyMod                          : "\E[1;*H"
+key End         +AnyMod                          : "\E[1;*F"
+
+key Insert      -AnyMod                          : "\E[2~"
+key Delete      -AnyMod                          : "\E[3~"
+key Insert      +AnyMod                          : "\E[2;*~"
+key Delete      +AnyMod                          : "\E[3;*~"
+
+key Prior -Shift-AnyMod                          : "\E[5~"
+key Next  -Shift-AnyMod                          : "\E[6~"
+key Prior -Shift+AnyMod                          : "\E[5;*~"
+key Next  -Shift+AnyMod                          : "\E[6;*~"
+
+# Function keys
+key F1          -AnyMod                          : "\EOP"
+key F2          -AnyMod                          : "\EOQ"
+key F3          -AnyMod                          : "\EOR"
+key F4          -AnyMod                          : "\EOS"
+key F5          -AnyMod                          : "\E[15~"
+key F6          -AnyMod                          : "\E[17~"
+key F7          -AnyMod                          : "\E[18~"
+key F8          -AnyMod                          : "\E[19~"
+key F9          -AnyMod                          : "\E[20~"
+key F10         -AnyMod                          : "\E[21~"
+key F11         -AnyMod                          : "\E[23~"
+key F12         -AnyMod                          : "\E[24~"
+
+key F1          +AnyMod                          : "\EO*P"
+key F2          +AnyMod                          : "\EO*Q"
+key F3          +AnyMod                          : "\EO*R"
+key F4          +AnyMod                          : "\EO*S"
+key F5          +AnyMod                          : "\E[15;*~"
+key F6          +AnyMod                          : "\E[17;*~"
+key F7          +AnyMod                          : "\E[18;*~"
+key F8          +AnyMod                          : "\E[19;*~"
+key F9          +AnyMod                          : "\E[20;*~"
+key F10         +AnyMod                          : "\E[21;*~"
+key F11         +AnyMod                          : "\E[23;*~"
+key F12         +AnyMod                          : "\E[24;*~"
+
+# Work around dead keys
+
+key Space +Control : "\x00"
+
+# Some keys are used by konsole to cause operations.
+# The scroll* operations refer to the history buffer.
+
+key Up    +Shift-AppScreen  : scrollLineUp
+key Prior +Shift-AppScreen  : scrollPageUp
+key Down  +Shift-AppScreen  : scrollLineDown
+key Next  +Shift-AppScreen  : scrollPageDown
+
+#key Up    +Shift  : scrollLineUp
+#key Prior +Shift  : scrollPageUp
+#key Down  +Shift  : scrollLineDown
+#key Next  +Shift  : scrollPageDown
+
+key ScrollLock     : scrollLock
+
+# keypad characters are not offered differently by Qt.
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/libgui/kb-layouts/linux.keytab	Sat Aug 18 18:10:09 2012 -0400
@@ -0,0 +1,133 @@
+# [linux.keytab] Konsole Keyboard Table (Linux console keys)
+#
+# --------------------------------------------------------------
+
+# NOT TESTED, MAY NEED SOME CLEANUPS
+keyboard "Linux console"
+
+# --------------------------------------------------------------
+#
+# This configuration table allows to customize the
+# meaning of the keys.
+#
+# The syntax is that each entry has the form : 
+#
+#   "key" Keyname { ("+"|"-") Modename } ":" (String|Operation)
+#
+# Keynames are those defined in <qnamespace.h> with the
+# "Qt::Key_" removed. (We'd better insert the list here)
+#
+# Mode names are : 
+#
+# - Shift
+# - Alt
+# - Control
+#
+#   The VT100 emulation has two modes that can affect the
+#   sequences emitted by certain keys. These modes are
+#   under control of the client program.
+#   
+# - Newline     : effects Return and Enter key.
+# - Application : effects Up and Down key.
+#
+# - Ansi        : effects Up and Down key (This is for VT52, really).
+#
+# Operations are
+#
+# - scrollUpLine
+# - scrollUpPage
+# - scrollDownLine
+# - scrollDownPage
+#
+# - emitSelection
+#
+# If the key is not found here, the text of the
+# key event as provided by QT is emitted, possibly
+# preceeded by ESC if the Alt key is pressed.
+#
+# --------------------------------------------------------------
+
+key Escape : "\E"
+key Tab    : "\t"
+
+# VT100 can add an extra \n after return.
+# The NewLine mode is set by an escape sequence.
+
+key Return-NewLine : "\r"  
+key Return+NewLine : "\r\n"
+
+# Some desperately try to save the ^H.
+
+key Backspace : "\x7f"
+key Delete    : "\E[3~"
+
+# These codes are for the VT52 mode of VT100
+# The Ansi mode (i.e. VT100 mode) is set by
+# an escape sequence
+
+key Up   -Shift-Ansi : "\EA"
+key Down -Shift-Ansi : "\EB"
+key Right-Shift-Ansi : "\EC"
+key Left -Shift-Ansi : "\ED"
+
+# VT100 emits a mode bit together
+# with the arrow keys.The AppCuKeys
+# mode is set by an escape sequence.
+
+key Up   -Shift+Ansi+AppCuKeys : "\EOA"
+key Down -Shift+Ansi+AppCuKeys : "\EOB"
+key Right-Shift+Ansi+AppCuKeys : "\EOC"
+key Left -Shift+Ansi+AppCuKeys : "\EOD"
+
+key Up   -Shift+Ansi-AppCuKeys : "\E[A"
+key Down -Shift+Ansi-AppCuKeys : "\E[B"
+key Right-Shift+Ansi-AppCuKeys : "\E[C"
+key Left -Shift+Ansi-AppCuKeys : "\E[D"
+
+# linux functions keys F1-F5 differ from xterm
+
+key F1 : "\E[[A" 
+key F2 : "\E[[B" 
+key F3 : "\E[[C" 
+key F4 : "\E[[D" 
+key F5 : "\E[[E" 
+
+key F6     : "\E[17~" 
+key F7     : "\E[18~" 
+key F8     : "\E[19~" 
+key F9     : "\E[20~" 
+key F10    : "\E[21~" 
+key F11    : "\E[23~" 
+key F12    : "\E[24~" 
+
+key Home   : "\E[1~"  
+key End    : "\E[4~"  
+
+key Prior -Shift : "\E[5~"  
+key Next  -Shift : "\E[6~"  
+key Insert-Shift : "\E[2~"  
+
+# Keypad-Enter. See comment on Return above.
+
+key Enter+NewLine : "\r\n"
+key Enter-NewLine : "\r"  
+
+key Space +Control : "\x00"
+
+# some of keys are used by konsole.
+
+key Up    +Shift   : scrollLineUp
+key Prior +Shift   : scrollPageUp
+key Down  +Shift   : scrollLineDown
+key Next  +Shift   : scrollPageDown
+
+key ScrollLock     : scrollLock
+
+#----------------------------------------------------------
+
+# keypad characters as offered by Qt
+# cannot be recognized as such.
+
+#----------------------------------------------------------
+
+# Following other strings as emitted by konsole.
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/libgui/kb-layouts/vt420pc.keytab	Sat Aug 18 18:10:09 2012 -0400
@@ -0,0 +1,163 @@
+# [vt420pc.keytab] Konsole Keyboard Table (VT420pc keys)
+# adapted by ferdinand gassauer f.gassauer@aon.at
+# Nov 2000
+#
+################################################################
+#
+# The escape sequences emmited by the 
+# keys Shift+F1 to Shift+F12 might not fit your needs
+#
+################# IMPORTANT NOTICE #############################
+# the key bindings (Kcontrol -> look and feel -> keybindgs) 
+# overrule the settings in this file. The key bindings might be 
+# changed by the user WITHOUT notification of the maintainer of
+# the keytab file. Konsole will not work as expected by 
+# the maintainer of the keytab file.
+################################################################
+#
+# --------------------------------------------------------------
+
+keyboard "DEC VT420 Terminal"
+
+# --------------------------------------------------------------
+#
+# This configuration table allows to customize the
+# meaning of the keys.
+#
+# The syntax is that each entry has the form : 
+#
+#   "key" Keyname { ("+"|"-") Modename } ":" (String|Operation)
+#
+# Keynames are those defined in <qnamespace.h> with the
+# "Qt::Key_" removed. (We'd better insert the list here)
+#
+# Mode names are : 
+#
+# - Shift
+# - Alt
+# - Control
+#
+#   The VT100 emulation has two modes that can affect the
+#   sequences emitted by certain keys. These modes are
+#   under control of the client program.
+#   
+# - Newline     : effects Return and Enter key.
+# - Application : effects Up and Down key.
+#
+# - Ansi        : effects Up and Down key (This is for VT52, really).
+#
+# Operations are
+#
+# - scrollUpLine
+# - scrollUpPage
+# - scrollDownLine
+# - scrollDownPage
+#
+# - emitSelection
+#
+# If the key is not found here, the text of the
+# key event as provided by QT is emitted, possibly
+# preceeded by ESC if the Alt key is pressed.
+#
+# --------------------------------------------------------------
+
+key Escape : "\E"
+key Tab    : "\t"
+key Backtab: "\E[Z"
+
+# VT100 can add an extra \n after return.
+# The NewLine mode is set by an escape sequence.
+
+key Return-NewLine : "\r"  
+key Return+NewLine : "\r\n"
+
+# Some desperately try to save the ^H.
+# may be not everyone wants this
+
+key Backspace : "\x08"  # Control H
+key Delete    : "\x7f"
+
+# These codes are for the VT420pc
+# The Ansi mode (i.e. VT100 mode) is set by
+# an escape sequence
+
+key Up   -Shift-Ansi : "\EA"
+key Down -Shift-Ansi : "\EB"
+key Right-Shift-Ansi : "\EC"
+key Left -Shift-Ansi : "\ED"
+
+# VT100 emits a mode bit together
+# with the arrow keys.The AppCuKeys
+# mode is set by an escape sequence.
+
+key Up   -Shift+Ansi+AppCuKeys : "\EOA"
+key Down -Shift+Ansi+AppCuKeys : "\EOB"
+key Right-Shift+Ansi+AppCuKeys : "\EOC"
+key Left -Shift+Ansi+AppCuKeys : "\EOD"
+
+key Up   -Shift+Ansi-AppCuKeys : "\E[A"
+key Down -Shift+Ansi-AppCuKeys : "\E[B"
+key Right-Shift+Ansi-AppCuKeys : "\E[C"
+key Left -Shift+Ansi-AppCuKeys : "\E[D"
+
+# function keys 
+
+key F1 -Shift    : "\E[11~"  
+key F2 -Shift    : "\E[12~"
+key F3 -Shift    : "\E[13~"
+key F4 -Shift    : "\E[14~"
+key F5 -Shift    : "\E[15~"
+key F6 -Shift    : "\E[17~"
+key F7 -Shift    : "\E[18~"
+key F8 -Shift    : "\E[19~"
+key F9 -Shift    : "\E[20~"
+key F10-Shift    : "\E[21~"
+key F11-Shift    : "\E[23~"
+key F12-Shift    : "\E[24~"  
+#
+# Shift F1-F12
+#
+key F1 +Shift    : "\E[11;2~"
+key F2 +Shift    : "\E[12;2~"
+key F3 +Shift    : "\E[13;2~"
+key F4 +Shift    : "\E[14;2~"
+key F5 +Shift    : "\E[15;2~"
+key F6 +Shift    : "\E[17;2~" 
+key F7 +Shift    : "\E[18;2~" 
+key F8 +Shift    : "\E[19;2~" 
+key F9 +Shift    : "\E[20;2~" 
+key F10+Shift    : "\E[21;2~" 
+key F11+Shift    : "\E[23;2~" 
+key F12+Shift    : "\E[24;2~" 
+
+key Home   : "\E[H"  
+key End    : "\E[F"  
+
+key Prior -Shift : "\E[5~"  
+key Next  -Shift : "\E[6~"  
+key Insert-Shift : "\E[2~"  
+
+# Keypad-Enter. See comment on Return above.
+
+key Enter+NewLine : "\r\n"
+key Enter-NewLine : "\r"  
+
+key Space +Control : "\x00"
+
+# some of keys are used by konsole.
+
+key Up    +Shift   : scrollLineUp
+key Prior +Shift   : scrollPageUp
+key Down  +Shift   : scrollLineDown
+key Next  +Shift   : scrollPageDown
+
+key ScrollLock     : scrollLock
+
+#----------------------------------------------------------
+
+# keypad characters as offered by Qt
+# cannot be recognized as such.
+
+#----------------------------------------------------------
+
+# Following other strings as emitted by konsole.
Binary file libgui/languages/de-de.qm has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/libgui/languages/de-de.ts	Sat Aug 18 18:10:09 2012 -0400
@@ -0,0 +1,642 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="de_DE">
+<context>
+    <name>FileEditorMdiSubWindow</name>
+    <message>
+        <location filename="../src/FileEditorMdiSubWindow.cpp" line="114"/>
+        <location filename="../src/FileEditorMdiSubWindow.cpp" line="207"/>
+        <source>File Editor</source>
+        <translation>Dateieditor</translation>
+    </message>
+    <message>
+        <location filename="../src/FileEditorMdiSubWindow.cpp" line="115"/>
+        <source>Cannot read file %1:
+%2.</source>
+        <translation>Konnte Datei %1 nicht lesen:
+%2.</translation>
+    </message>
+    <message>
+        <location filename="../src/FileEditorMdiSubWindow.cpp" line="127"/>
+        <source>File loaded.</source>
+        <translation>Datei geladen.</translation>
+    </message>
+    <message>
+        <location filename="../src/FileEditorMdiSubWindow.cpp" line="153"/>
+        <source>Do you want to save the current file
+%1 ?</source>
+        <translation>Möchten Sie die Datei %1 sichern ?</translation>
+    </message>
+    <message>
+        <location filename="../src/FileEditorMdiSubWindow.cpp" line="208"/>
+        <source>Cannot write file %1:
+%2.</source>
+        <translation>Konnte Datei %1 nicht schreiben:
+%2.</translation>
+    </message>
+    <message>
+        <location filename="../src/FileEditorMdiSubWindow.cpp" line="220"/>
+        <source>File %1 saved</source>
+        <translation>Datei %1 gesichert</translation>
+    </message>
+    <message>
+        <location filename="../src/FileEditorMdiSubWindow.cpp" line="383"/>
+        <source>&amp;Close File</source>
+        <translation>&amp;Datei schließen</translation>
+    </message>
+    <message>
+        <location filename="../src/FileEditorMdiSubWindow.cpp" line="386"/>
+        <source>&amp;New File</source>
+        <translation>&amp;Neue Datei</translation>
+    </message>
+    <message>
+        <location filename="../src/FileEditorMdiSubWindow.cpp" line="389"/>
+        <source>&amp;Open File</source>
+        <translation>&amp;Öffne Datei</translation>
+    </message>
+    <message>
+        <location filename="../src/FileEditorMdiSubWindow.cpp" line="392"/>
+        <source>&amp;Save File</source>
+        <translation>&amp;Sichere Datei</translation>
+    </message>
+    <message>
+        <location filename="../src/FileEditorMdiSubWindow.cpp" line="395"/>
+        <source>Save File &amp;As</source>
+        <translation>Sichere Datei &amp;als</translation>
+    </message>
+    <message>
+        <location filename="../src/FileEditorMdiSubWindow.cpp" line="398"/>
+        <source>&amp;Undo</source>
+        <translation>&amp;Rückgängig</translation>
+    </message>
+    <message>
+        <location filename="../src/FileEditorMdiSubWindow.cpp" line="401"/>
+        <source>&amp;Redo</source>
+        <translation>&amp;Wiederholen</translation>
+    </message>
+    <message>
+        <location filename="../src/FileEditorMdiSubWindow.cpp" line="402"/>
+        <source>&amp;Copy</source>
+        <translation>&amp;Kopieren</translation>
+    </message>
+    <message>
+        <location filename="../src/FileEditorMdiSubWindow.cpp" line="403"/>
+        <source>Cu&amp;t</source>
+        <translation>&amp;Ausschneiden</translation>
+    </message>
+    <message>
+        <location filename="../src/FileEditorMdiSubWindow.cpp" line="404"/>
+        <source>&amp;Paste</source>
+        <translation>&amp;Einfügen</translation>
+    </message>
+    <message>
+        <location filename="../src/FileEditorMdiSubWindow.cpp" line="405"/>
+        <source>&amp;Next Bookmark</source>
+        <translation>&amp;Nächstes Bookmark</translation>
+    </message>
+    <message>
+        <location filename="../src/FileEditorMdiSubWindow.cpp" line="406"/>
+        <source>Pre&amp;vious Bookmark</source>
+        <translation>&amp;Voriges Bookmark</translation>
+    </message>
+    <message>
+        <location filename="../src/FileEditorMdiSubWindow.cpp" line="407"/>
+        <source>Toggle &amp;Bookmark</source>
+        <translation>&amp;Bookmark setzen</translation>
+    </message>
+    <message>
+        <location filename="../src/FileEditorMdiSubWindow.cpp" line="410"/>
+        <source>&amp;Run File</source>
+        <translation>&amp;Ausführen</translation>
+    </message>
+    <message>
+        <location filename="../src/FileEditorMdiSubWindow.cpp" line="449"/>
+        <source>&amp;File</source>
+        <translation>&amp;Datei</translation>
+    </message>
+    <message>
+        <location filename="../src/FileEditorMdiSubWindow.cpp" line="457"/>
+        <source>&amp;Edit</source>
+        <translation>&amp;Editieren</translation>
+    </message>
+    <message>
+        <location filename="../src/FileEditorMdiSubWindow.cpp" line="469"/>
+        <source>&amp;Run</source>
+        <translation>&amp;Ausführen</translation>
+    </message>
+</context>
+<context>
+    <name>FilesDockWidget</name>
+    <message>
+        <source>Current Folder</source>
+        <translation type="obsolete">Aktuelles Verzeichnis</translation>
+    </message>
+    <message>
+        <location filename="../src/FilesDockWidget.cpp" line="32"/>
+        <source>Current Directory</source>
+        <translation>Aktuelles Verzeichnis</translation>
+    </message>
+    <message>
+        <location filename="../src/FilesDockWidget.cpp" line="46"/>
+        <source>Move up one directory.</source>
+        <translation>Ein Verzeichnis höher wechseln.</translation>
+    </message>
+    <message>
+        <location filename="../src/FilesDockWidget.cpp" line="49"/>
+        <source>Enter the path or filename.</source>
+        <translation>Geben Sie einen Pfad oder Dateinamen ein.</translation>
+    </message>
+    <message>
+        <location filename="../src/FilesDockWidget.cpp" line="78"/>
+        <source>Doubleclick a file to open it.</source>
+        <translation>Führen Sie einen Doppelklick aus, um eine Datei zu öffnen.</translation>
+    </message>
+</context>
+<context>
+    <name>HistoryDockWidget</name>
+    <message>
+        <location filename="../src/HistoryDockWidget.cpp" line="36"/>
+        <source>Doubleclick a command to transfer it to the terminal.</source>
+        <translation>Führen Sie einen Doppelklick aus, um den Befehl in das Terminal zu übertragen.</translation>
+    </message>
+    <message>
+        <location filename="../src/HistoryDockWidget.cpp" line="38"/>
+        <source>Enter text to filter the command history.</source>
+        <translation>Geben Sie Text ein, um die Befehlshistorie zu filtern.</translation>
+    </message>
+    <message>
+        <location filename="../src/HistoryDockWidget.cpp" line="41"/>
+        <source>Command History</source>
+        <translation>Befehlshistorie</translation>
+    </message>
+    <message>
+        <source>History updated.</source>
+        <translation type="obsolete">Befehlshistorie aktualisiert.</translation>
+    </message>
+</context>
+<context>
+    <name>LexerOctaveGui</name>
+    <message>
+        <location filename="../src/lexer/lexeroctavegui.cpp" line="111"/>
+        <source>Default</source>
+        <translation>Standard</translation>
+    </message>
+    <message>
+        <location filename="../src/lexer/lexeroctavegui.cpp" line="113"/>
+        <source>Comment</source>
+        <translation>Kommentar</translation>
+    </message>
+    <message>
+        <location filename="../src/lexer/lexeroctavegui.cpp" line="115"/>
+        <source>Command</source>
+        <translation>Befehl</translation>
+    </message>
+    <message>
+        <location filename="../src/lexer/lexeroctavegui.cpp" line="117"/>
+        <source>Number</source>
+        <translation>Zahl</translation>
+    </message>
+    <message>
+        <location filename="../src/lexer/lexeroctavegui.cpp" line="119"/>
+        <source>Keyword</source>
+        <translation>Schlüsselwort</translation>
+    </message>
+    <message>
+        <location filename="../src/lexer/lexeroctavegui.cpp" line="121"/>
+        <source>Single-quoted string</source>
+        <translation>Zeichenkette in einfachen Hochkommata</translation>
+    </message>
+    <message>
+        <location filename="../src/lexer/lexeroctavegui.cpp" line="123"/>
+        <source>Operator</source>
+        <translation>Operator</translation>
+    </message>
+    <message>
+        <location filename="../src/lexer/lexeroctavegui.cpp" line="125"/>
+        <source>Identifier</source>
+        <translation>Bezeichner</translation>
+    </message>
+    <message>
+        <location filename="../src/lexer/lexeroctavegui.cpp" line="127"/>
+        <source>Double-quoted string</source>
+        <translation>Zeichenkette in doppelten Hochkommata</translation>
+    </message>
+</context>
+<context>
+    <name>MainWindow</name>
+    <message>
+        <location filename="../src/MainWindow.cpp" line="47"/>
+        <source>Opening file.</source>
+        <translation>Öffne Datei.</translation>
+    </message>
+    <message>
+        <location filename="../src/MainWindow.cpp" line="124"/>
+        <source>Save Workspace</source>
+        <translation>Speichere Arbeitsumgebung</translation>
+    </message>
+    <message>
+        <location filename="../src/MainWindow.cpp" line="134"/>
+        <source>Load Workspace</source>
+        <translation>Lade Arbeitsumgebung</translation>
+    </message>
+    <message>
+        <location filename="../src/MainWindow.cpp" line="226"/>
+        <location filename="../src/MainWindow.cpp" line="362"/>
+        <source>About Octave</source>
+        <translation>Ãœber Octave</translation>
+    </message>
+    <message>
+        <location filename="../src/MainWindow.cpp" line="238"/>
+        <source>Saving data and shutting down.</source>
+        <translation>Speichere Daten und schließe.</translation>
+    </message>
+    <message>
+        <location filename="../src/MainWindow.cpp" line="276"/>
+        <source>View the variables in the active workspace.</source>
+        <translation>Sehen Sie die Variablen ein, die sich in der aktiven Arbeitsumgebung befinden.</translation>
+    </message>
+    <message>
+        <location filename="../src/MainWindow.cpp" line="278"/>
+        <source>Browse and search the command history.</source>
+        <translation>Durchsuchen Sie die Befehlshistorie.</translation>
+    </message>
+    <message>
+        <location filename="../src/MainWindow.cpp" line="280"/>
+        <source>Browse your files.</source>
+        <translation>Durchsuchen Sie Ihre Dateien.</translation>
+    </message>
+    <message>
+        <location filename="../src/MainWindow.cpp" line="294"/>
+        <source>Terminal</source>
+        <translation>Terminal</translation>
+    </message>
+    <message>
+        <location filename="../src/MainWindow.cpp" line="298"/>
+        <source>Enter your commands into the Octave terminal.</source>
+        <translation>Geben Sie Ihre Befehle in das Octave Terminal ein.</translation>
+    </message>
+    <message>
+        <location filename="../src/MainWindow.cpp" line="311"/>
+        <source>Browse the Octave documentation for help.</source>
+        <translation>Durchsuchen Sie die Octave Dokumentation, um Hilfe zu erhalten.</translation>
+    </message>
+    <message>
+        <location filename="../src/MainWindow.cpp" line="320"/>
+        <source>Chat</source>
+        <translation>Chat</translation>
+    </message>
+    <message>
+        <location filename="../src/MainWindow.cpp" line="323"/>
+        <source>Instantly chat with other Octave users for help.</source>
+        <translation>Tauschen Sie sich direkt mit anderen Octave Benutzern aus, um Hilfe zu erhalten.</translation>
+    </message>
+    <message>
+        <location filename="../src/MainWindow.cpp" line="330"/>
+        <source>Octave</source>
+        <translation>Octave</translation>
+    </message>
+    <message>
+        <location filename="../src/MainWindow.cpp" line="331"/>
+        <source>Settings</source>
+        <translation>Einstellungen</translation>
+    </message>
+    <message>
+        <location filename="../src/MainWindow.cpp" line="333"/>
+        <source>Exit</source>
+        <translation>Beenden</translation>
+    </message>
+    <message>
+        <location filename="../src/MainWindow.cpp" line="335"/>
+        <source>Interface</source>
+        <translation>Oberfläche</translation>
+    </message>
+    <message>
+        <location filename="../src/MainWindow.cpp" line="337"/>
+        <source>Align Windows</source>
+        <translation>Fenster ausrichten</translation>
+    </message>
+    <message>
+        <location filename="../src/MainWindow.cpp" line="339"/>
+        <location filename="../src/MainWindow.cpp" line="351"/>
+        <source>Workspace</source>
+        <translation>Arbeitsumgebung</translation>
+    </message>
+    <message>
+        <location filename="../src/MainWindow.cpp" line="342"/>
+        <source>History</source>
+        <translation>Befehlshistorie</translation>
+    </message>
+    <message>
+        <location filename="../src/MainWindow.cpp" line="345"/>
+        <source>File Browser</source>
+        <translation>Dateibrowser</translation>
+    </message>
+    <message>
+        <location filename="../src/MainWindow.cpp" line="349"/>
+        <source>Open New Editor Window</source>
+        <translation>Neues Editorfenster öffnen</translation>
+    </message>
+    <message>
+        <location filename="../src/MainWindow.cpp" line="352"/>
+        <source>Load</source>
+        <translation>Laden</translation>
+    </message>
+    <message>
+        <location filename="../src/MainWindow.cpp" line="353"/>
+        <source>Save</source>
+        <translation>Sichern</translation>
+    </message>
+    <message>
+        <location filename="../src/MainWindow.cpp" line="355"/>
+        <source>Clear</source>
+        <translation>Löschen</translation>
+    </message>
+    <message>
+        <location filename="../src/MainWindow.cpp" line="357"/>
+        <source>Community</source>
+        <translation>Gemeinschaft</translation>
+    </message>
+    <message>
+        <location filename="../src/MainWindow.cpp" line="358"/>
+        <source>Report Bug</source>
+        <translation>Fehler melden</translation>
+    </message>
+    <message>
+        <location filename="../src/MainWindow.cpp" line="359"/>
+        <source>Agora</source>
+        <translation>Agora</translation>
+    </message>
+    <message>
+        <location filename="../src/MainWindow.cpp" line="360"/>
+        <source>Octave Forge</source>
+        <translation>Octave Forge</translation>
+    </message>
+    <message>
+        <location filename="../src/MainWindow.cpp" line="363"/>
+        <source>About Qt</source>
+        <translation>Ãœber Qt</translation>
+    </message>
+    <message>
+        <source>Octave Toolbar</source>
+        <translation type="obsolete">Octave Werkzeugleiste</translation>
+    </message>
+    <message>
+        <source>Command Window</source>
+        <translation type="obsolete">Konsolenfenster</translation>
+    </message>
+    <message>
+        <source>File Editor</source>
+        <translation type="obsolete">Dateieditor</translation>
+    </message>
+    <message>
+        <location filename="../src/MainWindow.cpp" line="307"/>
+        <source>Documentation</source>
+        <translation>Dokumentation</translation>
+    </message>
+    <message>
+        <source>Service</source>
+        <translation type="obsolete">Service</translation>
+    </message>
+    <message>
+        <source>Established link to Octave.</source>
+        <translation type="obsolete">Verbindung zu Octave hergestellt.</translation>
+    </message>
+</context>
+<context>
+    <name>NumberBar</name>
+    <message>
+        <source>Stop Here</source>
+        <translation type="obsolete">Stoppe hier</translation>
+    </message>
+    <message>
+        <source>Current Line</source>
+        <translation type="obsolete">Aktuelle Zeile</translation>
+    </message>
+    <message>
+        <source>Error Line</source>
+        <translation type="obsolete">Fehlerzeile</translation>
+    </message>
+</context>
+<context>
+    <name>NumberedCodeEdit</name>
+    <message>
+        <source>This file name is not valid.</source>
+        <translation type="obsolete">Dieser Dateiname ist nicht gültig.</translation>
+    </message>
+    <message>
+        <source>Octave doesn&apos;t understand this file name:
+</source>
+        <translation type="obsolete">Octave versteht diesen Dateityp nicht:</translation>
+    </message>
+    <message>
+        <source>
+Please, change it.
+ Do you want to save your changes?</source>
+        <translation type="obsolete">Bitte ändern Sie dies. Möchten Sie Ihre Änderungen sichern?</translation>
+    </message>
+</context>
+<context>
+    <name>SettingsDialog</name>
+    <message>
+        <location filename="../src/SettingsDialog.ui" line="29"/>
+        <source>Settings</source>
+        <translation>Einstellungen</translation>
+    </message>
+    <message>
+        <location filename="../src/SettingsDialog.ui" line="39"/>
+        <source>Chat</source>
+        <translation>Char</translation>
+    </message>
+    <message>
+        <location filename="../src/SettingsDialog.ui" line="47"/>
+        <source>Connect to #octave on startup</source>
+        <translation>Beim Start mit #octave verbinden</translation>
+    </message>
+    <message>
+        <location filename="../src/SettingsDialog.ui" line="57"/>
+        <source>Show message of the day</source>
+        <translation>Nachricht des Tages anzeigen (MOTD)</translation>
+    </message>
+    <message>
+        <location filename="../src/SettingsDialog.ui" line="64"/>
+        <source>Show topic</source>
+        <translation>Thema des Chatkanals anzeigen</translation>
+    </message>
+    <message>
+        <location filename="../src/SettingsDialog.ui" line="71"/>
+        <source>Automatically identify on NickServ</source>
+        <translation>Automatisch bei NickServ identifizieren</translation>
+    </message>
+    <message>
+        <location filename="../src/SettingsDialog.ui" line="78"/>
+        <source>Warning: Your password will be stored in ~/.octavegui in human-readable format. Do not enter your password if you worry about security issues.</source>
+        <translation>Warnung: Ihre Passwort wird unter ~/.octave-gui in einem menschenlesbaren Format gesichert. Hinterlegen Sie nicht Ihr Password, wenn Sie Bedenken über die Sicherheit haben.</translation>
+    </message>
+    <message>
+        <location filename="../src/SettingsDialog.ui" line="103"/>
+        <location filename="../src/SettingsDialog.ui" line="311"/>
+        <source>Password:</source>
+        <translation>Passwort:</translation>
+    </message>
+    <message>
+        <location filename="../src/SettingsDialog.ui" line="125"/>
+        <source>Editor</source>
+        <translation>Editor</translation>
+    </message>
+    <message>
+        <location filename="../src/SettingsDialog.ui" line="133"/>
+        <source>Use custom file editor:</source>
+        <translation>Benutzerdefinierten Editor verwenden:</translation>
+    </message>
+    <message>
+        <location filename="../src/SettingsDialog.ui" line="143"/>
+        <source>emacs</source>
+        <translation>emacs</translation>
+    </message>
+    <message>
+        <location filename="../src/SettingsDialog.ui" line="166"/>
+        <source>File Browser</source>
+        <translation>Dateibrowser</translation>
+    </message>
+    <message>
+        <location filename="../src/SettingsDialog.ui" line="172"/>
+        <source>Show filenames</source>
+        <translation>Dateinamen anzeigen</translation>
+    </message>
+    <message>
+        <location filename="../src/SettingsDialog.ui" line="179"/>
+        <source>Show file size</source>
+        <translation>Dateigröße anzeigen</translation>
+    </message>
+    <message>
+        <location filename="../src/SettingsDialog.ui" line="186"/>
+        <source>Show file type</source>
+        <translation>Dateityp anzeigen</translation>
+    </message>
+    <message>
+        <location filename="../src/SettingsDialog.ui" line="193"/>
+        <source>Show date of last modification</source>
+        <translation>Datum der letzten Änderung anzeigen</translation>
+    </message>
+    <message>
+        <location filename="../src/SettingsDialog.ui" line="200"/>
+        <source>Show hidden files</source>
+        <translation>Versteckte Dateien anzeigen</translation>
+    </message>
+    <message>
+        <location filename="../src/SettingsDialog.ui" line="207"/>
+        <source>Alternating row colors</source>
+        <translation>Alternierende Farben verwenden</translation>
+    </message>
+    <message>
+        <location filename="../src/SettingsDialog.ui" line="215"/>
+        <source>Network</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/SettingsDialog.ui" line="221"/>
+        <source>Use proxy server</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/SettingsDialog.ui" line="233"/>
+        <source>Proxy Type:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/SettingsDialog.ui" line="244"/>
+        <source>HttpProxy</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/SettingsDialog.ui" line="249"/>
+        <source>Socks5Proxy</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/SettingsDialog.ui" line="260"/>
+        <source>Hostname:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/SettingsDialog.ui" line="277"/>
+        <source>Port:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/SettingsDialog.ui" line="294"/>
+        <source>Username:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/SettingsDialog.ui" line="339"/>
+        <source>Reset to defaults</source>
+        <translation>Standardeinstellungen wiederherstellen</translation>
+    </message>
+    <message>
+        <location filename="../src/SettingsDialog.ui" line="362"/>
+        <source>Export</source>
+        <translation>Exportieren</translation>
+    </message>
+    <message>
+        <location filename="../src/SettingsDialog.ui" line="372"/>
+        <source>Import</source>
+        <translation>Importieren</translation>
+    </message>
+</context>
+<context>
+    <name>VariablesDockWidget</name>
+    <message>
+        <location filename="../src/VariablesDockWidget.cpp" line="40"/>
+        <source>Name</source>
+        <translation>Bezeichner</translation>
+    </message>
+    <message>
+        <location filename="../src/VariablesDockWidget.cpp" line="40"/>
+        <source>Type</source>
+        <translation>Typ</translation>
+    </message>
+    <message>
+        <location filename="../src/VariablesDockWidget.cpp" line="40"/>
+        <source>Value</source>
+        <translation>Wert</translation>
+    </message>
+    <message>
+        <location filename="../src/VariablesDockWidget.cpp" line="36"/>
+        <source>Workspace</source>
+        <translation>Arbeitsumgebung</translation>
+    </message>
+    <message>
+        <source>Save</source>
+        <translation type="obsolete">Sichern</translation>
+    </message>
+    <message>
+        <source>Load</source>
+        <translation type="obsolete">Laden</translation>
+    </message>
+    <message>
+        <source>Clear</source>
+        <translation type="obsolete">Löschen</translation>
+    </message>
+    <message>
+        <location filename="../src/VariablesDockWidget.cpp" line="52"/>
+        <source>Local</source>
+        <translation>Lokal</translation>
+    </message>
+    <message>
+        <location filename="../src/VariablesDockWidget.cpp" line="56"/>
+        <source>Global</source>
+        <translation>Global</translation>
+    </message>
+    <message>
+        <location filename="../src/VariablesDockWidget.cpp" line="60"/>
+        <source>Persistent</source>
+        <translation>Persistent</translation>
+    </message>
+    <message>
+        <location filename="../src/VariablesDockWidget.cpp" line="64"/>
+        <source>Hidden</source>
+        <translation>Versteckt</translation>
+    </message>
+</context>
+</TS>
Binary file libgui/languages/es-es.qm has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/libgui/languages/es-es.ts	Sat Aug 18 18:10:09 2012 -0400
@@ -0,0 +1,576 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="es_MX">
+<context>
+    <name>FileEditorMdiSubWindow</name>
+    <message>
+        <location filename="../src/FileEditorMdiSubWindow.cpp" line="114"/>
+        <location filename="../src/FileEditorMdiSubWindow.cpp" line="207"/>
+        <source>File Editor</source>
+        <translation>Editor de archivos</translation>
+    </message>
+    <message>
+        <location filename="../src/FileEditorMdiSubWindow.cpp" line="115"/>
+        <source>Cannot read file %1:
+%2.</source>
+        <translation>No se puede leer archivo %1:
+%2.</translation>
+    </message>
+    <message>
+        <location filename="../src/FileEditorMdiSubWindow.cpp" line="127"/>
+        <source>File loaded.</source>
+        <translation>Archivo cargado.</translation>
+    </message>
+    <message>
+        <location filename="../src/FileEditorMdiSubWindow.cpp" line="153"/>
+        <source>Do you want to save the current file
+%1 ?</source>
+        <translation>¿Desea guardar archivo actual
+%1 ?</translation>
+    </message>
+    <message>
+        <location filename="../src/FileEditorMdiSubWindow.cpp" line="208"/>
+        <source>Cannot write file %1:
+%2.</source>
+        <translation>No se puede escribir archivo %1:
+%2.</translation>
+    </message>
+    <message>
+        <location filename="../src/FileEditorMdiSubWindow.cpp" line="220"/>
+        <source>File %1 saved</source>
+        <translation>Archivo %1 guardado</translation>
+    </message>
+    <message>
+        <location filename="../src/FileEditorMdiSubWindow.cpp" line="383"/>
+        <source>&amp;Close File</source>
+        <translation>&amp;Cerrar archivo</translation>
+    </message>
+    <message>
+        <location filename="../src/FileEditorMdiSubWindow.cpp" line="386"/>
+        <source>&amp;New File</source>
+        <translation>Archivo &amp;nuevo</translation>
+    </message>
+    <message>
+        <location filename="../src/FileEditorMdiSubWindow.cpp" line="389"/>
+        <source>&amp;Open File</source>
+        <translation>&amp;Abrir archivo</translation>
+    </message>
+    <message>
+        <location filename="../src/FileEditorMdiSubWindow.cpp" line="392"/>
+        <source>&amp;Save File</source>
+        <translation>&amp;Guardar archivo</translation>
+    </message>
+    <message>
+        <location filename="../src/FileEditorMdiSubWindow.cpp" line="395"/>
+        <source>Save File &amp;As</source>
+        <translatorcomment>Search for proper shortcut for this command</translatorcomment>
+        <translation>Guardar archivo &amp;como</translation>
+    </message>
+    <message>
+        <location filename="../src/FileEditorMdiSubWindow.cpp" line="398"/>
+        <source>&amp;Undo</source>
+        <translation>&amp;Deshacer</translation>
+    </message>
+    <message>
+        <location filename="../src/FileEditorMdiSubWindow.cpp" line="401"/>
+        <source>&amp;Redo</source>
+        <translation>&amp;Rehacer</translation>
+    </message>
+    <message>
+        <location filename="../src/FileEditorMdiSubWindow.cpp" line="402"/>
+        <source>&amp;Copy</source>
+        <translation>&amp;Copiar</translation>
+    </message>
+    <message>
+        <location filename="../src/FileEditorMdiSubWindow.cpp" line="403"/>
+        <source>Cu&amp;t</source>
+        <translation>Cor&amp;tar</translation>
+    </message>
+    <message>
+        <location filename="../src/FileEditorMdiSubWindow.cpp" line="404"/>
+        <source>&amp;Paste</source>
+        <translation>&amp;Pegar</translation>
+    </message>
+    <message>
+        <location filename="../src/FileEditorMdiSubWindow.cpp" line="405"/>
+        <source>&amp;Next Bookmark</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/FileEditorMdiSubWindow.cpp" line="406"/>
+        <source>Pre&amp;vious Bookmark</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/FileEditorMdiSubWindow.cpp" line="407"/>
+        <source>Toggle &amp;Bookmark</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/FileEditorMdiSubWindow.cpp" line="410"/>
+        <source>&amp;Run File</source>
+        <translation>&amp;Ejecutar archivo</translation>
+    </message>
+    <message>
+        <location filename="../src/FileEditorMdiSubWindow.cpp" line="449"/>
+        <source>&amp;File</source>
+        <translation>&amp;Archivo</translation>
+    </message>
+    <message>
+        <location filename="../src/FileEditorMdiSubWindow.cpp" line="457"/>
+        <source>&amp;Edit</source>
+        <translation>&amp;Editar</translation>
+    </message>
+    <message>
+        <location filename="../src/FileEditorMdiSubWindow.cpp" line="469"/>
+        <source>&amp;Run</source>
+        <translation>&amp;Ejecutar</translation>
+    </message>
+</context>
+<context>
+    <name>FilesDockWidget</name>
+    <message>
+        <source>Current Folder</source>
+        <translation type="obsolete">Carpeta actual</translation>
+    </message>
+    <message>
+        <location filename="../src/FilesDockWidget.cpp" line="32"/>
+        <source>Current Directory</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/FilesDockWidget.cpp" line="46"/>
+        <source>Move up one directory.</source>
+        <translation>Subir un directorio.</translation>
+    </message>
+    <message>
+        <location filename="../src/FilesDockWidget.cpp" line="49"/>
+        <source>Enter the path or filename.</source>
+        <translation>Introduzca dirección o nombre de archivo.</translation>
+    </message>
+    <message>
+        <location filename="../src/FilesDockWidget.cpp" line="78"/>
+        <source>Doubleclick a file to open it.</source>
+        <translation>Haga doble clic para abir archivo.</translation>
+    </message>
+</context>
+<context>
+    <name>HistoryDockWidget</name>
+    <message>
+        <location filename="../src/HistoryDockWidget.cpp" line="36"/>
+        <source>Doubleclick a command to transfer it to the terminal.</source>
+        <translation>Haga doble clic para transferir el comando a la terminal.</translation>
+    </message>
+    <message>
+        <location filename="../src/HistoryDockWidget.cpp" line="38"/>
+        <source>Enter text to filter the command history.</source>
+        <translation>Introduzca texto para filtrar el historial de comandos.</translation>
+    </message>
+    <message>
+        <location filename="../src/HistoryDockWidget.cpp" line="41"/>
+        <source>Command History</source>
+        <translation>Historial de comandos</translation>
+    </message>
+</context>
+<context>
+    <name>LexerOctaveGui</name>
+    <message>
+        <location filename="../src/lexer/lexeroctavegui.cpp" line="111"/>
+        <source>Default</source>
+        <translation>Valores predeterminados</translation>
+    </message>
+    <message>
+        <location filename="../src/lexer/lexeroctavegui.cpp" line="113"/>
+        <source>Comment</source>
+        <translation>Comentario</translation>
+    </message>
+    <message>
+        <location filename="../src/lexer/lexeroctavegui.cpp" line="115"/>
+        <source>Command</source>
+        <translation>Comando</translation>
+    </message>
+    <message>
+        <location filename="../src/lexer/lexeroctavegui.cpp" line="117"/>
+        <source>Number</source>
+        <translation>Número</translation>
+    </message>
+    <message>
+        <location filename="../src/lexer/lexeroctavegui.cpp" line="119"/>
+        <source>Keyword</source>
+        <translation>Contraseña</translation>
+    </message>
+    <message>
+        <location filename="../src/lexer/lexeroctavegui.cpp" line="121"/>
+        <source>Single-quoted string</source>
+        <translation>Cadena entre comillas simples</translation>
+    </message>
+    <message>
+        <location filename="../src/lexer/lexeroctavegui.cpp" line="123"/>
+        <source>Operator</source>
+        <translation>Operador</translation>
+    </message>
+    <message>
+        <location filename="../src/lexer/lexeroctavegui.cpp" line="125"/>
+        <source>Identifier</source>
+        <translation>Identificador</translation>
+    </message>
+    <message>
+        <location filename="../src/lexer/lexeroctavegui.cpp" line="127"/>
+        <source>Double-quoted string</source>
+        <translation>Cadena entre comillas dobles</translation>
+    </message>
+</context>
+<context>
+    <name>MainWindow</name>
+    <message>
+        <location filename="../src/MainWindow.cpp" line="47"/>
+        <source>Opening file.</source>
+        <translation>Abriendo archivo.</translation>
+    </message>
+    <message>
+        <location filename="../src/MainWindow.cpp" line="124"/>
+        <source>Save Workspace</source>
+        <translation>Guardar espacio de trabajo</translation>
+    </message>
+    <message>
+        <location filename="../src/MainWindow.cpp" line="134"/>
+        <source>Load Workspace</source>
+        <translation>Cargar espacio de trabajo</translation>
+    </message>
+    <message>
+        <location filename="../src/MainWindow.cpp" line="226"/>
+        <location filename="../src/MainWindow.cpp" line="362"/>
+        <source>About Octave</source>
+        <translation>Acerca de Octave</translation>
+    </message>
+    <message>
+        <location filename="../src/MainWindow.cpp" line="238"/>
+        <source>Saving data and shutting down.</source>
+        <translation>Guardando datos y cerrando el sistema.</translation>
+    </message>
+    <message>
+        <location filename="../src/MainWindow.cpp" line="276"/>
+        <source>View the variables in the active workspace.</source>
+        <translation>Ver variables en el espacio de trabajo activo.</translation>
+    </message>
+    <message>
+        <location filename="../src/MainWindow.cpp" line="278"/>
+        <source>Browse and search the command history.</source>
+        <translation>Navegar y buscar en el historial de comandos.</translation>
+    </message>
+    <message>
+        <location filename="../src/MainWindow.cpp" line="280"/>
+        <source>Browse your files.</source>
+        <translation>Explorar sus archivos.</translation>
+    </message>
+    <message>
+        <location filename="../src/MainWindow.cpp" line="294"/>
+        <source>Terminal</source>
+        <translation>Terminal</translation>
+    </message>
+    <message>
+        <location filename="../src/MainWindow.cpp" line="298"/>
+        <source>Enter your commands into the Octave terminal.</source>
+        <translation>Introducir su comando a la terminal de Octave.</translation>
+    </message>
+    <message>
+        <location filename="../src/MainWindow.cpp" line="307"/>
+        <source>Documentation</source>
+        <translation>Documentación</translation>
+    </message>
+    <message>
+        <location filename="../src/MainWindow.cpp" line="311"/>
+        <source>Browse the Octave documentation for help.</source>
+        <translation>Consultar la documentación de Octave para obtener ayuda.</translation>
+    </message>
+    <message>
+        <location filename="../src/MainWindow.cpp" line="320"/>
+        <source>Chat</source>
+        <translation>Chat/conversación instantanea</translation>
+    </message>
+    <message>
+        <location filename="../src/MainWindow.cpp" line="323"/>
+        <source>Instantly chat with other Octave users for help.</source>
+        <translation>Coversación instantanea con otros usuarios de octave para obtener ayuda.</translation>
+    </message>
+    <message>
+        <location filename="../src/MainWindow.cpp" line="330"/>
+        <source>Octave</source>
+        <translation>Octave</translation>
+    </message>
+    <message>
+        <location filename="../src/MainWindow.cpp" line="331"/>
+        <source>Settings</source>
+        <translation>Configuración</translation>
+    </message>
+    <message>
+        <location filename="../src/MainWindow.cpp" line="333"/>
+        <source>Exit</source>
+        <translation>Salir</translation>
+    </message>
+    <message>
+        <location filename="../src/MainWindow.cpp" line="335"/>
+        <source>Interface</source>
+        <translation>Interfase</translation>
+    </message>
+    <message>
+        <location filename="../src/MainWindow.cpp" line="337"/>
+        <source>Align Windows</source>
+        <translation>Alinear ventanas</translation>
+    </message>
+    <message>
+        <location filename="../src/MainWindow.cpp" line="339"/>
+        <location filename="../src/MainWindow.cpp" line="351"/>
+        <source>Workspace</source>
+        <translation>Espacio de trabajo</translation>
+    </message>
+    <message>
+        <location filename="../src/MainWindow.cpp" line="342"/>
+        <source>History</source>
+        <translation>Historial</translation>
+    </message>
+    <message>
+        <location filename="../src/MainWindow.cpp" line="345"/>
+        <source>File Browser</source>
+        <translation>Explorador de archivos</translation>
+    </message>
+    <message>
+        <location filename="../src/MainWindow.cpp" line="349"/>
+        <source>Open New Editor Window</source>
+        <translation>Abrir nueva ventana de editor</translation>
+    </message>
+    <message>
+        <location filename="../src/MainWindow.cpp" line="352"/>
+        <source>Load</source>
+        <translation>Cargar</translation>
+    </message>
+    <message>
+        <location filename="../src/MainWindow.cpp" line="353"/>
+        <source>Save</source>
+        <translation>Guardar</translation>
+    </message>
+    <message>
+        <location filename="../src/MainWindow.cpp" line="355"/>
+        <source>Clear</source>
+        <translation>Limpiar</translation>
+    </message>
+    <message>
+        <location filename="../src/MainWindow.cpp" line="357"/>
+        <source>Community</source>
+        <translation>Comunidad</translation>
+    </message>
+    <message>
+        <location filename="../src/MainWindow.cpp" line="358"/>
+        <source>Report Bug</source>
+        <translation>Reportar error de software/Bug</translation>
+    </message>
+    <message>
+        <location filename="../src/MainWindow.cpp" line="359"/>
+        <source>Agora</source>
+        <translation>Ãgora</translation>
+    </message>
+    <message>
+        <location filename="../src/MainWindow.cpp" line="360"/>
+        <source>Octave Forge</source>
+        <translation>Octave Forge</translation>
+    </message>
+    <message>
+        <location filename="../src/MainWindow.cpp" line="363"/>
+        <source>About Qt</source>
+        <translation>Acerca de Qt</translation>
+    </message>
+</context>
+<context>
+    <name>SettingsDialog</name>
+    <message>
+        <location filename="../src/SettingsDialog.ui" line="29"/>
+        <source>Settings</source>
+        <translation>Configuración</translation>
+    </message>
+    <message>
+        <location filename="../src/SettingsDialog.ui" line="39"/>
+        <source>Chat</source>
+        <translation>Chat/conversación instantanea</translation>
+    </message>
+    <message>
+        <location filename="../src/SettingsDialog.ui" line="47"/>
+        <source>Connect to #octave on startup</source>
+        <translation>Conectar a #octave en el arranque</translation>
+    </message>
+    <message>
+        <location filename="../src/SettingsDialog.ui" line="57"/>
+        <source>Show message of the day</source>
+        <translation>Mostrar mensaje del día</translation>
+    </message>
+    <message>
+        <location filename="../src/SettingsDialog.ui" line="64"/>
+        <source>Show topic</source>
+        <translation>Mostrar tema</translation>
+    </message>
+    <message>
+        <location filename="../src/SettingsDialog.ui" line="71"/>
+        <source>Automatically identify on NickServ</source>
+        <translation>Identificar automáticamente el NickServ</translation>
+    </message>
+    <message>
+        <location filename="../src/SettingsDialog.ui" line="78"/>
+        <source>Warning: Your password will be stored in ~/.octavegui in human-readable format. Do not enter your password if you worry about security issues.</source>
+        <translatorcomment>Advertencia: La contraseña se guarda en ~ / octavegui en formato legible. No introduzca su contraseña en caso de que le preocupen los aspectos de seguridad.</translatorcomment>
+        <translation></translation>
+    </message>
+    <message>
+        <location filename="../src/SettingsDialog.ui" line="103"/>
+        <location filename="../src/SettingsDialog.ui" line="311"/>
+        <source>Password:</source>
+        <translation>Contraseña:</translation>
+    </message>
+    <message>
+        <location filename="../src/SettingsDialog.ui" line="125"/>
+        <source>Editor</source>
+        <translation>Editor</translation>
+    </message>
+    <message>
+        <location filename="../src/SettingsDialog.ui" line="133"/>
+        <source>Use custom file editor:</source>
+        <translation>Usar editor de archivos personalizados:</translation>
+    </message>
+    <message>
+        <location filename="../src/SettingsDialog.ui" line="143"/>
+        <source>emacs</source>
+        <translation>emacs</translation>
+    </message>
+    <message>
+        <location filename="../src/SettingsDialog.ui" line="166"/>
+        <source>File Browser</source>
+        <translation>Explorador de archivos</translation>
+    </message>
+    <message>
+        <location filename="../src/SettingsDialog.ui" line="172"/>
+        <source>Show filenames</source>
+        <translation>Mostrar nombres de archivos</translation>
+    </message>
+    <message>
+        <location filename="../src/SettingsDialog.ui" line="179"/>
+        <source>Show file size</source>
+        <translation>Mostrar tamaño de archivo</translation>
+    </message>
+    <message>
+        <location filename="../src/SettingsDialog.ui" line="186"/>
+        <source>Show file type</source>
+        <translation>Mostrar tipo de archivo</translation>
+    </message>
+    <message>
+        <location filename="../src/SettingsDialog.ui" line="193"/>
+        <source>Show date of last modification</source>
+        <translation>Mostrar fecha de la última modificación</translation>
+    </message>
+    <message>
+        <location filename="../src/SettingsDialog.ui" line="200"/>
+        <source>Show hidden files</source>
+        <translation>Mostrar archivos ocultos</translation>
+    </message>
+    <message>
+        <location filename="../src/SettingsDialog.ui" line="207"/>
+        <source>Alternating row colors</source>
+        <translation>Colores alternos de filas</translation>
+    </message>
+    <message>
+        <location filename="../src/SettingsDialog.ui" line="215"/>
+        <source>Network</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/SettingsDialog.ui" line="221"/>
+        <source>Use proxy server</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/SettingsDialog.ui" line="233"/>
+        <source>Proxy Type:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/SettingsDialog.ui" line="244"/>
+        <source>HttpProxy</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/SettingsDialog.ui" line="249"/>
+        <source>Socks5Proxy</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/SettingsDialog.ui" line="260"/>
+        <source>Hostname:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/SettingsDialog.ui" line="277"/>
+        <source>Port:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/SettingsDialog.ui" line="294"/>
+        <source>Username:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/SettingsDialog.ui" line="339"/>
+        <source>Reset to defaults</source>
+        <translation>Restaurar los valores predeterminados</translation>
+    </message>
+    <message>
+        <location filename="../src/SettingsDialog.ui" line="362"/>
+        <source>Export</source>
+        <translation>Exportar</translation>
+    </message>
+    <message>
+        <location filename="../src/SettingsDialog.ui" line="372"/>
+        <source>Import</source>
+        <translation>Importar</translation>
+    </message>
+</context>
+<context>
+    <name>VariablesDockWidget</name>
+    <message>
+        <location filename="../src/VariablesDockWidget.cpp" line="36"/>
+        <source>Workspace</source>
+        <translation>Espacio de trabajo</translation>
+    </message>
+    <message>
+        <location filename="../src/VariablesDockWidget.cpp" line="40"/>
+        <source>Name</source>
+        <translation>Nombre</translation>
+    </message>
+    <message>
+        <location filename="../src/VariablesDockWidget.cpp" line="40"/>
+        <source>Type</source>
+        <translation>Tipo</translation>
+    </message>
+    <message>
+        <location filename="../src/VariablesDockWidget.cpp" line="40"/>
+        <source>Value</source>
+        <translation>Valor</translation>
+    </message>
+    <message>
+        <location filename="../src/VariablesDockWidget.cpp" line="52"/>
+        <source>Local</source>
+        <translation>Local</translation>
+    </message>
+    <message>
+        <location filename="../src/VariablesDockWidget.cpp" line="56"/>
+        <source>Global</source>
+        <translation>Global</translation>
+    </message>
+    <message>
+        <location filename="../src/VariablesDockWidget.cpp" line="60"/>
+        <source>Persistent</source>
+        <translation>Persistente</translation>
+    </message>
+    <message>
+        <location filename="../src/VariablesDockWidget.cpp" line="64"/>
+        <source>Hidden</source>
+        <translation>Oculto</translation>
+    </message>
+</context>
+</TS>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/libgui/languages/generic.qm	Sat Aug 18 18:10:09 2012 -0400
@@ -0,0 +1,1 @@
+<¸dÊÍ!¿`¡½Ý
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/libgui/languages/generic.ts	Sat Aug 18 18:10:09 2012 -0400
@@ -0,0 +1,567 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0">
+<context>
+    <name>FileEditorMdiSubWindow</name>
+    <message>
+        <location filename="../src/FileEditorMdiSubWindow.cpp" line="114"/>
+        <location filename="../src/FileEditorMdiSubWindow.cpp" line="207"/>
+        <source>File Editor</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/FileEditorMdiSubWindow.cpp" line="115"/>
+        <source>Cannot read file %1:
+%2.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/FileEditorMdiSubWindow.cpp" line="127"/>
+        <source>File loaded.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/FileEditorMdiSubWindow.cpp" line="153"/>
+        <source>Do you want to save the current file
+%1 ?</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/FileEditorMdiSubWindow.cpp" line="208"/>
+        <source>Cannot write file %1:
+%2.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/FileEditorMdiSubWindow.cpp" line="220"/>
+        <source>File %1 saved</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/FileEditorMdiSubWindow.cpp" line="383"/>
+        <source>&amp;Close File</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/FileEditorMdiSubWindow.cpp" line="386"/>
+        <source>&amp;New File</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/FileEditorMdiSubWindow.cpp" line="389"/>
+        <source>&amp;Open File</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/FileEditorMdiSubWindow.cpp" line="392"/>
+        <source>&amp;Save File</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/FileEditorMdiSubWindow.cpp" line="395"/>
+        <source>Save File &amp;As</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/FileEditorMdiSubWindow.cpp" line="398"/>
+        <source>&amp;Undo</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/FileEditorMdiSubWindow.cpp" line="401"/>
+        <source>&amp;Redo</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/FileEditorMdiSubWindow.cpp" line="402"/>
+        <source>&amp;Copy</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/FileEditorMdiSubWindow.cpp" line="403"/>
+        <source>Cu&amp;t</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/FileEditorMdiSubWindow.cpp" line="404"/>
+        <source>&amp;Paste</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/FileEditorMdiSubWindow.cpp" line="405"/>
+        <source>&amp;Next Bookmark</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/FileEditorMdiSubWindow.cpp" line="406"/>
+        <source>Pre&amp;vious Bookmark</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/FileEditorMdiSubWindow.cpp" line="407"/>
+        <source>Toggle &amp;Bookmark</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/FileEditorMdiSubWindow.cpp" line="410"/>
+        <source>&amp;Run File</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/FileEditorMdiSubWindow.cpp" line="449"/>
+        <source>&amp;File</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/FileEditorMdiSubWindow.cpp" line="457"/>
+        <source>&amp;Edit</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/FileEditorMdiSubWindow.cpp" line="469"/>
+        <source>&amp;Run</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>FilesDockWidget</name>
+    <message>
+        <location filename="../src/FilesDockWidget.cpp" line="32"/>
+        <source>Current Directory</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/FilesDockWidget.cpp" line="46"/>
+        <source>Move up one directory.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/FilesDockWidget.cpp" line="49"/>
+        <source>Enter the path or filename.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/FilesDockWidget.cpp" line="78"/>
+        <source>Doubleclick a file to open it.</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>HistoryDockWidget</name>
+    <message>
+        <location filename="../src/HistoryDockWidget.cpp" line="36"/>
+        <source>Doubleclick a command to transfer it to the terminal.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/HistoryDockWidget.cpp" line="38"/>
+        <source>Enter text to filter the command history.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/HistoryDockWidget.cpp" line="41"/>
+        <source>Command History</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>LexerOctaveGui</name>
+    <message>
+        <location filename="../src/lexer/lexeroctavegui.cpp" line="111"/>
+        <source>Default</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/lexer/lexeroctavegui.cpp" line="113"/>
+        <source>Comment</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/lexer/lexeroctavegui.cpp" line="115"/>
+        <source>Command</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/lexer/lexeroctavegui.cpp" line="117"/>
+        <source>Number</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/lexer/lexeroctavegui.cpp" line="119"/>
+        <source>Keyword</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/lexer/lexeroctavegui.cpp" line="121"/>
+        <source>Single-quoted string</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/lexer/lexeroctavegui.cpp" line="123"/>
+        <source>Operator</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/lexer/lexeroctavegui.cpp" line="125"/>
+        <source>Identifier</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/lexer/lexeroctavegui.cpp" line="127"/>
+        <source>Double-quoted string</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>MainWindow</name>
+    <message>
+        <location filename="../src/MainWindow.cpp" line="47"/>
+        <source>Opening file.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/MainWindow.cpp" line="124"/>
+        <source>Save Workspace</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/MainWindow.cpp" line="134"/>
+        <source>Load Workspace</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/MainWindow.cpp" line="226"/>
+        <location filename="../src/MainWindow.cpp" line="362"/>
+        <source>About Octave</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/MainWindow.cpp" line="238"/>
+        <source>Saving data and shutting down.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/MainWindow.cpp" line="276"/>
+        <source>View the variables in the active workspace.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/MainWindow.cpp" line="278"/>
+        <source>Browse and search the command history.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/MainWindow.cpp" line="280"/>
+        <source>Browse your files.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/MainWindow.cpp" line="294"/>
+        <source>Terminal</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/MainWindow.cpp" line="298"/>
+        <source>Enter your commands into the Octave terminal.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/MainWindow.cpp" line="307"/>
+        <source>Documentation</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/MainWindow.cpp" line="311"/>
+        <source>Browse the Octave documentation for help.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/MainWindow.cpp" line="320"/>
+        <source>Chat</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/MainWindow.cpp" line="323"/>
+        <source>Instantly chat with other Octave users for help.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/MainWindow.cpp" line="330"/>
+        <source>Octave</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/MainWindow.cpp" line="331"/>
+        <source>Settings</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/MainWindow.cpp" line="333"/>
+        <source>Exit</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/MainWindow.cpp" line="335"/>
+        <source>Interface</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/MainWindow.cpp" line="337"/>
+        <source>Align Windows</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/MainWindow.cpp" line="339"/>
+        <location filename="../src/MainWindow.cpp" line="351"/>
+        <source>Workspace</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/MainWindow.cpp" line="342"/>
+        <source>History</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/MainWindow.cpp" line="345"/>
+        <source>File Browser</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/MainWindow.cpp" line="349"/>
+        <source>Open New Editor Window</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/MainWindow.cpp" line="352"/>
+        <source>Load</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/MainWindow.cpp" line="353"/>
+        <source>Save</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/MainWindow.cpp" line="355"/>
+        <source>Clear</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/MainWindow.cpp" line="357"/>
+        <source>Community</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/MainWindow.cpp" line="358"/>
+        <source>Report Bug</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/MainWindow.cpp" line="359"/>
+        <source>Agora</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/MainWindow.cpp" line="360"/>
+        <source>Octave Forge</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/MainWindow.cpp" line="363"/>
+        <source>About Qt</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>SettingsDialog</name>
+    <message>
+        <location filename="../src/SettingsDialog.ui" line="29"/>
+        <source>Settings</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/SettingsDialog.ui" line="39"/>
+        <source>Chat</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/SettingsDialog.ui" line="47"/>
+        <source>Connect to #octave on startup</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/SettingsDialog.ui" line="57"/>
+        <source>Show message of the day</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/SettingsDialog.ui" line="64"/>
+        <source>Show topic</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/SettingsDialog.ui" line="71"/>
+        <source>Automatically identify on NickServ</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/SettingsDialog.ui" line="78"/>
+        <source>Warning: Your password will be stored in ~/.octavegui in human-readable format. Do not enter your password if you worry about security issues.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/SettingsDialog.ui" line="103"/>
+        <location filename="../src/SettingsDialog.ui" line="311"/>
+        <source>Password:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/SettingsDialog.ui" line="125"/>
+        <source>Editor</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/SettingsDialog.ui" line="133"/>
+        <source>Use custom file editor:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/SettingsDialog.ui" line="143"/>
+        <source>emacs</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/SettingsDialog.ui" line="166"/>
+        <source>File Browser</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/SettingsDialog.ui" line="172"/>
+        <source>Show filenames</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/SettingsDialog.ui" line="179"/>
+        <source>Show file size</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/SettingsDialog.ui" line="186"/>
+        <source>Show file type</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/SettingsDialog.ui" line="193"/>
+        <source>Show date of last modification</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/SettingsDialog.ui" line="200"/>
+        <source>Show hidden files</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/SettingsDialog.ui" line="207"/>
+        <source>Alternating row colors</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/SettingsDialog.ui" line="215"/>
+        <source>Network</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/SettingsDialog.ui" line="221"/>
+        <source>Use proxy server</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/SettingsDialog.ui" line="233"/>
+        <source>Proxy Type:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/SettingsDialog.ui" line="244"/>
+        <source>HttpProxy</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/SettingsDialog.ui" line="249"/>
+        <source>Socks5Proxy</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/SettingsDialog.ui" line="260"/>
+        <source>Hostname:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/SettingsDialog.ui" line="277"/>
+        <source>Port:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/SettingsDialog.ui" line="294"/>
+        <source>Username:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/SettingsDialog.ui" line="339"/>
+        <source>Reset to defaults</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/SettingsDialog.ui" line="362"/>
+        <source>Export</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/SettingsDialog.ui" line="372"/>
+        <source>Import</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>VariablesDockWidget</name>
+    <message>
+        <location filename="../src/VariablesDockWidget.cpp" line="36"/>
+        <source>Workspace</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/VariablesDockWidget.cpp" line="40"/>
+        <source>Name</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/VariablesDockWidget.cpp" line="40"/>
+        <source>Type</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/VariablesDockWidget.cpp" line="40"/>
+        <source>Value</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/VariablesDockWidget.cpp" line="52"/>
+        <source>Local</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/VariablesDockWidget.cpp" line="56"/>
+        <source>Global</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/VariablesDockWidget.cpp" line="60"/>
+        <source>Persistent</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/VariablesDockWidget.cpp" line="64"/>
+        <source>Hidden</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+</TS>
Binary file libgui/languages/pt-br.qm has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/libgui/languages/pt-br.ts	Sat Aug 18 18:10:09 2012 -0400
@@ -0,0 +1,571 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="pt_BR" sourcelanguage="en">
+<context>
+    <name>FileEditorMdiSubWindow</name>
+    <message>
+        <location filename="../src/FileEditorMdiSubWindow.cpp" line="114"/>
+        <location filename="../src/FileEditorMdiSubWindow.cpp" line="207"/>
+        <source>File Editor</source>
+        <translation>Editor de Arquivos</translation>
+    </message>
+    <message>
+        <location filename="../src/FileEditorMdiSubWindow.cpp" line="115"/>
+        <source>Cannot read file %1:
+%2.</source>
+        <translation>Não foi possível ler o arquivo %1: %2.</translation>
+    </message>
+    <message>
+        <location filename="../src/FileEditorMdiSubWindow.cpp" line="127"/>
+        <source>File loaded.</source>
+        <translation>Arquivo carregado.</translation>
+    </message>
+    <message>
+        <location filename="../src/FileEditorMdiSubWindow.cpp" line="153"/>
+        <source>Do you want to save the current file
+%1 ?</source>
+        <translation>Você deseja salvar o arquivo atual %1 ?</translation>
+    </message>
+    <message>
+        <location filename="../src/FileEditorMdiSubWindow.cpp" line="208"/>
+        <source>Cannot write file %1:
+%2.</source>
+        <translation>Não foi possível escrever no arquivo %1: %2.</translation>
+    </message>
+    <message>
+        <location filename="../src/FileEditorMdiSubWindow.cpp" line="220"/>
+        <source>File %1 saved</source>
+        <translation>Arquivo %1 salvo</translation>
+    </message>
+    <message>
+        <location filename="../src/FileEditorMdiSubWindow.cpp" line="383"/>
+        <source>&amp;Close File</source>
+        <translation>&amp;Fechar Arquivo</translation>
+    </message>
+    <message>
+        <location filename="../src/FileEditorMdiSubWindow.cpp" line="386"/>
+        <source>&amp;New File</source>
+        <translation>&amp;Novo Arquivo</translation>
+    </message>
+    <message>
+        <location filename="../src/FileEditorMdiSubWindow.cpp" line="389"/>
+        <source>&amp;Open File</source>
+        <translation>&amp;Abrir Arquivo</translation>
+    </message>
+    <message>
+        <location filename="../src/FileEditorMdiSubWindow.cpp" line="392"/>
+        <source>&amp;Save File</source>
+        <translation>&amp;Salvar Arquivo</translation>
+    </message>
+    <message>
+        <location filename="../src/FileEditorMdiSubWindow.cpp" line="395"/>
+        <source>Save File &amp;As</source>
+        <translation>Salvar Arquivo &amp;Como</translation>
+    </message>
+    <message>
+        <location filename="../src/FileEditorMdiSubWindow.cpp" line="398"/>
+        <source>&amp;Undo</source>
+        <translation>&amp;Desfazer</translation>
+    </message>
+    <message>
+        <location filename="../src/FileEditorMdiSubWindow.cpp" line="401"/>
+        <source>&amp;Redo</source>
+        <translation>&amp;Refazer</translation>
+    </message>
+    <message>
+        <location filename="../src/FileEditorMdiSubWindow.cpp" line="402"/>
+        <source>&amp;Copy</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/FileEditorMdiSubWindow.cpp" line="403"/>
+        <source>Cu&amp;t</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/FileEditorMdiSubWindow.cpp" line="404"/>
+        <source>&amp;Paste</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/FileEditorMdiSubWindow.cpp" line="405"/>
+        <source>&amp;Next Bookmark</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/FileEditorMdiSubWindow.cpp" line="406"/>
+        <source>Pre&amp;vious Bookmark</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/FileEditorMdiSubWindow.cpp" line="407"/>
+        <source>Toggle &amp;Bookmark</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/FileEditorMdiSubWindow.cpp" line="410"/>
+        <source>&amp;Run File</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/FileEditorMdiSubWindow.cpp" line="449"/>
+        <source>&amp;File</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/FileEditorMdiSubWindow.cpp" line="457"/>
+        <source>&amp;Edit</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/FileEditorMdiSubWindow.cpp" line="469"/>
+        <source>&amp;Run</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>FilesDockWidget</name>
+    <message>
+        <source>Current Folder</source>
+        <translation type="obsolete">Diretório Atual</translation>
+    </message>
+    <message>
+        <location filename="../src/FilesDockWidget.cpp" line="32"/>
+        <source>Current Directory</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/FilesDockWidget.cpp" line="46"/>
+        <source>Move up one directory.</source>
+        <translation>Subir um diretório.</translation>
+    </message>
+    <message>
+        <location filename="../src/FilesDockWidget.cpp" line="49"/>
+        <source>Enter the path or filename.</source>
+        <translation>Digite o caminho ou o nome do arquivo.</translation>
+    </message>
+    <message>
+        <location filename="../src/FilesDockWidget.cpp" line="78"/>
+        <source>Doubleclick a file to open it.</source>
+        <translation>Clique duas vezes num arquivo para abrí-lo.</translation>
+    </message>
+</context>
+<context>
+    <name>HistoryDockWidget</name>
+    <message>
+        <location filename="../src/HistoryDockWidget.cpp" line="36"/>
+        <source>Doubleclick a command to transfer it to the terminal.</source>
+        <translation>Clique duas vezes num comando para transferí-lo ao terminal.</translation>
+    </message>
+    <message>
+        <location filename="../src/HistoryDockWidget.cpp" line="38"/>
+        <source>Enter text to filter the command history.</source>
+        <translation>Digite um texto para filtrar o hitórico de comandos.</translation>
+    </message>
+    <message>
+        <location filename="../src/HistoryDockWidget.cpp" line="41"/>
+        <source>Command History</source>
+        <translation>Histórico de Comandos</translation>
+    </message>
+</context>
+<context>
+    <name>LexerOctaveGui</name>
+    <message>
+        <location filename="../src/lexer/lexeroctavegui.cpp" line="111"/>
+        <source>Default</source>
+        <translation>Padrão</translation>
+    </message>
+    <message>
+        <location filename="../src/lexer/lexeroctavegui.cpp" line="113"/>
+        <source>Comment</source>
+        <translation>Comentário</translation>
+    </message>
+    <message>
+        <location filename="../src/lexer/lexeroctavegui.cpp" line="115"/>
+        <source>Command</source>
+        <translation>Comando</translation>
+    </message>
+    <message>
+        <location filename="../src/lexer/lexeroctavegui.cpp" line="117"/>
+        <source>Number</source>
+        <translation>Número</translation>
+    </message>
+    <message>
+        <location filename="../src/lexer/lexeroctavegui.cpp" line="119"/>
+        <source>Keyword</source>
+        <translation>Palavra-Chave</translation>
+    </message>
+    <message>
+        <location filename="../src/lexer/lexeroctavegui.cpp" line="121"/>
+        <source>Single-quoted string</source>
+        <translation>String com aspas simples</translation>
+    </message>
+    <message>
+        <location filename="../src/lexer/lexeroctavegui.cpp" line="123"/>
+        <source>Operator</source>
+        <translation>Operador</translation>
+    </message>
+    <message>
+        <location filename="../src/lexer/lexeroctavegui.cpp" line="125"/>
+        <source>Identifier</source>
+        <translation>Identificador</translation>
+    </message>
+    <message>
+        <location filename="../src/lexer/lexeroctavegui.cpp" line="127"/>
+        <source>Double-quoted string</source>
+        <translation>String com aspas duplas</translation>
+    </message>
+</context>
+<context>
+    <name>MainWindow</name>
+    <message>
+        <location filename="../src/MainWindow.cpp" line="47"/>
+        <source>Opening file.</source>
+        <translation>Abrindo arquivo.</translation>
+    </message>
+    <message>
+        <location filename="../src/MainWindow.cpp" line="124"/>
+        <source>Save Workspace</source>
+        <translation>Salvar ambiente de trabalho</translation>
+    </message>
+    <message>
+        <location filename="../src/MainWindow.cpp" line="134"/>
+        <source>Load Workspace</source>
+        <translation>Carregar ambiente de trabalho</translation>
+    </message>
+    <message>
+        <location filename="../src/MainWindow.cpp" line="226"/>
+        <location filename="../src/MainWindow.cpp" line="362"/>
+        <source>About Octave</source>
+        <translation>Sobre o Octave</translation>
+    </message>
+    <message>
+        <location filename="../src/MainWindow.cpp" line="238"/>
+        <source>Saving data and shutting down.</source>
+        <translation>Salvando dados e encerrando a sessão.</translation>
+    </message>
+    <message>
+        <location filename="../src/MainWindow.cpp" line="276"/>
+        <source>View the variables in the active workspace.</source>
+        <translation>Visualizar variáveis no ambiente de trabalho.</translation>
+    </message>
+    <message>
+        <location filename="../src/MainWindow.cpp" line="278"/>
+        <source>Browse and search the command history.</source>
+        <translation>Pesquise no histórico de comandos.</translation>
+    </message>
+    <message>
+        <location filename="../src/MainWindow.cpp" line="280"/>
+        <source>Browse your files.</source>
+        <translation>Procure seus arquivos.</translation>
+    </message>
+    <message>
+        <location filename="../src/MainWindow.cpp" line="294"/>
+        <source>Terminal</source>
+        <translation>Terminal</translation>
+    </message>
+    <message>
+        <location filename="../src/MainWindow.cpp" line="298"/>
+        <source>Enter your commands into the Octave terminal.</source>
+        <translation>Digite seus comandos no terminal do Octave.</translation>
+    </message>
+    <message>
+        <location filename="../src/MainWindow.cpp" line="307"/>
+        <source>Documentation</source>
+        <translation>Documentação</translation>
+    </message>
+    <message>
+        <location filename="../src/MainWindow.cpp" line="311"/>
+        <source>Browse the Octave documentation for help.</source>
+        <translation>Procure na documentação do Octave.</translation>
+    </message>
+    <message>
+        <location filename="../src/MainWindow.cpp" line="320"/>
+        <source>Chat</source>
+        <translation>Chat</translation>
+    </message>
+    <message>
+        <location filename="../src/MainWindow.cpp" line="323"/>
+        <source>Instantly chat with other Octave users for help.</source>
+        <translation>Converse instantaneamente com outros usuários do Octave para pedir ajuda.</translation>
+    </message>
+    <message>
+        <location filename="../src/MainWindow.cpp" line="330"/>
+        <source>Octave</source>
+        <translation>Octave</translation>
+    </message>
+    <message>
+        <location filename="../src/MainWindow.cpp" line="331"/>
+        <source>Settings</source>
+        <translation>Configurações</translation>
+    </message>
+    <message>
+        <location filename="../src/MainWindow.cpp" line="333"/>
+        <source>Exit</source>
+        <translation>Sair</translation>
+    </message>
+    <message>
+        <location filename="../src/MainWindow.cpp" line="335"/>
+        <source>Interface</source>
+        <translation>Interface</translation>
+    </message>
+    <message>
+        <location filename="../src/MainWindow.cpp" line="337"/>
+        <source>Align Windows</source>
+        <translation>Alinhar Janelas</translation>
+    </message>
+    <message>
+        <location filename="../src/MainWindow.cpp" line="339"/>
+        <location filename="../src/MainWindow.cpp" line="351"/>
+        <source>Workspace</source>
+        <translation>Ambiente de trabalho</translation>
+    </message>
+    <message>
+        <location filename="../src/MainWindow.cpp" line="342"/>
+        <source>History</source>
+        <translation>Histórico</translation>
+    </message>
+    <message>
+        <location filename="../src/MainWindow.cpp" line="345"/>
+        <source>File Browser</source>
+        <translation>Navegador de Arquivos</translation>
+    </message>
+    <message>
+        <location filename="../src/MainWindow.cpp" line="349"/>
+        <source>Open New Editor Window</source>
+        <translation>Abrir nova janela de edição</translation>
+    </message>
+    <message>
+        <location filename="../src/MainWindow.cpp" line="352"/>
+        <source>Load</source>
+        <translation>Carregar</translation>
+    </message>
+    <message>
+        <location filename="../src/MainWindow.cpp" line="353"/>
+        <source>Save</source>
+        <translation>Salvar</translation>
+    </message>
+    <message>
+        <location filename="../src/MainWindow.cpp" line="355"/>
+        <source>Clear</source>
+        <translation>Limpar</translation>
+    </message>
+    <message>
+        <location filename="../src/MainWindow.cpp" line="357"/>
+        <source>Community</source>
+        <translation>Comunidade</translation>
+    </message>
+    <message>
+        <location filename="../src/MainWindow.cpp" line="358"/>
+        <source>Report Bug</source>
+        <translation>Reportar Bug</translation>
+    </message>
+    <message>
+        <location filename="../src/MainWindow.cpp" line="359"/>
+        <source>Agora</source>
+        <translation>Agora</translation>
+    </message>
+    <message>
+        <location filename="../src/MainWindow.cpp" line="360"/>
+        <source>Octave Forge</source>
+        <translation>Octave Forge</translation>
+    </message>
+    <message>
+        <location filename="../src/MainWindow.cpp" line="363"/>
+        <source>About Qt</source>
+        <translation>Sobre o Qt</translation>
+    </message>
+</context>
+<context>
+    <name>SettingsDialog</name>
+    <message>
+        <location filename="../src/SettingsDialog.ui" line="29"/>
+        <source>Settings</source>
+        <translation>Configurações</translation>
+    </message>
+    <message>
+        <location filename="../src/SettingsDialog.ui" line="39"/>
+        <source>Chat</source>
+        <translation>Chat</translation>
+    </message>
+    <message>
+        <location filename="../src/SettingsDialog.ui" line="47"/>
+        <source>Connect to #octave on startup</source>
+        <translation>Conectar ao #octave ao iniciar</translation>
+    </message>
+    <message>
+        <location filename="../src/SettingsDialog.ui" line="57"/>
+        <source>Show message of the day</source>
+        <translation>Mostrar mensagem do dia</translation>
+    </message>
+    <message>
+        <location filename="../src/SettingsDialog.ui" line="64"/>
+        <source>Show topic</source>
+        <translation>Mostrar tópico</translation>
+    </message>
+    <message>
+        <location filename="../src/SettingsDialog.ui" line="71"/>
+        <source>Automatically identify on NickServ</source>
+        <translation>Identificar-se automaticamente com o NickServ</translation>
+    </message>
+    <message>
+        <location filename="../src/SettingsDialog.ui" line="78"/>
+        <source>Warning: Your password will be stored in ~/.octavegui in human-readable format. Do not enter your password if you worry about security issues.</source>
+        <translation>Aviso: Sua senha será salva em ~/.octavegui em um formato legível. Não digite sua senha se você tem problemas com segurança.</translation>
+    </message>
+    <message>
+        <location filename="../src/SettingsDialog.ui" line="103"/>
+        <location filename="../src/SettingsDialog.ui" line="311"/>
+        <source>Password:</source>
+        <translation>Senha:</translation>
+    </message>
+    <message>
+        <location filename="../src/SettingsDialog.ui" line="125"/>
+        <source>Editor</source>
+        <translation>Editor</translation>
+    </message>
+    <message>
+        <location filename="../src/SettingsDialog.ui" line="133"/>
+        <source>Use custom file editor:</source>
+        <translation>Usar editor de arquivos personalizado:</translation>
+    </message>
+    <message>
+        <location filename="../src/SettingsDialog.ui" line="143"/>
+        <source>emacs</source>
+        <translation>emacs</translation>
+    </message>
+    <message>
+        <location filename="../src/SettingsDialog.ui" line="166"/>
+        <source>File Browser</source>
+        <translation>Navegador de Arquivos</translation>
+    </message>
+    <message>
+        <location filename="../src/SettingsDialog.ui" line="172"/>
+        <source>Show filenames</source>
+        <translation>Mostrar nomes de arquivo</translation>
+    </message>
+    <message>
+        <location filename="../src/SettingsDialog.ui" line="179"/>
+        <source>Show file size</source>
+        <translation>Mostrar tamanho do arquivo</translation>
+    </message>
+    <message>
+        <location filename="../src/SettingsDialog.ui" line="186"/>
+        <source>Show file type</source>
+        <translation>Mostrar tipo do arquivo</translation>
+    </message>
+    <message>
+        <location filename="../src/SettingsDialog.ui" line="193"/>
+        <source>Show date of last modification</source>
+        <translation>Mostrar data de última modificação</translation>
+    </message>
+    <message>
+        <location filename="../src/SettingsDialog.ui" line="200"/>
+        <source>Show hidden files</source>
+        <translation>Mostrar arquivos ocultos</translation>
+    </message>
+    <message>
+        <location filename="../src/SettingsDialog.ui" line="207"/>
+        <source>Alternating row colors</source>
+        <translation>Alternar cores das linhas</translation>
+    </message>
+    <message>
+        <location filename="../src/SettingsDialog.ui" line="215"/>
+        <source>Network</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/SettingsDialog.ui" line="221"/>
+        <source>Use proxy server</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/SettingsDialog.ui" line="233"/>
+        <source>Proxy Type:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/SettingsDialog.ui" line="244"/>
+        <source>HttpProxy</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/SettingsDialog.ui" line="249"/>
+        <source>Socks5Proxy</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/SettingsDialog.ui" line="260"/>
+        <source>Hostname:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/SettingsDialog.ui" line="277"/>
+        <source>Port:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/SettingsDialog.ui" line="294"/>
+        <source>Username:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/SettingsDialog.ui" line="339"/>
+        <source>Reset to defaults</source>
+        <translation>Resetar ao padrão</translation>
+    </message>
+    <message>
+        <location filename="../src/SettingsDialog.ui" line="362"/>
+        <source>Export</source>
+        <translation>Exportar</translation>
+    </message>
+    <message>
+        <location filename="../src/SettingsDialog.ui" line="372"/>
+        <source>Import</source>
+        <translation>Importar</translation>
+    </message>
+</context>
+<context>
+    <name>VariablesDockWidget</name>
+    <message>
+        <location filename="../src/VariablesDockWidget.cpp" line="36"/>
+        <source>Workspace</source>
+        <translation>Ambiente de trabalho</translation>
+    </message>
+    <message>
+        <location filename="../src/VariablesDockWidget.cpp" line="40"/>
+        <source>Name</source>
+        <translation>Nome</translation>
+    </message>
+    <message>
+        <location filename="../src/VariablesDockWidget.cpp" line="40"/>
+        <source>Type</source>
+        <translation>Tipo</translation>
+    </message>
+    <message>
+        <location filename="../src/VariablesDockWidget.cpp" line="40"/>
+        <source>Value</source>
+        <translation>Valor</translation>
+    </message>
+    <message>
+        <location filename="../src/VariablesDockWidget.cpp" line="52"/>
+        <source>Local</source>
+        <translation>Local</translation>
+    </message>
+    <message>
+        <location filename="../src/VariablesDockWidget.cpp" line="56"/>
+        <source>Global</source>
+        <translation>Global</translation>
+    </message>
+    <message>
+        <location filename="../src/VariablesDockWidget.cpp" line="60"/>
+        <source>Persistent</source>
+        <translation>Persistente</translation>
+    </message>
+    <message>
+        <location filename="../src/VariablesDockWidget.cpp" line="64"/>
+        <source>Hidden</source>
+        <translation>Oculto</translation>
+    </message>
+</context>
+</TS>
Binary file libgui/languages/ru-ru.qm has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/libgui/languages/ru-ru.ts	Sat Aug 18 18:10:09 2012 -0400
@@ -0,0 +1,574 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="ru_RU">
+<context>
+    <name>FileEditorMdiSubWindow</name>
+    <message>
+        <location filename="../src/FileEditorMdiSubWindow.cpp" line="114"/>
+        <location filename="../src/FileEditorMdiSubWindow.cpp" line="207"/>
+        <source>File Editor</source>
+        <translation>Редактор файлов</translation>
+    </message>
+    <message>
+        <location filename="../src/FileEditorMdiSubWindow.cpp" line="115"/>
+        <source>Cannot read file %1:
+%2.</source>
+        <translation>Ðе удалоÑÑŒ прочитать файл %1:
+%2.</translation>
+    </message>
+    <message>
+        <location filename="../src/FileEditorMdiSubWindow.cpp" line="127"/>
+        <source>File loaded.</source>
+        <translation>Файл загружен.</translation>
+    </message>
+    <message>
+        <location filename="../src/FileEditorMdiSubWindow.cpp" line="153"/>
+        <source>Do you want to save the current file
+%1 ?</source>
+        <translation>Сохранить текущий файл
+%1?</translation>
+    </message>
+    <message>
+        <location filename="../src/FileEditorMdiSubWindow.cpp" line="208"/>
+        <source>Cannot write file %1:
+%2.</source>
+        <translation>Ðе удалоÑÑŒ Ñохранить файл %1:
+%2.</translation>
+    </message>
+    <message>
+        <location filename="../src/FileEditorMdiSubWindow.cpp" line="220"/>
+        <source>File %1 saved</source>
+        <translation>Файл %1 Ñохранён</translation>
+    </message>
+    <message>
+        <location filename="../src/FileEditorMdiSubWindow.cpp" line="383"/>
+        <source>&amp;Close File</source>
+        <translation>&amp;Закрыть</translation>
+    </message>
+    <message>
+        <location filename="../src/FileEditorMdiSubWindow.cpp" line="386"/>
+        <source>&amp;New File</source>
+        <translation>Созд&amp;ать</translation>
+    </message>
+    <message>
+        <location filename="../src/FileEditorMdiSubWindow.cpp" line="389"/>
+        <source>&amp;Open File</source>
+        <translation>&amp;Открыть</translation>
+    </message>
+    <message>
+        <location filename="../src/FileEditorMdiSubWindow.cpp" line="392"/>
+        <source>&amp;Save File</source>
+        <translation>&amp;Сохранить</translation>
+    </message>
+    <message>
+        <location filename="../src/FileEditorMdiSubWindow.cpp" line="395"/>
+        <source>Save File &amp;As</source>
+        <translation>Сохранить &amp;как</translation>
+    </message>
+    <message>
+        <location filename="../src/FileEditorMdiSubWindow.cpp" line="398"/>
+        <source>&amp;Undo</source>
+        <translation>О&amp;тменить</translation>
+    </message>
+    <message>
+        <location filename="../src/FileEditorMdiSubWindow.cpp" line="401"/>
+        <source>&amp;Redo</source>
+        <translation>&amp;Повторить</translation>
+    </message>
+    <message>
+        <location filename="../src/FileEditorMdiSubWindow.cpp" line="402"/>
+        <source>&amp;Copy</source>
+        <translation>&amp;Копировать</translation>
+    </message>
+    <message>
+        <location filename="../src/FileEditorMdiSubWindow.cpp" line="403"/>
+        <source>Cu&amp;t</source>
+        <translation>Вы&amp;резать</translation>
+    </message>
+    <message>
+        <location filename="../src/FileEditorMdiSubWindow.cpp" line="404"/>
+        <source>&amp;Paste</source>
+        <translation>&amp;Ð’Ñтавить</translation>
+    </message>
+    <message>
+        <location filename="../src/FileEditorMdiSubWindow.cpp" line="405"/>
+        <source>&amp;Next Bookmark</source>
+        <translation>С&amp;Ð»ÐµÐ´ÑƒÑŽÑ‰Ð°Ñ Ð·Ð°ÐºÐ»Ð°Ð´ÐºÐ°</translation>
+    </message>
+    <message>
+        <location filename="../src/FileEditorMdiSubWindow.cpp" line="406"/>
+        <source>Pre&amp;vious Bookmark</source>
+        <translation>Пр&amp;ÐµÐ´Ñ‹Ð´ÑƒÑ‰Ð°Ñ Ð·Ð°ÐºÐ»Ð°Ð´ÐºÐ°</translation>
+    </message>
+    <message>
+        <location filename="../src/FileEditorMdiSubWindow.cpp" line="407"/>
+        <source>Toggle &amp;Bookmark</source>
+        <translation>&amp;УÑтановить/ÑнÑÑ‚ÑŒ закладку</translation>
+    </message>
+    <message>
+        <location filename="../src/FileEditorMdiSubWindow.cpp" line="410"/>
+        <source>&amp;Run File</source>
+        <translation>&amp;ЗапуÑтить файл</translation>
+    </message>
+    <message>
+        <location filename="../src/FileEditorMdiSubWindow.cpp" line="449"/>
+        <source>&amp;File</source>
+        <translation>&amp;Файл</translation>
+    </message>
+    <message>
+        <location filename="../src/FileEditorMdiSubWindow.cpp" line="457"/>
+        <source>&amp;Edit</source>
+        <translation>&amp;Правка</translation>
+    </message>
+    <message>
+        <location filename="../src/FileEditorMdiSubWindow.cpp" line="469"/>
+        <source>&amp;Run</source>
+        <translation>&amp;ЗапуÑк</translation>
+    </message>
+</context>
+<context>
+    <name>FilesDockWidget</name>
+    <message>
+        <source>Current Folder</source>
+        <translation type="obsolete">Текущий каталог</translation>
+    </message>
+    <message>
+        <location filename="../src/FilesDockWidget.cpp" line="32"/>
+        <source>Current Directory</source>
+        <translation>Текущий каталог</translation>
+    </message>
+    <message>
+        <location filename="../src/FilesDockWidget.cpp" line="46"/>
+        <source>Move up one directory.</source>
+        <translation>Перейти на уровень выше.</translation>
+    </message>
+    <message>
+        <location filename="../src/FilesDockWidget.cpp" line="49"/>
+        <source>Enter the path or filename.</source>
+        <translation>Введите путь или Ð¸Ð¼Ñ Ñ„Ð°Ð¹Ð»Ð°.</translation>
+    </message>
+    <message>
+        <location filename="../src/FilesDockWidget.cpp" line="78"/>
+        <source>Doubleclick a file to open it.</source>
+        <translation>Двойной щелчок по файлу откроет его.</translation>
+    </message>
+</context>
+<context>
+    <name>HistoryDockWidget</name>
+    <message>
+        <location filename="../src/HistoryDockWidget.cpp" line="36"/>
+        <source>Doubleclick a command to transfer it to the terminal.</source>
+        <translation>Двойной щелчок по команде перенеÑÑ‘Ñ‚ её в командную Ñтроку.</translation>
+    </message>
+    <message>
+        <location filename="../src/HistoryDockWidget.cpp" line="38"/>
+        <source>Enter text to filter the command history.</source>
+        <translation>Введите текÑÑ‚ Ð´Ð»Ñ Ñ„Ð¸Ð»ÑŒÑ‚Ñ€Ð°Ñ†Ð¸Ð¸ выполненных команд.</translation>
+    </message>
+    <message>
+        <location filename="../src/HistoryDockWidget.cpp" line="41"/>
+        <source>Command History</source>
+        <translation>Журнал выполненных команд</translation>
+    </message>
+</context>
+<context>
+    <name>LexerOctaveGui</name>
+    <message>
+        <location filename="../src/lexer/lexeroctavegui.cpp" line="111"/>
+        <source>Default</source>
+        <translation>По умолчанию</translation>
+    </message>
+    <message>
+        <location filename="../src/lexer/lexeroctavegui.cpp" line="113"/>
+        <source>Comment</source>
+        <translation>Комментарий</translation>
+    </message>
+    <message>
+        <location filename="../src/lexer/lexeroctavegui.cpp" line="115"/>
+        <source>Command</source>
+        <translation>Команда</translation>
+    </message>
+    <message>
+        <location filename="../src/lexer/lexeroctavegui.cpp" line="117"/>
+        <source>Number</source>
+        <translation>ЧиÑло</translation>
+    </message>
+    <message>
+        <location filename="../src/lexer/lexeroctavegui.cpp" line="119"/>
+        <source>Keyword</source>
+        <translation>Зарезервированное Ñлово</translation>
+    </message>
+    <message>
+        <location filename="../src/lexer/lexeroctavegui.cpp" line="121"/>
+        <source>Single-quoted string</source>
+        <translation>Строка в одинарных кавычках</translation>
+    </message>
+    <message>
+        <location filename="../src/lexer/lexeroctavegui.cpp" line="123"/>
+        <source>Operator</source>
+        <translation>Оператор</translation>
+    </message>
+    <message>
+        <location filename="../src/lexer/lexeroctavegui.cpp" line="125"/>
+        <source>Identifier</source>
+        <translation>Идентификатор</translation>
+    </message>
+    <message>
+        <location filename="../src/lexer/lexeroctavegui.cpp" line="127"/>
+        <source>Double-quoted string</source>
+        <translation>Строка в двойных кавычках</translation>
+    </message>
+</context>
+<context>
+    <name>MainWindow</name>
+    <message>
+        <location filename="../src/MainWindow.cpp" line="47"/>
+        <source>Opening file.</source>
+        <translation>ОткрываетÑÑ Ñ„Ð°Ð¹Ð».</translation>
+    </message>
+    <message>
+        <location filename="../src/MainWindow.cpp" line="124"/>
+        <source>Save Workspace</source>
+        <translation>Сохранить облаÑÑ‚ÑŒ переменных</translation>
+    </message>
+    <message>
+        <location filename="../src/MainWindow.cpp" line="134"/>
+        <source>Load Workspace</source>
+        <translation>Загрузить облаÑÑ‚ÑŒ переменных</translation>
+    </message>
+    <message>
+        <location filename="../src/MainWindow.cpp" line="226"/>
+        <location filename="../src/MainWindow.cpp" line="362"/>
+        <source>About Octave</source>
+        <translation>Об Octave</translation>
+    </message>
+    <message>
+        <location filename="../src/MainWindow.cpp" line="238"/>
+        <source>Saving data and shutting down.</source>
+        <translation>Сохранить и завершить работу.</translation>
+    </message>
+    <message>
+        <location filename="../src/MainWindow.cpp" line="276"/>
+        <source>View the variables in the active workspace.</source>
+        <translation>ПроÑмотр Ñодержимого текущей облаÑти переменных.</translation>
+    </message>
+    <message>
+        <location filename="../src/MainWindow.cpp" line="278"/>
+        <source>Browse and search the command history.</source>
+        <translation>ПроÑмотр и поиÑк в журнале выполненных команд.</translation>
+    </message>
+    <message>
+        <location filename="../src/MainWindow.cpp" line="280"/>
+        <source>Browse your files.</source>
+        <translation>ПроÑмотр файлов.</translation>
+    </message>
+    <message>
+        <location filename="../src/MainWindow.cpp" line="294"/>
+        <source>Terminal</source>
+        <translation>ÐšÐ¾Ð¼Ð°Ð½Ð´Ð½Ð°Ñ Ñтрока</translation>
+    </message>
+    <message>
+        <location filename="../src/MainWindow.cpp" line="298"/>
+        <source>Enter your commands into the Octave terminal.</source>
+        <translation>Введите команды в командной Ñтроке Octave.</translation>
+    </message>
+    <message>
+        <location filename="../src/MainWindow.cpp" line="307"/>
+        <source>Documentation</source>
+        <translation>ДокументациÑ</translation>
+    </message>
+    <message>
+        <location filename="../src/MainWindow.cpp" line="311"/>
+        <source>Browse the Octave documentation for help.</source>
+        <translation>Открыть документацию по Octave.</translation>
+    </message>
+    <message>
+        <location filename="../src/MainWindow.cpp" line="320"/>
+        <source>Chat</source>
+        <translation>Чат</translation>
+    </message>
+    <message>
+        <location filename="../src/MainWindow.cpp" line="323"/>
+        <source>Instantly chat with other Octave users for help.</source>
+        <translation>Чат Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñми Octave.</translation>
+    </message>
+    <message>
+        <location filename="../src/MainWindow.cpp" line="330"/>
+        <source>Octave</source>
+        <translation>Octave</translation>
+    </message>
+    <message>
+        <location filename="../src/MainWindow.cpp" line="331"/>
+        <source>Settings</source>
+        <translation>Параметры</translation>
+    </message>
+    <message>
+        <location filename="../src/MainWindow.cpp" line="333"/>
+        <source>Exit</source>
+        <translation>Выход</translation>
+    </message>
+    <message>
+        <location filename="../src/MainWindow.cpp" line="335"/>
+        <source>Interface</source>
+        <translation>ИнтерфейÑ</translation>
+    </message>
+    <message>
+        <location filename="../src/MainWindow.cpp" line="337"/>
+        <source>Align Windows</source>
+        <translation>ВыровнÑÑ‚ÑŒ окна</translation>
+    </message>
+    <message>
+        <location filename="../src/MainWindow.cpp" line="339"/>
+        <location filename="../src/MainWindow.cpp" line="351"/>
+        <source>Workspace</source>
+        <translation>ОблаÑÑ‚ÑŒ переменных</translation>
+    </message>
+    <message>
+        <location filename="../src/MainWindow.cpp" line="342"/>
+        <source>History</source>
+        <translation>Журнал выполненных команд</translation>
+    </message>
+    <message>
+        <location filename="../src/MainWindow.cpp" line="345"/>
+        <source>File Browser</source>
+        <translation>Файловый менеджер</translation>
+    </message>
+    <message>
+        <location filename="../src/MainWindow.cpp" line="349"/>
+        <source>Open New Editor Window</source>
+        <translation>Открыть новое окно редактора</translation>
+    </message>
+    <message>
+        <location filename="../src/MainWindow.cpp" line="352"/>
+        <source>Load</source>
+        <translation>Загрузить</translation>
+    </message>
+    <message>
+        <location filename="../src/MainWindow.cpp" line="353"/>
+        <source>Save</source>
+        <translation>Сохранить</translation>
+    </message>
+    <message>
+        <location filename="../src/MainWindow.cpp" line="355"/>
+        <source>Clear</source>
+        <translation>ОчиÑтить</translation>
+    </message>
+    <message>
+        <location filename="../src/MainWindow.cpp" line="357"/>
+        <source>Community</source>
+        <translation>СообщеÑтво</translation>
+    </message>
+    <message>
+        <location filename="../src/MainWindow.cpp" line="358"/>
+        <source>Report Bug</source>
+        <translation>Сообщить об ошибке</translation>
+    </message>
+    <message>
+        <location filename="../src/MainWindow.cpp" line="359"/>
+        <source>Agora</source>
+        <translation>Agora</translation>
+    </message>
+    <message>
+        <location filename="../src/MainWindow.cpp" line="360"/>
+        <source>Octave Forge</source>
+        <translation>Octave Forge</translation>
+    </message>
+    <message>
+        <location filename="../src/MainWindow.cpp" line="363"/>
+        <source>About Qt</source>
+        <translation>О Qt</translation>
+    </message>
+</context>
+<context>
+    <name>SettingsDialog</name>
+    <message>
+        <location filename="../src/SettingsDialog.ui" line="29"/>
+        <source>Settings</source>
+        <translation>Параметры</translation>
+    </message>
+    <message>
+        <location filename="../src/SettingsDialog.ui" line="39"/>
+        <source>Chat</source>
+        <translation>Чат</translation>
+    </message>
+    <message>
+        <location filename="../src/SettingsDialog.ui" line="47"/>
+        <source>Connect to #octave on startup</source>
+        <translation>ПодключитьÑÑ Ðº #octave при запуÑке</translation>
+    </message>
+    <message>
+        <location filename="../src/SettingsDialog.ui" line="57"/>
+        <source>Show message of the day</source>
+        <translation>Показывать Ñовет днÑ</translation>
+    </message>
+    <message>
+        <location filename="../src/SettingsDialog.ui" line="64"/>
+        <source>Show topic</source>
+        <translation>Показывать тему обÑÑƒÐ¶Ð´ÐµÐ½Ð¸Ñ Ð¿Ñ€Ð¸ подключении</translation>
+    </message>
+    <message>
+        <location filename="../src/SettingsDialog.ui" line="71"/>
+        <source>Automatically identify on NickServ</source>
+        <translation>ÐвтоматичеÑки идентифицироватьÑÑ Ñƒ NickServ</translation>
+    </message>
+    <message>
+        <location filename="../src/SettingsDialog.ui" line="78"/>
+        <source>Warning: Your password will be stored in ~/.octavegui in human-readable format. Do not enter your password if you worry about security issues.</source>
+        <translation>Предупреждение: пароль будет Ñохранён в ~/.octavegui обычным текÑтом. Ðе вводите пароль, еÑли переживаете о возможных уÑзвимоÑÑ‚ÑÑ… в безопаÑноÑти приложениÑ.</translation>
+    </message>
+    <message>
+        <location filename="../src/SettingsDialog.ui" line="103"/>
+        <location filename="../src/SettingsDialog.ui" line="311"/>
+        <source>Password:</source>
+        <translation>Пароль:</translation>
+    </message>
+    <message>
+        <location filename="../src/SettingsDialog.ui" line="125"/>
+        <source>Editor</source>
+        <translation>Редактор</translation>
+    </message>
+    <message>
+        <location filename="../src/SettingsDialog.ui" line="133"/>
+        <source>Use custom file editor:</source>
+        <translation>Выбрать редактор:</translation>
+    </message>
+    <message>
+        <location filename="../src/SettingsDialog.ui" line="143"/>
+        <source>emacs</source>
+        <translation>emacs</translation>
+    </message>
+    <message>
+        <location filename="../src/SettingsDialog.ui" line="166"/>
+        <source>File Browser</source>
+        <translation>Файловый менеджер</translation>
+    </message>
+    <message>
+        <location filename="../src/SettingsDialog.ui" line="172"/>
+        <source>Show filenames</source>
+        <translation>Показывать имена файлов</translation>
+    </message>
+    <message>
+        <location filename="../src/SettingsDialog.ui" line="179"/>
+        <source>Show file size</source>
+        <translation>Показывать размер файлов</translation>
+    </message>
+    <message>
+        <location filename="../src/SettingsDialog.ui" line="186"/>
+        <source>Show file type</source>
+        <translation>Показывать типы файлов</translation>
+    </message>
+    <message>
+        <location filename="../src/SettingsDialog.ui" line="193"/>
+        <source>Show date of last modification</source>
+        <translation>Показывать дату поÑледнего изменениÑ</translation>
+    </message>
+    <message>
+        <location filename="../src/SettingsDialog.ui" line="200"/>
+        <source>Show hidden files</source>
+        <translation>Показывать Ñкрытые файлы</translation>
+    </message>
+    <message>
+        <location filename="../src/SettingsDialog.ui" line="207"/>
+        <source>Alternating row colors</source>
+        <translation>ЧередующиеÑÑ Ñ†Ð²ÐµÑ‚Ð° Ñтрок</translation>
+    </message>
+    <message>
+        <location filename="../src/SettingsDialog.ui" line="215"/>
+        <source>Network</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/SettingsDialog.ui" line="221"/>
+        <source>Use proxy server</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/SettingsDialog.ui" line="233"/>
+        <source>Proxy Type:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/SettingsDialog.ui" line="244"/>
+        <source>HttpProxy</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/SettingsDialog.ui" line="249"/>
+        <source>Socks5Proxy</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/SettingsDialog.ui" line="260"/>
+        <source>Hostname:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/SettingsDialog.ui" line="277"/>
+        <source>Port:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/SettingsDialog.ui" line="294"/>
+        <source>Username:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/SettingsDialog.ui" line="339"/>
+        <source>Reset to defaults</source>
+        <translation>УÑтановить параметры по умолчанию</translation>
+    </message>
+    <message>
+        <location filename="../src/SettingsDialog.ui" line="362"/>
+        <source>Export</source>
+        <translation>ЭкÑпортировать</translation>
+    </message>
+    <message>
+        <location filename="../src/SettingsDialog.ui" line="372"/>
+        <source>Import</source>
+        <translation>Импортировать</translation>
+    </message>
+</context>
+<context>
+    <name>VariablesDockWidget</name>
+    <message>
+        <location filename="../src/VariablesDockWidget.cpp" line="36"/>
+        <source>Workspace</source>
+        <translation>ОблаÑÑ‚ÑŒ переменных</translation>
+    </message>
+    <message>
+        <location filename="../src/VariablesDockWidget.cpp" line="40"/>
+        <source>Name</source>
+        <translation>Идентификатор</translation>
+    </message>
+    <message>
+        <location filename="../src/VariablesDockWidget.cpp" line="40"/>
+        <source>Type</source>
+        <translation>Тип</translation>
+    </message>
+    <message>
+        <location filename="../src/VariablesDockWidget.cpp" line="40"/>
+        <source>Value</source>
+        <translation>Значение</translation>
+    </message>
+    <message>
+        <location filename="../src/VariablesDockWidget.cpp" line="52"/>
+        <source>Local</source>
+        <translation>ЛокальнаÑ</translation>
+    </message>
+    <message>
+        <location filename="../src/VariablesDockWidget.cpp" line="56"/>
+        <source>Global</source>
+        <translation>ГлобальнаÑ</translation>
+    </message>
+    <message>
+        <location filename="../src/VariablesDockWidget.cpp" line="60"/>
+        <source>Persistent</source>
+        <translation>СтатичеÑкаÑ</translation>
+    </message>
+    <message>
+        <location filename="../src/VariablesDockWidget.cpp" line="64"/>
+        <source>Hidden</source>
+        <translation>СкрытаÑ</translation>
+    </message>
+</context>
+</TS>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/libgui/languages/translators	Sat Aug 18 18:10:09 2012 -0400
@@ -0,0 +1,8 @@
+# Below Octave GUI translators are listed with their e-mails
+# to be able inform them about generic translation file changes
+en-en Jacob Dawid <jacob.dawid@googlemail.com>
+es-es Valentin Ortega-Clavero <arcanos3030@gmail.com>
+de-de Jacob Dawid <jacob.dawid@googlemail.com>
+pt-br Júlio Hoffimann Mendes <julio.hoffimann@gmail.com>
+ru-ru Andriy Shinkarchuck <adriano32.gnu@gmail.com>
+uk-ua Andriy Shinkarchuck <adriano32.gnu@gmail.com>
Binary file libgui/languages/uk-ua.qm has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/libgui/languages/uk-ua.ts	Sat Aug 18 18:10:09 2012 -0400
@@ -0,0 +1,574 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="uk_UA">
+<context>
+    <name>FileEditorMdiSubWindow</name>
+    <message>
+        <location filename="../src/FileEditorMdiSubWindow.cpp" line="114"/>
+        <location filename="../src/FileEditorMdiSubWindow.cpp" line="207"/>
+        <source>File Editor</source>
+        <translation>Редактор файлів</translation>
+    </message>
+    <message>
+        <location filename="../src/FileEditorMdiSubWindow.cpp" line="115"/>
+        <source>Cannot read file %1:
+%2.</source>
+        <translation>Ðе вдалоÑÑ Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚Ð¸ файл %1:
+%2.</translation>
+    </message>
+    <message>
+        <location filename="../src/FileEditorMdiSubWindow.cpp" line="127"/>
+        <source>File loaded.</source>
+        <translation>Файл завантажено.</translation>
+    </message>
+    <message>
+        <location filename="../src/FileEditorMdiSubWindow.cpp" line="153"/>
+        <source>Do you want to save the current file
+%1 ?</source>
+        <translation>Справді зберегти поточний файл
+%1?</translation>
+    </message>
+    <message>
+        <location filename="../src/FileEditorMdiSubWindow.cpp" line="208"/>
+        <source>Cannot write file %1:
+%2.</source>
+        <translation>Ðе вдалоÑÑ Ð·Ð±ÐµÑ€ÐµÐ³Ñ‚Ð¸ файл %1:
+%2.</translation>
+    </message>
+    <message>
+        <location filename="../src/FileEditorMdiSubWindow.cpp" line="220"/>
+        <source>File %1 saved</source>
+        <translation>Файл %1 збережено</translation>
+    </message>
+    <message>
+        <location filename="../src/FileEditorMdiSubWindow.cpp" line="383"/>
+        <source>&amp;Close File</source>
+        <translation>За&amp;крити</translation>
+    </message>
+    <message>
+        <location filename="../src/FileEditorMdiSubWindow.cpp" line="386"/>
+        <source>&amp;New File</source>
+        <translation>&amp;Створити</translation>
+    </message>
+    <message>
+        <location filename="../src/FileEditorMdiSubWindow.cpp" line="389"/>
+        <source>&amp;Open File</source>
+        <translation>&amp;Відкрити</translation>
+    </message>
+    <message>
+        <location filename="../src/FileEditorMdiSubWindow.cpp" line="392"/>
+        <source>&amp;Save File</source>
+        <translation>&amp;Зберегти</translation>
+    </message>
+    <message>
+        <location filename="../src/FileEditorMdiSubWindow.cpp" line="395"/>
+        <source>Save File &amp;As</source>
+        <translation>Зберегти &amp;Ñк</translation>
+    </message>
+    <message>
+        <location filename="../src/FileEditorMdiSubWindow.cpp" line="398"/>
+        <source>&amp;Undo</source>
+        <translation>В&amp;ернути</translation>
+    </message>
+    <message>
+        <location filename="../src/FileEditorMdiSubWindow.cpp" line="401"/>
+        <source>&amp;Redo</source>
+        <translation>П&amp;овторити</translation>
+    </message>
+    <message>
+        <location filename="../src/FileEditorMdiSubWindow.cpp" line="402"/>
+        <source>&amp;Copy</source>
+        <translation>&amp;Копіювати</translation>
+    </message>
+    <message>
+        <location filename="../src/FileEditorMdiSubWindow.cpp" line="403"/>
+        <source>Cu&amp;t</source>
+        <translation>Виріза&amp;ти</translation>
+    </message>
+    <message>
+        <location filename="../src/FileEditorMdiSubWindow.cpp" line="404"/>
+        <source>&amp;Paste</source>
+        <translation>&amp;Ð’Ñтавити</translation>
+    </message>
+    <message>
+        <location filename="../src/FileEditorMdiSubWindow.cpp" line="405"/>
+        <source>&amp;Next Bookmark</source>
+        <translation>До &amp;наÑтупної закладки</translation>
+    </message>
+    <message>
+        <location filename="../src/FileEditorMdiSubWindow.cpp" line="406"/>
+        <source>Pre&amp;vious Bookmark</source>
+        <translation>До &amp;попередньої закладки</translation>
+    </message>
+    <message>
+        <location filename="../src/FileEditorMdiSubWindow.cpp" line="407"/>
+        <source>Toggle &amp;Bookmark</source>
+        <translation>Ð’&amp;Ñтановити/видалити закладку</translation>
+    </message>
+    <message>
+        <location filename="../src/FileEditorMdiSubWindow.cpp" line="410"/>
+        <source>&amp;Run File</source>
+        <translation>&amp;Виконати файл</translation>
+    </message>
+    <message>
+        <location filename="../src/FileEditorMdiSubWindow.cpp" line="449"/>
+        <source>&amp;File</source>
+        <translation>&amp;Файл</translation>
+    </message>
+    <message>
+        <location filename="../src/FileEditorMdiSubWindow.cpp" line="457"/>
+        <source>&amp;Edit</source>
+        <translation>&amp;Правка</translation>
+    </message>
+    <message>
+        <location filename="../src/FileEditorMdiSubWindow.cpp" line="469"/>
+        <source>&amp;Run</source>
+        <translation>&amp;ВиконаннÑ</translation>
+    </message>
+</context>
+<context>
+    <name>FilesDockWidget</name>
+    <message>
+        <source>Current Folder</source>
+        <translation type="obsolete">Поточний каталог</translation>
+    </message>
+    <message>
+        <location filename="../src/FilesDockWidget.cpp" line="32"/>
+        <source>Current Directory</source>
+        <translation>Поточний каталог</translation>
+    </message>
+    <message>
+        <location filename="../src/FilesDockWidget.cpp" line="46"/>
+        <source>Move up one directory.</source>
+        <translation>Перейти вгору деревом каталогів.</translation>
+    </message>
+    <message>
+        <location filename="../src/FilesDockWidget.cpp" line="49"/>
+        <source>Enter the path or filename.</source>
+        <translation>Введіть повний шлÑÑ… до файлу або назву файлу.</translation>
+    </message>
+    <message>
+        <location filename="../src/FilesDockWidget.cpp" line="78"/>
+        <source>Doubleclick a file to open it.</source>
+        <translation>Подвійне ÐºÐ»Ð°Ñ†Ð°Ð½Ð½Ñ Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ” файл.</translation>
+    </message>
+</context>
+<context>
+    <name>HistoryDockWidget</name>
+    <message>
+        <location filename="../src/HistoryDockWidget.cpp" line="36"/>
+        <source>Doubleclick a command to transfer it to the terminal.</source>
+        <translation>Подвійне ÐºÐ»Ð°Ñ†Ð°Ð½Ð½Ñ Ð¿ÐµÑ€ÐµÐ½ÐµÑе команду до командного Ñ€Ñдку.</translation>
+    </message>
+    <message>
+        <location filename="../src/HistoryDockWidget.cpp" line="38"/>
+        <source>Enter text to filter the command history.</source>
+        <translation>Введіть текÑÑ‚ Ð´Ð»Ñ Ñ„Ñ–Ð»ÑŒÑ‚Ñ€ÑƒÐ²Ð°Ð½Ð½Ñ Ñ–Ñторії виконаних команд.</translation>
+    </message>
+    <message>
+        <location filename="../src/HistoryDockWidget.cpp" line="41"/>
+        <source>Command History</source>
+        <translation>ІÑÑ‚Ð¾Ñ€Ñ–Ñ Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð¸Ñ… команд</translation>
+    </message>
+</context>
+<context>
+    <name>LexerOctaveGui</name>
+    <message>
+        <location filename="../src/lexer/lexeroctavegui.cpp" line="111"/>
+        <source>Default</source>
+        <translation>Стандартні налаштуваннÑ</translation>
+    </message>
+    <message>
+        <location filename="../src/lexer/lexeroctavegui.cpp" line="113"/>
+        <source>Comment</source>
+        <translation>Коментар</translation>
+    </message>
+    <message>
+        <location filename="../src/lexer/lexeroctavegui.cpp" line="115"/>
+        <source>Command</source>
+        <translation>Команда</translation>
+    </message>
+    <message>
+        <location filename="../src/lexer/lexeroctavegui.cpp" line="117"/>
+        <source>Number</source>
+        <translation>ЧиÑло</translation>
+    </message>
+    <message>
+        <location filename="../src/lexer/lexeroctavegui.cpp" line="119"/>
+        <source>Keyword</source>
+        <translation>Зарезервоване Ñлово</translation>
+    </message>
+    <message>
+        <location filename="../src/lexer/lexeroctavegui.cpp" line="121"/>
+        <source>Single-quoted string</source>
+        <translation>РÑдок в одинарних лапках</translation>
+    </message>
+    <message>
+        <location filename="../src/lexer/lexeroctavegui.cpp" line="123"/>
+        <source>Operator</source>
+        <translation>Оператор</translation>
+    </message>
+    <message>
+        <location filename="../src/lexer/lexeroctavegui.cpp" line="125"/>
+        <source>Identifier</source>
+        <translation>Ідентифікатор</translation>
+    </message>
+    <message>
+        <location filename="../src/lexer/lexeroctavegui.cpp" line="127"/>
+        <source>Double-quoted string</source>
+        <translation>РÑдок у подвійних лапках</translation>
+    </message>
+</context>
+<context>
+    <name>MainWindow</name>
+    <message>
+        <location filename="../src/MainWindow.cpp" line="47"/>
+        <source>Opening file.</source>
+        <translation>ВідкриваєтьÑÑ Ñ„Ð°Ð¹Ð».</translation>
+    </message>
+    <message>
+        <location filename="../src/MainWindow.cpp" line="124"/>
+        <source>Save Workspace</source>
+        <translation>Зберегти облаÑÑ‚ÑŒ змінних</translation>
+    </message>
+    <message>
+        <location filename="../src/MainWindow.cpp" line="134"/>
+        <source>Load Workspace</source>
+        <translation>Завантажити облаÑÑ‚ÑŒ змінних</translation>
+    </message>
+    <message>
+        <location filename="../src/MainWindow.cpp" line="226"/>
+        <location filename="../src/MainWindow.cpp" line="362"/>
+        <source>About Octave</source>
+        <translation>Про Octave</translation>
+    </message>
+    <message>
+        <location filename="../src/MainWindow.cpp" line="238"/>
+        <source>Saving data and shutting down.</source>
+        <translation>Зберегти дані і завершити роботу.</translation>
+    </message>
+    <message>
+        <location filename="../src/MainWindow.cpp" line="276"/>
+        <source>View the variables in the active workspace.</source>
+        <translation>ПереглÑд зміÑту поточної облаÑÑ‚Ñ– змінних.</translation>
+    </message>
+    <message>
+        <location filename="../src/MainWindow.cpp" line="278"/>
+        <source>Browse and search the command history.</source>
+        <translation>ПереглÑд Ñ– пошук Ñеред Ñ–Ñторії виконаних команд.</translation>
+    </message>
+    <message>
+        <location filename="../src/MainWindow.cpp" line="280"/>
+        <source>Browse your files.</source>
+        <translation>ПереглÑнути файли.</translation>
+    </message>
+    <message>
+        <location filename="../src/MainWindow.cpp" line="294"/>
+        <source>Terminal</source>
+        <translation>Командний Ñ€Ñдок</translation>
+    </message>
+    <message>
+        <location filename="../src/MainWindow.cpp" line="298"/>
+        <source>Enter your commands into the Octave terminal.</source>
+        <translation>Введіть команди до командного Ñ€Ñдка Octave.</translation>
+    </message>
+    <message>
+        <location filename="../src/MainWindow.cpp" line="307"/>
+        <source>Documentation</source>
+        <translation>ДокументаціÑ</translation>
+    </message>
+    <message>
+        <location filename="../src/MainWindow.cpp" line="311"/>
+        <source>Browse the Octave documentation for help.</source>
+        <translation>ПереглÑнути документацію до Octave.</translation>
+    </message>
+    <message>
+        <location filename="../src/MainWindow.cpp" line="320"/>
+        <source>Chat</source>
+        <translation>Чат</translation>
+    </message>
+    <message>
+        <location filename="../src/MainWindow.cpp" line="323"/>
+        <source>Instantly chat with other Octave users for help.</source>
+        <translation>Чат з кориÑтувачами Octave.</translation>
+    </message>
+    <message>
+        <location filename="../src/MainWindow.cpp" line="330"/>
+        <source>Octave</source>
+        <translation>Octave</translation>
+    </message>
+    <message>
+        <location filename="../src/MainWindow.cpp" line="331"/>
+        <source>Settings</source>
+        <translation>ÐалаштуваннÑ</translation>
+    </message>
+    <message>
+        <location filename="../src/MainWindow.cpp" line="333"/>
+        <source>Exit</source>
+        <translation>Вийти</translation>
+    </message>
+    <message>
+        <location filename="../src/MainWindow.cpp" line="335"/>
+        <source>Interface</source>
+        <translation>ІнтерфейÑ</translation>
+    </message>
+    <message>
+        <location filename="../src/MainWindow.cpp" line="337"/>
+        <source>Align Windows</source>
+        <translation>ВирівнÑти вікна</translation>
+    </message>
+    <message>
+        <location filename="../src/MainWindow.cpp" line="339"/>
+        <location filename="../src/MainWindow.cpp" line="351"/>
+        <source>Workspace</source>
+        <translation>ОблаÑÑ‚ÑŒ змінних</translation>
+    </message>
+    <message>
+        <location filename="../src/MainWindow.cpp" line="342"/>
+        <source>History</source>
+        <translation>ІÑÑ‚Ð¾Ñ€Ñ–Ñ Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð¸Ñ… команд</translation>
+    </message>
+    <message>
+        <location filename="../src/MainWindow.cpp" line="345"/>
+        <source>File Browser</source>
+        <translation>Файловий менеджер</translation>
+    </message>
+    <message>
+        <location filename="../src/MainWindow.cpp" line="349"/>
+        <source>Open New Editor Window</source>
+        <translation>Відкрити нове вікно редактора</translation>
+    </message>
+    <message>
+        <location filename="../src/MainWindow.cpp" line="352"/>
+        <source>Load</source>
+        <translation>Завантажити</translation>
+    </message>
+    <message>
+        <location filename="../src/MainWindow.cpp" line="353"/>
+        <source>Save</source>
+        <translation>Зберегти</translation>
+    </message>
+    <message>
+        <location filename="../src/MainWindow.cpp" line="355"/>
+        <source>Clear</source>
+        <translation>ОчиÑтити</translation>
+    </message>
+    <message>
+        <location filename="../src/MainWindow.cpp" line="357"/>
+        <source>Community</source>
+        <translation>Спільнота</translation>
+    </message>
+    <message>
+        <location filename="../src/MainWindow.cpp" line="358"/>
+        <source>Report Bug</source>
+        <translation>Повідомити про помилку</translation>
+    </message>
+    <message>
+        <location filename="../src/MainWindow.cpp" line="359"/>
+        <source>Agora</source>
+        <translation>Agora</translation>
+    </message>
+    <message>
+        <location filename="../src/MainWindow.cpp" line="360"/>
+        <source>Octave Forge</source>
+        <translation>Octave Forge</translation>
+    </message>
+    <message>
+        <location filename="../src/MainWindow.cpp" line="363"/>
+        <source>About Qt</source>
+        <translation>Про Qt</translation>
+    </message>
+</context>
+<context>
+    <name>SettingsDialog</name>
+    <message>
+        <location filename="../src/SettingsDialog.ui" line="29"/>
+        <source>Settings</source>
+        <translation>ÐалаштуваннÑ</translation>
+    </message>
+    <message>
+        <location filename="../src/SettingsDialog.ui" line="39"/>
+        <source>Chat</source>
+        <translation>Чат</translation>
+    </message>
+    <message>
+        <location filename="../src/SettingsDialog.ui" line="47"/>
+        <source>Connect to #octave on startup</source>
+        <translation>З&apos;єднатиÑÑ Ð· #octave при запуÑку</translation>
+    </message>
+    <message>
+        <location filename="../src/SettingsDialog.ui" line="57"/>
+        <source>Show message of the day</source>
+        <translation>Показувати пораду днÑ</translation>
+    </message>
+    <message>
+        <location filename="../src/SettingsDialog.ui" line="64"/>
+        <source>Show topic</source>
+        <translation>Показувати тему чату при з&apos;єднанні</translation>
+    </message>
+    <message>
+        <location filename="../src/SettingsDialog.ui" line="71"/>
+        <source>Automatically identify on NickServ</source>
+        <translation>Ðвтоматично ідентифікуватиÑÑ Ð² NickServ</translation>
+    </message>
+    <message>
+        <location filename="../src/SettingsDialog.ui" line="78"/>
+        <source>Warning: Your password will be stored in ~/.octavegui in human-readable format. Do not enter your password if you worry about security issues.</source>
+        <translation>ПопередженнÑ: пароль буде збережено в ~/.octavegui звичайним текÑтом. Ðе вводьте пароль, Ñкщо переймаєтеÑÑŒ потенційними проблемами із захиÑтом даних в програмі.</translation>
+    </message>
+    <message>
+        <location filename="../src/SettingsDialog.ui" line="103"/>
+        <location filename="../src/SettingsDialog.ui" line="311"/>
+        <source>Password:</source>
+        <translation>Пароль:</translation>
+    </message>
+    <message>
+        <location filename="../src/SettingsDialog.ui" line="125"/>
+        <source>Editor</source>
+        <translation>Редактор</translation>
+    </message>
+    <message>
+        <location filename="../src/SettingsDialog.ui" line="133"/>
+        <source>Use custom file editor:</source>
+        <translation>ВикориÑтовувати інший редактор:</translation>
+    </message>
+    <message>
+        <location filename="../src/SettingsDialog.ui" line="143"/>
+        <source>emacs</source>
+        <translation>emacs</translation>
+    </message>
+    <message>
+        <location filename="../src/SettingsDialog.ui" line="166"/>
+        <source>File Browser</source>
+        <translation>Файловий менеджер</translation>
+    </message>
+    <message>
+        <location filename="../src/SettingsDialog.ui" line="172"/>
+        <source>Show filenames</source>
+        <translation>Показувати назви файлів</translation>
+    </message>
+    <message>
+        <location filename="../src/SettingsDialog.ui" line="179"/>
+        <source>Show file size</source>
+        <translation>Показувати розмір файлів</translation>
+    </message>
+    <message>
+        <location filename="../src/SettingsDialog.ui" line="186"/>
+        <source>Show file type</source>
+        <translation>Показувати типи файлів</translation>
+    </message>
+    <message>
+        <location filename="../src/SettingsDialog.ui" line="193"/>
+        <source>Show date of last modification</source>
+        <translation>Показувати дату оÑтанньої зміни</translation>
+    </message>
+    <message>
+        <location filename="../src/SettingsDialog.ui" line="200"/>
+        <source>Show hidden files</source>
+        <translation>Показувати приховані файли</translation>
+    </message>
+    <message>
+        <location filename="../src/SettingsDialog.ui" line="207"/>
+        <source>Alternating row colors</source>
+        <translation>Чергувати колір Ñ€Ñдків</translation>
+    </message>
+    <message>
+        <location filename="../src/SettingsDialog.ui" line="215"/>
+        <source>Network</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/SettingsDialog.ui" line="221"/>
+        <source>Use proxy server</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/SettingsDialog.ui" line="233"/>
+        <source>Proxy Type:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/SettingsDialog.ui" line="244"/>
+        <source>HttpProxy</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/SettingsDialog.ui" line="249"/>
+        <source>Socks5Proxy</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/SettingsDialog.ui" line="260"/>
+        <source>Hostname:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/SettingsDialog.ui" line="277"/>
+        <source>Port:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/SettingsDialog.ui" line="294"/>
+        <source>Username:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../src/SettingsDialog.ui" line="339"/>
+        <source>Reset to defaults</source>
+        <translation>Ð’Ñтановити Ñтандартні налаштуваннÑ</translation>
+    </message>
+    <message>
+        <location filename="../src/SettingsDialog.ui" line="362"/>
+        <source>Export</source>
+        <translation>ЕкÑпортувати</translation>
+    </message>
+    <message>
+        <location filename="../src/SettingsDialog.ui" line="372"/>
+        <source>Import</source>
+        <translation>Імпортувати</translation>
+    </message>
+</context>
+<context>
+    <name>VariablesDockWidget</name>
+    <message>
+        <location filename="../src/VariablesDockWidget.cpp" line="36"/>
+        <source>Workspace</source>
+        <translation>ОблаÑÑ‚ÑŒ змінних</translation>
+    </message>
+    <message>
+        <location filename="../src/VariablesDockWidget.cpp" line="40"/>
+        <source>Name</source>
+        <translation>Ідентифікатор</translation>
+    </message>
+    <message>
+        <location filename="../src/VariablesDockWidget.cpp" line="40"/>
+        <source>Type</source>
+        <translation>Тип</translation>
+    </message>
+    <message>
+        <location filename="../src/VariablesDockWidget.cpp" line="40"/>
+        <source>Value</source>
+        <translation>ЗначеннÑ</translation>
+    </message>
+    <message>
+        <location filename="../src/VariablesDockWidget.cpp" line="52"/>
+        <source>Local</source>
+        <translation>Локальна</translation>
+    </message>
+    <message>
+        <location filename="../src/VariablesDockWidget.cpp" line="56"/>
+        <source>Global</source>
+        <translation>Глобальна</translation>
+    </message>
+    <message>
+        <location filename="../src/VariablesDockWidget.cpp" line="60"/>
+        <source>Persistent</source>
+        <translation>Статична</translation>
+    </message>
+    <message>
+        <location filename="../src/VariablesDockWidget.cpp" line="64"/>
+        <source>Hidden</source>
+        <translation>Прихована</translation>
+    </message>
+</context>
+</TS>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/libgui/src/Makefile.am	Sat Aug 18 18:10:09 2012 -0400
@@ -0,0 +1,225 @@
+include $(top_srcdir)/build-aux/common.mk
+
+SRCDIRS = \
+  m-editor \
+  qtinfo \
+  octave-adapter \
+  ../qterminal/libqterminal/unix \
+  ../qterminal/libqterminal/win32 \
+  ../qterminal/libqterminal \
+  ../qterminal
+
+moc-%.cc: %.h
+	test -d $(@D) || mkdir -p $(@D)
+	@MOC@ -o$@ $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(liboctgui_la_CPPFLAGS) $<
+
+ui-%.h: %.ui
+	@UIC@ -o $@ $<
+
+qrc-%.cc: %.qrc
+	@RCC@ -o $@ $<
+
+octave_gui_MOC = \
+  m-editor/moc-file-editor-interface.cc \
+  m-editor/moc-file-editor-tab.cc \
+  m-editor/moc-file-editor.cc \
+  m-editor/moc-find-dialog.cc \
+  m-editor/moc-lexer-octave-gui.cc \
+  moc-documentation-dockwidget.cc \
+  moc-files-dockwidget.cc \
+  moc-history-dockwidget.cc \
+  moc-main-window.cc \
+  moc-octave-qt-event-listener.cc \
+  moc-settings-dialog.cc \
+  moc-terminal-dockwidget.cc \
+  moc-welcome-wizard.cc \
+  moc-workspace-model.cc \
+  moc-workspace-view.cc \
+  octave-adapter/moc-octave-main-thread.cc \
+  qtinfo/moc-parser.cc \
+  qtinfo/moc-webinfo.cc
+
+octave_gui_UI = \
+  settings-dialog.ui \
+  welcome-wizard.ui
+
+octave_gui_UI_H = $(patsubst %.ui, ui-%.h, $(octave_gui_UI))
+
+octave_gui_RC = qrc-resource.cc
+
+octlib_LTLIBRARIES = liboctgui.la
+
+liboctgui_la_SOURCES = \
+  documentation-dockwidget.cc \
+  files-dockwidget.cc \
+  history-dockwidget.cc \
+  m-editor/file-editor-tab.cc \
+  m-editor/file-editor.cc \
+  m-editor/find-dialog.cc \
+  m-editor/lexer-octave-gui.cc \
+  main-window.cc \
+  octave-adapter/octave-event.cc \
+  octave-adapter/octave-link.cc \
+  octave-adapter/octave-main-thread.cc \
+  octave-gui.cc \
+  octave-qt-event-listener.cc \
+  qtinfo/parser.cc \
+  qtinfo/webinfo.cc \
+  resource-manager.cc \
+  settings-dialog.cc \
+  symbol-information.cc \
+  terminal-dockwidget.cc \
+  welcome-wizard.cc \
+  workspace-model.cc \
+  workspace-view.cc
+
+liboctgui_la_LIBADD = \
+  libqterminal.la \
+  -lQtCore \
+  -lQtGui \
+  -lQtNetwork \
+  -lqscintilla2
+
+nodist_liboctgui_la_SOURCES = $(octave_gui_MOC) $(octave_gui_RC)
+
+liboctgui_la_CPPFLAGS = \
+  -I@QT_INCDIR@ \
+  -I@QT_INCDIR@/QtCore \
+  -I@QT_INCDIR@/QtGui \
+  -I@QT_INCDIR@/QtNetwork \
+  -I$(srcdir)/../qterminal/libqterminal \
+  -I$(srcdir)/m-editor \
+  -I$(srcdir)/octave-adapter \
+  -I$(srcdir)/qtinfo \
+  -I$(srcdir)/../../libcruft/misc \
+  -I../../liboctave \
+  -I$(srcdir)/../../liboctave \
+  -I../../libinterp \
+  -I../../libinterp/interp-core \
+  -I../../libinterp/interpfcn \
+  -I../../libinterp/parse-tree \
+  -I$(srcdir)/../../libinterp \
+  -I$(srcdir)/../../libinterp/interp-core \
+  -I$(srcdir)/../../libinterp/interpfcn \
+  -I$(srcdir)/../../libinterp/octave-value \
+  -I$(srcdir)/../../libtinerp/operators \
+  -I$(srcdir)/../../libinterp/parse-tree
+
+liboctgui_la_LDFLAGS = -L@QT_LIBDIR@
+
+noinst_HEADERS = \
+  documentation-dockwidget.h \
+  files-dockwidget.h \
+  history-dockwidget.h \
+  m-editor/file-editor-interface.h \
+  m-editor/file-editor-tab.h \
+  m-editor/file-editor.h \
+  m-editor/find-dialog.h \
+  m-editor/lexer-octave-gui.h \
+  main-window.h \
+  octave-adapter/octave-event-listener.h \
+  octave-adapter/octave-event-observer.h \
+  octave-adapter/octave-event.h \
+  octave-adapter/octave-link.h \
+  octave-adapter/octave-main-thread.h \
+  octave-qt-event-listener.h \
+  qtinfo/parser.h \
+  qtinfo/webinfo.h \
+  resource-manager.h \
+  settings-dialog.h \
+  symbol-information.h \
+  terminal-dockwidget.h \
+  welcome-wizard.h \
+  workspace-model.h \
+  workspace-view.h
+
+CLEANFILES = $(octave_gui_MOC) $(octave_gui_UI_H) $(octave_gui_RC)
+
+clean-local:
+	-if test "$(srcdir)" != "."; then \
+		for d in $(SRCDIRS); do test -d $$d && rmdir $$d; done \
+	 fi
+
+BUILT_SOURCES = $(octave_gui_UI_H)
+
+EXTRA_DIST = $(octave_gui_UI) resource.qrc
+
+noinst_LTLIBRARIES = libqterminal.la
+
+noinst_HEADERS += ../qterminal/libqterminal/QTerminal.h \
+		  ../qterminal/libqterminal/QTerminalInterface.h \
+		  ../qterminal/libqterminal/win32/QTerminalColors.h \
+		  ../qterminal/libqterminal/win32/QWinTerminalImpl.h \
+		  ../qterminal/libqterminal/unix/BlockArray.h \
+		  ../qterminal/libqterminal/unix/Character.h \
+		  ../qterminal/libqterminal/unix/CharacterColor.h \
+		  ../qterminal/libqterminal/unix/Emulation.h \
+		  ../qterminal/libqterminal/unix/ExtendedDefaultTranslator.h \
+		  ../qterminal/libqterminal/unix/Filter.h \
+		  ../qterminal/libqterminal/unix/History.h \
+		  ../qterminal/libqterminal/unix/KeyboardTranslator.h \
+		  ../qterminal/libqterminal/unix/konsole_wcwidth.h \
+		  ../qterminal/libqterminal/unix/kpty.h \
+		  ../qterminal/libqterminal/unix/kpty_p.h \
+		  ../qterminal/libqterminal/unix/LineFont.h \
+		  ../qterminal/libqterminal/unix/QUnixTerminalImpl.h \
+		  ../qterminal/libqterminal/unix/Screen.h \
+		  ../qterminal/libqterminal/unix/ScreenWindow.h \
+		  ../qterminal/libqterminal/unix/TerminalCharacterDecoder.h \
+		  ../qterminal/libqterminal/unix/Vt102Emulation.h \
+		  ../qterminal/libqterminal/unix/SelfListener.h \
+		  ../qterminal/libqterminal/unix/TerminalModel.h \
+		  ../qterminal/libqterminal/unix/TerminalView.h
+
+libqterminal_la_CPPFLAGS = $(DEFS)  \
+			   -I@QT_INCDIR@ \
+			   -I@QT_INCDIR@/QtCore \
+			   -I@QT_INCDIR@/QtGui \
+			   -I$(srcdir)/../qterminal/libqterminal
+
+libqterminal_la_MOC = \
+  ../qterminal/libqterminal/moc-QTerminal.cc \
+  ../qterminal/libqterminal/moc-QTerminalInterface.cc
+
+nodist_libqterminal_la_SOURCES = $(libqterminal_la_MOC)
+
+if WIN32_TERMINAL
+
+libqterminal_la_SOURCES = \
+  ../qterminal/libqterminal/win32/QTerminalColors.cpp \
+  ../qterminal/libqterminal/win32/QWinTerminalImpl.cpp
+
+libqterminal_la_MOC += ../qterminal/libqterminal/win32/moc-QWinTerminalImpl.cc
+
+else
+
+libqterminal_la_SOURCES = \
+  ../qterminal/libqterminal/unix/BlockArray.cpp \
+  ../qterminal/libqterminal/unix/Emulation.cpp \
+  ../qterminal/libqterminal/unix/Filter.cpp \
+  ../qterminal/libqterminal/unix/History.cpp \
+  ../qterminal/libqterminal/unix/KeyboardTranslator.cpp \
+  ../qterminal/libqterminal/unix/konsole_wcwidth.cpp \
+  ../qterminal/libqterminal/unix/kpty.cpp \
+  ../qterminal/libqterminal/unix/QUnixTerminalImpl.cpp \
+  ../qterminal/libqterminal/unix/Screen.cpp \
+  ../qterminal/libqterminal/unix/ScreenWindow.cpp \
+  ../qterminal/libqterminal/unix/TerminalCharacterDecoder.cpp \
+  ../qterminal/libqterminal/unix/Vt102Emulation.cpp \
+  ../qterminal/libqterminal/unix/SelfListener.cpp \
+  ../qterminal/libqterminal/unix/TerminalModel.cpp \
+  ../qterminal/libqterminal/unix/TerminalView.cpp
+
+libqterminal_la_MOC += \
+  ../qterminal/libqterminal/unix/moc-Emulation.cc \
+  ../qterminal/libqterminal/unix/moc-Filter.cc \
+  ../qterminal/libqterminal/unix/moc-QUnixTerminalImpl.cc \
+  ../qterminal/libqterminal/unix/moc-ScreenWindow.cc \
+  ../qterminal/libqterminal/unix/moc-SelfListener.cc \
+  ../qterminal/libqterminal/unix/moc-TerminalModel.cc \
+  ../qterminal/libqterminal/unix/moc-TerminalView.cc \
+  ../qterminal/libqterminal/unix/moc-Vt102Emulation.cc
+
+endif
+
+CLEANFILES += $(libqterminal_la_MOC)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/libgui/src/documentation-dockwidget.cc	Sat Aug 18 18:10:09 2012 -0400
@@ -0,0 +1,45 @@
+/* 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 "documentation-dockwidget.h"
+
+documentation_dock_widget::documentation_dock_widget (QWidget *parent)
+  : QDockWidget (parent)
+{
+  setObjectName ("DocumentationDockWidget");
+  setWindowTitle (tr ("Documentation"));
+
+  connect (this, SIGNAL (visibilityChanged (bool)),
+           this, SLOT (handle_visibility_changed (bool)));
+
+  _webinfo = new webinfo (this);
+  setWidget (_webinfo);
+}
+
+void
+documentation_dock_widget::handle_visibility_changed (bool visible)
+{
+  if (visible)
+    emit active_changed (true);
+}
+
+void
+documentation_dock_widget::closeEvent (QCloseEvent *event)
+{
+  emit active_changed (false);
+  QDockWidget::closeEvent (event);
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/libgui/src/documentation-dockwidget.h	Sat Aug 18 18:10:09 2012 -0400
@@ -0,0 +1,46 @@
+/* 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/>.
+ */
+
+#ifndef DOCUMENTATIONDOCKWIDGET_H
+#define DOCUMENTATIONDOCKWIDGET_H
+
+#include <QObject>
+#include <QDockWidget>
+#include "webinfo.h"
+
+class documentation_dock_widget : public QDockWidget
+{
+  Q_OBJECT
+public:
+  documentation_dock_widget (QWidget *parent = 0);
+
+public slots:
+  /** Slot to steer changing visibility from outside. */
+  void handle_visibility_changed (bool visible);
+
+signals:
+  /** Custom signal that tells if a user has clicked away that dock widget. */
+  void active_changed (bool active);
+
+protected:
+  void closeEvent (QCloseEvent *event);
+
+private:
+  webinfo *_webinfo;
+};
+
+#endif // DOCUMENTATIONDOCKWIDGET_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/libgui/src/files-dockwidget.cc	Sat Aug 18 18:10:09 2012 -0400
@@ -0,0 +1,188 @@
+/* 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 "resource-manager.h"
+#include "files-dockwidget.h"
+
+#include <QApplication>
+#include <QFileInfo>
+#include <QCompleter>
+#include <QSettings>
+#include <QProcess>
+#include <QDebug>
+
+files_dock_widget::files_dock_widget (QWidget *parent)
+  : QDockWidget (parent)
+{
+  setObjectName ("FilesDockWidget");
+  setWindowTitle (tr ("Current Directory"));
+  setWidget (new QWidget (this));
+
+  // Create a toolbar
+  _navigation_tool_bar = new QToolBar ("", widget ());
+  _navigation_tool_bar->setAllowedAreas (Qt::TopToolBarArea);
+  _navigation_tool_bar->setMovable (false);
+  _navigation_tool_bar->setIconSize (QSize (20, 20));
+
+  _directory_icon = QIcon(":/actions/icons/up.png");
+  _directory_up_action = new QAction (_directory_icon, "", _navigation_tool_bar);
+  _directory_up_action->setStatusTip (tr ("Move up one directory."));
+
+  _last_current_directory = "";
+  _current_directory = new QLineEdit (_navigation_tool_bar);
+  _current_directory->setStatusTip (tr ("Enter the path or filename."));
+
+  _navigation_tool_bar->addAction (_directory_up_action);
+  _navigation_tool_bar->addWidget (_current_directory);
+  connect (_directory_up_action, SIGNAL (triggered ()), this,
+           SLOT (do_up_directory ()));
+
+  // TODO: Add other buttons for creating directories
+
+  // Create the QFileSystemModel starting in the home directory
+  QString homePath = QDir::homePath ();
+
+  _file_system_model = new QFileSystemModel (this);
+  _file_system_model->setFilter (QDir::NoDotAndDotDot | QDir::AllEntries);
+  QModelIndex rootPathIndex = _file_system_model->setRootPath (homePath);
+
+  // Attach the model to the QTreeView and set the root index
+  _file_tree_view = new QTreeView (widget ());
+  _file_tree_view->setModel (_file_system_model);
+  _file_tree_view->setRootIndex (rootPathIndex);
+  _file_tree_view->setSortingEnabled (true);
+  _file_tree_view->setAlternatingRowColors (true);
+  _file_tree_view->setAnimated (true);
+  _file_tree_view->setColumnHidden (1, true);
+  _file_tree_view->setColumnHidden (2, true);
+  _file_tree_view->setColumnHidden (3, true);
+  _file_tree_view->setStatusTip (tr ("Doubleclick a file to open it."));
+
+  _current_directory->setText(_file_system_model->fileInfo (rootPathIndex).
+                       absoluteFilePath ());
+
+  connect (_file_tree_view, SIGNAL (doubleClicked (const QModelIndex &)), this,
+           SLOT (item_double_clicked (const QModelIndex &)));
+
+  // Layout the widgets vertically with the toolbar on top
+  QVBoxLayout *
+    layout = new QVBoxLayout ();
+  layout->setSpacing (0);
+  layout->addWidget (_navigation_tool_bar);
+  layout->addWidget (_file_tree_view);
+  layout->setMargin (1);
+  widget ()->setLayout (layout);
+  // TODO: Add right-click contextual menus for copying, pasting, deleting files (and others)
+
+  connect (_current_directory, SIGNAL (returnPressed ()),
+           this, SLOT (handle_directory_entered ()));
+
+  QCompleter *
+    completer = new QCompleter (_file_system_model, this);
+  _current_directory->setCompleter (completer);
+
+  connect (this, SIGNAL (visibilityChanged (bool)),
+           this, SLOT (handle_visibility_changed (bool)));
+
+  setFocusProxy (_current_directory);
+}
+
+void
+files_dock_widget::item_double_clicked (const QModelIndex & index)
+{
+  // Retrieve the file info associated with the model index.
+  QFileInfo fileInfo = _file_system_model->fileInfo (index);
+  display_directory (fileInfo.absoluteFilePath ());
+}
+
+void
+files_dock_widget::set_current_directory (QString currentDirectory)
+{
+  display_directory (currentDirectory);
+}
+
+void
+files_dock_widget::handle_directory_entered ()
+{
+  display_directory (_current_directory->text ());
+}
+
+void
+files_dock_widget::do_up_directory ()
+{
+  QDir dir = QDir (_file_system_model->filePath (_file_tree_view->rootIndex ()));
+  dir.cdUp ();
+  display_directory (dir.absolutePath ());
+}
+
+void
+files_dock_widget::display_directory (QString directory)
+{
+  QFileInfo fileInfo (directory);
+  if (fileInfo.exists ())
+    {
+      if (fileInfo.isDir ())
+        {
+          _file_tree_view->setRootIndex (_file_system_model->
+                                        index (fileInfo.absoluteFilePath ()));
+          _file_system_model->setRootPath (fileInfo.absoluteFilePath ());
+          _current_directory->setText (fileInfo.absoluteFilePath ());
+
+          if (_last_current_directory != fileInfo.absoluteFilePath ())
+            {
+              emit displayed_directory_changed (fileInfo.absoluteFilePath ());
+            }
+
+          _last_current_directory = fileInfo.absoluteFilePath ();
+        }
+      else
+        {
+          if (QFile::exists (fileInfo.absoluteFilePath ()))
+            emit open_file (fileInfo.absoluteFilePath ());
+        }
+    }
+}
+
+void
+files_dock_widget::notice_settings ()
+{
+  QSettings *settings = resource_manager::get_settings ();
+
+  // FIXME -- what should happen if settings is 0?
+
+  _file_tree_view->setColumnHidden (0, !settings->value ("showFilenames").toBool ());
+  _file_tree_view->setColumnHidden (1, !settings->value ("showFileSize").toBool ());
+  _file_tree_view->setColumnHidden (2, !settings->value ("showFileType").toBool ());
+  _file_tree_view->setColumnHidden (3, !settings->value ("showLastModified").toBool ());
+  _file_tree_view->setAlternatingRowColors (settings->value ("useAlternatingRowColors").toBool ());
+  //if (settings.value ("showHiddenFiles").toBool ())
+  // TODO: React on option for hidden files.
+}
+
+void
+files_dock_widget::handle_visibility_changed (bool visible)
+{
+  if (visible)
+    emit active_changed (true);
+}
+
+void
+files_dock_widget::closeEvent (QCloseEvent *event)
+{
+  emit active_changed (false);
+  QDockWidget::closeEvent (event);
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/libgui/src/files-dockwidget.h	Sat Aug 18 18:10:09 2012 -0400
@@ -0,0 +1,102 @@
+/* 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/>.
+ */
+
+#ifndef FILESDOCKWIDGET_H
+#define FILESDOCKWIDGET_H
+
+#include <QListView>
+#include <QDate>
+#include <QObject>
+#include <QWidget>
+#include <QListWidget>
+#include <QFileSystemModel>
+#include <QToolBar>
+#include <QToolButton>
+#include <QVBoxLayout>
+#include <QAction>
+#include <QTreeView>
+
+#include <QDockWidget>
+#include <QLineEdit>
+
+/**
+  \class files_dock_widget
+  \brief Dock widget to display files in the current directory.
+  */
+class files_dock_widget : public QDockWidget
+{
+  Q_OBJECT
+public:
+  /** Constructs a new files_dock_widget. */
+  files_dock_widget (QWidget *parent = 0);
+
+public slots:
+  /** Slot for handling a change in directory via double click. */
+  void item_double_clicked (const QModelIndex & index);
+
+  /** Slot for handling the up-directory button in the toolbar. */
+  void do_up_directory ();
+
+  /** Sets the current directory being displayed. */
+  void set_current_directory (QString currentDirectory);
+
+  /** Accepts user input a the line edit for the current directory. */
+  void handle_directory_entered ();
+
+  void display_directory (QString directory);
+
+  /** Tells the widget to react on changed settings. */
+  void notice_settings ();
+
+  /** Slot to steer changing visibility from outside. */
+  void handle_visibility_changed (bool visible);
+
+signals:
+  /** Emitted, whenever the user requested to open a file. */
+  void open_file (QString fileName);
+
+  /** Emitted, whenever the currently displayed directory changed. */
+  void displayed_directory_changed (QString directory);
+
+  /** Custom signal that tells if a user has clicke away that dock widget. */
+  void active_changed (bool active);
+
+protected:
+  void closeEvent (QCloseEvent *event);
+
+private:
+  // TODO: Add toolbar with buttons for navigating the path, creating dirs, etc
+
+  QString           _last_current_directory;
+
+  /** Toolbar for file and directory manipulation. */
+  QToolBar *        _navigation_tool_bar;
+
+  /** Variables for the up-directory action. */
+  QIcon             _directory_icon;
+  QAction *         _directory_up_action;
+  QToolButton *     _up_directory_button;
+
+  /** The file system model. */
+  QFileSystemModel *_file_system_model;
+
+  /** The file system view. */
+  QTreeView *       _file_tree_view;
+  QLineEdit *       _current_directory;
+};
+
+#endif // FILESDOCKWIDGET_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/libgui/src/history-dockwidget.cc	Sat Aug 18 18:10:09 2012 -0400
@@ -0,0 +1,151 @@
+/* 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 <QVBoxLayout>
+
+#include "cmd-hist.h"
+
+#include "history-dockwidget.h"
+
+history_dock_widget::history_dock_widget (QWidget * parent)
+  : QDockWidget (parent), octave_event_observer ()
+{
+  setObjectName ("HistoryDockWidget");
+  construct ();
+}
+
+void
+history_dock_widget::event_accepted (octave_event *e)
+{
+  if (dynamic_cast <octave_update_history_event*> (e))
+    {
+      // Determine the client's (our) history length and the one of the server.
+      int clientHistoryLength = _history_model->rowCount ();
+      int serverHistoryLength = command_history::length ();
+
+      // If were behind the server, iterate through all new entries and add
+      // them to our history.
+      if (clientHistoryLength < serverHistoryLength)
+        {
+          for (int i = clientHistoryLength; i < serverHistoryLength; i++)
+            {
+              _history_model->insertRow (0);
+              _history_model->setData (_history_model->index (0),
+                QString (command_history::get_entry (i).c_str ()));
+            }
+        }
+    }
+
+  // Post a new update event in a given time. This prevents flooding the
+  // event queue.
+  _update_history_model_timer.start ();
+  delete e;
+}
+
+void
+history_dock_widget::event_reject (octave_event *e)
+{
+  delete e;
+}
+
+void
+history_dock_widget::construct ()
+{
+  _history_model = new QStringListModel ();
+  _sort_filter_proxy_model.setSourceModel (_history_model);
+  _history_list_view = new QListView (this);
+  _history_list_view->setModel (&_sort_filter_proxy_model);
+  _history_list_view->setAlternatingRowColors (true);
+  _history_list_view->setEditTriggers (QAbstractItemView::NoEditTriggers);
+  _history_list_view->setStatusTip (tr ("Doubleclick a command to transfer it to the terminal."));
+  _filter_line_edit = new QLineEdit (this);
+  _filter_line_edit->setStatusTip (tr ("Enter text to filter the command history."));
+  QVBoxLayout *layout = new QVBoxLayout ();
+
+  setWindowTitle (tr ("Command History"));
+  setWidget (new QWidget ());
+
+  layout->addWidget (_history_list_view);
+  layout->addWidget (_filter_line_edit);
+  layout->setMargin (2);
+
+  widget ()->setLayout (layout);
+
+  connect (_filter_line_edit,
+           SIGNAL (textEdited (QString)),
+           &_sort_filter_proxy_model,
+           SLOT (setFilterWildcard (QString)));
+
+  connect (_history_list_view,
+           SIGNAL (doubleClicked (QModelIndex)),
+           this,
+           SLOT (handle_double_click (QModelIndex)));
+
+  connect (this,
+           SIGNAL (visibilityChanged (bool)),
+           this,
+           SLOT (handle_visibility_changed (bool)));
+
+  _update_history_model_timer.setInterval (200);
+  _update_history_model_timer.setSingleShot (true);
+
+  connect (&_update_history_model_timer,
+           SIGNAL (timeout ()),
+           this,
+           SLOT (request_history_model_update ()));
+
+  _update_history_model_timer.start ();
+
+  setFocusProxy (_filter_line_edit);
+}
+
+void
+history_dock_widget::handle_double_click (QModelIndex modelIndex)
+{
+  emit command_double_clicked (modelIndex.data().toString());
+}
+
+void
+history_dock_widget::handle_visibility_changed (bool visible)
+{
+  if (visible)
+    emit active_changed (true);
+}
+
+void
+history_dock_widget::request_history_model_update ()
+{
+  octave_link::instance ()
+      ->post_event (new octave_update_history_event (*this));
+}
+
+void
+history_dock_widget::reset_model ()
+{
+  _history_model->setStringList (QStringList ());
+}
+
+void
+history_dock_widget::closeEvent (QCloseEvent *event)
+{
+  emit active_changed (false);
+  QDockWidget::closeEvent (event);
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/libgui/src/history-dockwidget.h	Sat Aug 18 18:10:09 2012 -0400
@@ -0,0 +1,70 @@
+/* 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/>.
+ */
+
+#ifndef HISTORYDOCKWIDGET_H
+#define HISTORYDOCKWIDGET_H
+
+#include <QDockWidget>
+#include <QLineEdit>
+#include <QListView>
+#include <QSortFilterProxyModel>
+#include <QStringListModel>
+#include <QTimer>
+
+#include "octave-link.h"
+#include "octave-event-observer.h"
+
+class history_dock_widget : public QDockWidget, public octave_event_observer
+{
+Q_OBJECT
+public:
+  history_dock_widget (QWidget *parent = 0);
+
+  void event_accepted (octave_event *e);
+  void event_reject (octave_event *e);
+
+public slots:
+  void handle_visibility_changed (bool visible);
+  void request_history_model_update ();
+  void reset_model ();
+
+signals:
+  void information (QString message);
+
+  /** Emitted, whenever the user double-clicked a command in the history. */
+  void command_double_clicked (QString command);
+
+  /** Custom signal that tells if a user has clicked away that dock widget. */
+  void active_changed (bool active);
+protected:
+  void closeEvent (QCloseEvent *event);
+private slots:
+  void handle_double_click (QModelIndex modelIndex);
+
+private:
+  void construct ();
+  QListView *_history_list_view;
+  QLineEdit *_filter_line_edit;
+  QSortFilterProxyModel _sort_filter_proxy_model;
+
+  /** Stores the current history_model. */
+  QStringListModel *_history_model;
+
+  QTimer _update_history_model_timer;
+};
+
+#endif // HISTORYDOCKWIDGET_H
Binary file libgui/src/icons/arrow_right.png has changed
Binary file libgui/src/icons/artsbuilderexecute.png has changed
Binary file libgui/src/icons/bookmark.png has changed
Binary file libgui/src/icons/bp_next.png has changed
Binary file libgui/src/icons/bp_prev.png has changed
Binary file libgui/src/icons/bp_rm_all.png has changed
Binary file libgui/src/icons/bp_toggle.png has changed
Binary file libgui/src/icons/chat.png has changed
Binary file libgui/src/icons/configure.png has changed
Binary file libgui/src/icons/db_cont.png has changed
Binary file libgui/src/icons/db_step.png has changed
Binary file libgui/src/icons/db_step_in.png has changed
Binary file libgui/src/icons/db_step_out.png has changed
Binary file libgui/src/icons/db_stop.png has changed
Binary file libgui/src/icons/editcopy.png has changed
Binary file libgui/src/icons/editcut.png has changed
Binary file libgui/src/icons/editpaste.png has changed
Binary file libgui/src/icons/filenew.png has changed
Binary file libgui/src/icons/fileopen.png has changed
Binary file libgui/src/icons/filesave.png has changed
Binary file libgui/src/icons/filesaveas.png has changed
Binary file libgui/src/icons/find.png has changed
Binary file libgui/src/icons/help_index.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/libgui/src/icons/icons_license	Sat Aug 18 18:10:09 2012 -0400
@@ -0,0 +1,323 @@
+Icons license for: chat.png help_index.png terminal.png
+jabber_protocol.png
+
+by http://www.everaldo.com/ on 17.07.2011:
+
+The Crystal Project are released under LGPL. GNU General Public License.
+
+This License Agreement applies to any software library or other program
+which contains a notice placed by the copyright holder or other
+authorized party saying it may be distributed under the terms of this
+Lesser General Public License (also called "this License"). Each
+licensee is addressed as "you".
+
+A "library" means a collection of software functions and/or data
+prepared so as to be conveniently linked with application programs
+(which use some of those functions and data) to form executables.
+
+The "Library", below, refers to any such software library or work which
+has been distributed under these terms. A "work based on the Library"
+means either the Library or any derivative work under copyright law:
+that is to say, a work containing the Library or a portion of it, either
+verbatim or with modifications and/or translated straightforwardly into
+another language. (Hereinafter, translation is included without
+limitation in the term "modification".)
+
+"Source code" for a work means the preferred form of the work for making
+modifications to it. For a library, complete source code means all the
+source code for all modules it contains, plus any associated interface
+definition files, plus the scripts used to control compilation and
+installation of the library.
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope. The act of running
+a program using the Library is not restricted, and output from such a
+program is covered only if its contents constitute a work based on the
+Library (independent of the use of the Library in a tool for writing
+it). Whether that is true depends on what the Library does and what the
+program that uses the Library does.
+
+You may copy and distribute verbatim copies of the Library's complete
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the notices
+that refer to this License and to the absence of any warranty; and
+distribute a copy of this License along with the Library.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+You may modify your copy or copies of the Library or any portion of it,
+thus forming a work based on the Library, and copy and distribute such
+modifications or work under the terms of Section 1 above, provided that
+you also meet all of these conditions:
+
+The modified work must itself be a software library. You must cause the
+files modified to carry prominent notices stating that you changed the
+files and the date of any change. You must cause the whole of the work
+to be licensed at no charge to all third parties under the terms of this
+License. If a facility in the modified Library refers to a function or a
+table of data to be supplied by an application program that uses the
+facility, other than as an argument passed when the facility is invoked,
+then you must make a good faith effort to ensure that, in the event an
+application does not supply such function or table, the facility still
+operates, and performs whatever part of its purpose remains meaningful.
+(For example, a function in a library to compute square roots has a
+purpose that is entirely well-defined independent of the application.
+Therefore, Subsection 2d requires that any application-supplied function
+or table used by this function must be optional: if the application does
+not supply it, the square root function must still compute square
+roots.)
+
+These requirements apply to the modified work as a whole. If
+identifiable sections of that work are not derived from the Library, and
+can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works. But when you
+distribute the same sections as part of a whole which is a work based on
+the Library, the distribution of the whole must be on the terms of this
+License, whose permissions for other licensees extend to the entire
+whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Library.
+
+In addition, mere aggregation of another work not based on the Library
+with the Library (or with a work based on the Library) on a volume of a
+storage or distribution medium does not bring the other work under the
+scope of this License.
+
+You may opt to apply the terms of the ordinary GNU General Public
+License instead of this License to a given copy of the Library. To do
+this, you must alter all the notices that refer to this License, so that
+they refer to the ordinary GNU General Public License, version 2,
+instead of to this License. (If a newer version than version 2 of the
+ordinary GNU General Public License has appeared, then you can specify
+that version instead if you wish.) Do not make any other change in these
+notices.
+
+Once this change is made in a given copy, it is irreversible for that
+copy, so the ordinary GNU General Public License applies to all
+subsequent copies and derivative works made from that copy.
+
+This option is useful when you wish to copy part of the code of the
+Library into a program that is not a library.
+
+You may copy and distribute the Library (or a portion or derivative of
+it, under Section 2) in object code or executable form under the terms
+of Sections 1 and 2 above provided that you accompany it with the
+complete corresponding machine-readable source code, which must be
+distributed under the terms of Sections 1 and 2 above on a medium
+customarily used for software interchange.
+
+If distribution of object code is made by offering access to copy from a
+designated place, then offering equivalent access to copy the source
+code from the same place satisfies the requirement to distribute the
+source code, even though third parties are not compelled to copy the
+source along with the object code.
+
+A program that contains no derivative of any portion of the Library, but
+is designed to work with the Library by being compiled or linked with
+it, is called a "work that uses the Library". Such a work, in isolation,
+is not a derivative work of the Library, and therefore falls outside the
+scope of this License.
+
+However, linking a "work that uses the Library" with the Library creates
+an executable that is a derivative of the Library (because it contains
+portions of the Library), rather than a "work that uses the library".
+The executable is therefore covered by this License. Section 6 states
+terms for distribution of such executables. When a "work that uses the
+Library" uses material from a header file that is part of the Library,
+the object code for the work may be a derivative work of the Library
+even though the source code is not. Whether this is true is especially
+significant if the work can be linked without the Library, or if the
+work is itself a library. The threshold for this to be true is not
+precisely defined by law.
+
+If such an object file uses only numerical parameters, data structure
+layouts and accessors, and small macros and small inline functions (ten
+lines or less in length), then the use of the object file is
+unrestricted, regardless of whether it is legally a derivative work.
+(Executables containing this object code plus portions of the Library
+will still fall under Section 6.)
+
+Otherwise, if the work is a derivative of the Library, you may
+distribute the object code for the work under the terms of Section 6.
+Any executables containing that work also fall under Section 6, whether
+or not they are linked directly with the Library itself.
+
+As an exception to the Sections above, you may also combine or link a
+"work that uses the Library" with the Library to produce a work
+containing portions of the Library, and distribute that work under terms
+of your choice, provided that the terms permit modification of the work
+for the customer's own use and reverse engineering for debugging such
+modifications.
+
+You must give prominent notice with each copy of the work that the
+Library is used in it and that the Library and its use are covered by
+this License. You must supply a copy of this License. If the work during
+execution displays copyright notices, you must include the copyright
+notice for the Library among them, as well as a reference directing the
+user to the copy of this License. Also, you must do one of these things:
+
+Accompany the work with the complete corresponding machine-readable
+source code for the Library including whatever changes were used in the
+work (which must be distributed under Sections 1 and 2 above); and, if
+the work is an executable linked with the Library, with the complete
+machine-readable "work that uses the Library", as object code and/or
+source code, so that the user can modify the Library and then relink to
+produce a modified executable containing the modified Library. (It is
+understood that the user who changes the contents of definitions files
+in the Library will not necessarily be able to recompile the application
+to use the modified definitions.) . Use a suitable shared library
+mechanism for linking with the Library. A suitable mechanism is one that
+(1) uses at run time a copy of the library already present on the user's
+computer system, rather than copying library functions into the
+executable, and (2) will operate properly with a modified version of the
+library, if the user installs one, as long as the modified version is
+interface-compatible with the version that the work was made with.
+Accompany the work with a written offer, valid for at least three years,
+to give the same user the materials specified in Subsection 6a, above,
+for a charge no more than the cost of performing this distribution. If
+distribution of the work is made by offering access to copy from a
+designated place, offer equivalent access to copy the above specified
+materials from the same place. Verify that the user has already received
+a copy of these materials or that you have already sent this user a
+copy. For an executable, the required form of the "work that uses the
+Library" must include any data and utility programs needed for
+reproducing the executable from it. However, as a special exception, the
+materials to be distributed need not include anything that is normally
+distributed (in either source or binary form) with the major components
+(compiler, kernel, and so on) of the operating system on which the
+executable runs, unless that component itself accompanies the
+executable.
+
+It may happen that this requirement contradicts the license restrictions
+of other proprietary libraries that do not normally accompany the
+operating system. Such a contradiction means you cannot use both them
+and the Library together in an executable that you distribute.
+
+You may place library facilities that are a work based on the Library
+side-by-side in a single library together with other library facilities
+not covered by this License, and distribute such a combined library,
+provided that the separate distribution of the work based on the Library
+and of the other library facilities is otherwise permitted, and provided
+that you do these two things:
+
+Accompany the combined library with a copy of the same work based on the
+Library, uncombined with any other library facilities. This must be
+distributed under the terms of the Sections above.
+
+Give prominent notice with the combined library of the fact that part of
+it is a work based on the Library, and explaining where to find the
+accompanying uncombined form of the same work.
+
+You may not copy, modify, sublicense, link with, or distribute the
+Library except as expressly provided under this License. Any attempt
+otherwise to copy, modify, sublicense, link with, or distribute the
+Library is void, and will automatically terminate your rights under this
+License. However, parties who have received copies, or rights, from you
+under this License will not have their licenses terminated so long as
+such parties remain in full compliance.
+
+You are not required to accept this License, since you have not signed
+it. However, nothing else grants you permission to modify or distribute
+the Library or its derivative works. These actions are prohibited by law
+if you do not accept this License. Therefore, by modifying or
+distributing the Library (or any work based on the Library), you
+indicate your acceptance of this License to do so, and all its terms and
+conditions for copying, distributing or modifying the Library or works
+based on it.
+
+Each time you redistribute the Library (or any work based on the
+Library), the recipient automatically receives a license from the
+original licensor to copy, distribute, link with or modify the Library
+subject to these terms and conditions. You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties with
+this License.
+
+If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot distribute
+so as to satisfy simultaneously your obligations under this License and
+any other pertinent obligations, then as a consequence you may not
+distribute the Library at all. For example, if a patent license would
+not permit royalty-free redistribution of the Library by all those who
+receive copies directly or indirectly through you, then the only way you
+could satisfy both it and this License would be to refrain entirely from
+distribution of the Library.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply, and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system which is implemented
+by public license practices. Many people have made generous
+contributions to the wide range of software distributed through that
+system in reliance on consistent application of that system; it is up to
+the author/donor to decide if he or she is willing to distribute
+software through any other system and a licensee cannot impose that
+choice.
+
+This section is intended to make thoroughly clear what is believed to be
+a consequence of the rest of this License.
+
+If the distribution and/or use of the Library is restricted in certain
+countries either by patents or by copyrighted interfaces, the original
+copyright holder who places the Library under this License may add an
+explicit geographical distribution limitation excluding those countries,
+so that distribution is permitted only in or among countries not thus
+excluded. In such case, this License incorporates the limitation as if
+written in the body of this License.
+
+The Free Software Foundation may publish revised and/or new versions of
+the Lesser General Public License from time to time. Such new versions
+will be similar in spirit to the present version, but may differ in
+detail to address new problems or concerns.
+
+Each version is given a distinguishing version number. If the Library
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and
+conditions either of that version or of any later version published by
+the Free Software Foundation. If the Library does not specify a license
+version number, you may choose any version ever published by the Free
+Software Foundation.
+
+If you wish to incorporate parts of the Library into other free programs
+whose distribution conditions are incompatible with these, write to the
+author to ask for permission. For software which is copyrighted by the
+Free Software Foundation, write to the Free Software Foundation; we
+sometimes make exceptions for this. Our decision will be guided by the
+two goals of preserving the free status of all derivatives of our free
+software and of promoting the sharing and reuse of software generally.
+
+No Warranty
+
+Because the library is licensed free of charge, there is no warranty for
+the library, to the extent permitted by applicable law. Except when
+otherwise stated in writing the copyright holders and/or other parties
+provide the library "as is" without warranty of any kind, either
+expressed or implied, including, but not limited to, the implied
+warranties of merchantability and fitness for a particular purpose. The
+entire risk as to the quality and performance of the library is with
+you. Should the library prove defective, you assume the cost of all
+necessary servicing, repair or correction.
+
+In no event unless required by applicable law or agreed to in writing
+will any copyright holder, or any other party who may modify and/or
+redistribute the library as permitted above, be liable to you for
+damages, including any general, special, incidental or consequential
+damages arising out of the use or inability to use the library
+(including but not limited to loss of data or data being rendered
+inaccurate or losses sustained by you or third parties or a failure of
+the library to operate with any other software), even if such holder or
+other party has been advised of the possibility of such damages.
Binary file libgui/src/icons/jabber_protocol.png has changed
Binary file libgui/src/icons/logo.png has changed
Binary file libgui/src/icons/question.png has changed
Binary file libgui/src/icons/redled.png has changed
Binary file libgui/src/icons/redo.png has changed
Binary file libgui/src/icons/search.png has changed
Binary file libgui/src/icons/star.png has changed
Binary file libgui/src/icons/stop.png has changed
Binary file libgui/src/icons/terminal.png has changed
Binary file libgui/src/icons/undo.png has changed
Binary file libgui/src/icons/up.png has changed
Binary file libgui/src/icons/zoom-in.png has changed
Binary file libgui/src/icons/zoom-out.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/libgui/src/m-editor/file-editor-interface.h	Sat Aug 18 18:10:09 2012 -0400
@@ -0,0 +1,78 @@
+/* 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/>.
+ */
+
+#ifndef FILEEDITORINTERFACE_H
+#define FILEEDITORINTERFACE_H
+
+#include <QDockWidget>
+#include <QMenu>
+#include <QToolBar>
+
+class QTerminal;
+class main_window;
+
+class file_editor_interface : public QDockWidget
+{
+  Q_OBJECT
+
+  public:
+    file_editor_interface (QTerminal *terminal, main_window *mainWindow)
+      : QDockWidget ((QWidget*)mainWindow) // QDockWidget constructor is explicit, hence the cast.
+    {
+      setObjectName ("FileEditor");
+      _terminal = terminal;
+      _main_window = mainWindow;
+
+      connect (this, SIGNAL (visibilityChanged (bool)), this,
+               SLOT (handle_visibility_changed (bool)));
+    }
+
+    virtual ~file_editor_interface () { }
+
+    virtual QMenu *debug_menu () = 0;
+    virtual QToolBar *toolbar () = 0;
+
+    virtual void handle_entered_debug_mode () = 0;
+    virtual void handle_quit_debug_mode () = 0;
+
+  public slots:
+    virtual void request_new_file () = 0;
+    virtual void request_open_file () = 0;
+    virtual void request_open_file (QString fileName) = 0;
+
+  signals:
+      void active_changed (bool active);
+
+  protected:
+    QTerminal* _terminal;
+    main_window* _main_window;
+
+    void closeEvent (QCloseEvent *event)
+    {
+      emit active_changed (false);
+      QDockWidget::closeEvent (event);
+    }
+
+  protected slots:
+    void handle_visibility_changed (bool visible)
+    {
+      if (visible)
+        emit active_changed (true);
+    }
+};
+
+#endif // FILEEDITORINTERFACE_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/libgui/src/m-editor/file-editor-tab.cc	Sat Aug 18 18:10:09 2012 -0400
@@ -0,0 +1,816 @@
+/* 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 "file-editor-tab.h"
+#include "file-editor.h"
+#include "find-dialog.h"
+#include "octave-link.h"
+
+
+#include <Qsci/qsciapis.h>
+// Not available in the Debian repos yet!
+// #include <Qsci/qscilexeroctave.h>
+#include "lexer-octave-gui.h"
+#include <Qsci/qscilexercpp.h>
+#include <Qsci/qscilexerbash.h>
+#include <Qsci/qscilexerperl.h>
+#include <Qsci/qscilexerbatch.h>
+#include <Qsci/qscilexerdiff.h>
+#include "resource-manager.h"
+#include <QMessageBox>
+#include <QVBoxLayout>
+
+file_editor_tab::file_editor_tab(file_editor *fileEditor)
+  : QWidget ((QWidget*)fileEditor), octave_event_observer ()
+{
+  QSettings *settings = resource_manager::get_settings ();
+
+  // FIXME -- what should happen if settings is 0?
+
+  _file_editor = fileEditor;
+  _file_name = "";
+  _edit_area = new QsciScintilla (this);
+
+  // symbols
+  _edit_area->setMarginType (1, QsciScintilla::SymbolMargin);
+  _edit_area->setMarginSensitivity (1, true);
+  _edit_area->markerDefine (QsciScintilla::RightTriangle, bookmark);
+  _edit_area->markerDefine (QPixmap (":/actions/icons/redled.png"),
+                            breakpoint);
+  _edit_area->markerDefine (QPixmap (":/actions/icons/arrow_right.png"),
+                            debugger_position);
+
+  connect (_edit_area, SIGNAL (marginClicked (int, int,
+                                              Qt::KeyboardModifiers)),
+           this, SLOT (handle_margin_clicked (int, int,
+                                              Qt::KeyboardModifiers)));
+
+  // line numbers
+  _edit_area->setMarginsForegroundColor(QColor(96,96,96));
+  _edit_area->setMarginsBackgroundColor(QColor(232,232,220));
+  if (settings->value ("editor/showLineNumbers",true).toBool ())
+    {
+      QFont marginFont( settings->value ("editor/fontName","Courier").toString () ,
+                        settings->value ("editor/fontSize",10).toInt () );
+      _edit_area->setMarginsFont( marginFont );
+      QFontMetrics metrics(marginFont);
+      _edit_area->setMarginType (2, QsciScintilla::TextMargin);
+      _edit_area->setMarginWidth(2, metrics.width("9999"));
+      _edit_area->setMarginLineNumbers (2, true);
+    }
+
+  // code folding
+  _edit_area->setMarginType (3, QsciScintilla::SymbolMargin);
+  _edit_area->setFolding (QsciScintilla::BoxedTreeFoldStyle , 3);
+
+  // other features
+  if (settings->value ("editor/highlightCurrentLine",true).toBool ())
+    {
+      _edit_area->setCaretLineVisible(true);
+      _edit_area->setCaretLineBackgroundColor(QColor(245,245,245));
+    }
+  _edit_area->setBraceMatching (QsciScintilla::StrictBraceMatch);
+  _edit_area->setAutoIndent (true);
+  _edit_area->setIndentationWidth (2);
+  _edit_area->setIndentationsUseTabs (false);
+  if (settings->value ("editor/codeCompletion",true).toBool ())
+    {
+      _edit_area->autoCompleteFromAll ();
+      _edit_area->setAutoCompletionSource(QsciScintilla::AcsAll);
+      _edit_area->setAutoCompletionThreshold (1);
+    }
+  _edit_area->setUtf8 (true);
+
+  QVBoxLayout *layout = new QVBoxLayout ();
+  layout->addWidget (_edit_area);
+  layout->setMargin (0);
+  setLayout (layout);
+
+  // connect modified signal
+  connect (_edit_area, SIGNAL (modificationChanged (bool)),
+           this, SLOT (update_window_title (bool)));
+  connect (_edit_area, SIGNAL (copyAvailable (bool)),
+           this, SLOT (handle_copy_available (bool)));
+  connect (&_file_system_watcher, SIGNAL (fileChanged (QString)),
+           this, SLOT (file_has_changed (QString)));
+
+  _file_name = "";
+  update_window_title (false);
+}
+
+bool
+file_editor_tab::copy_available ()
+{
+  return _copy_available;
+}
+
+void
+file_editor_tab::event_accepted (octave_event *e)
+{
+  if (dynamic_cast<octave_run_file_event*> (e))
+    {
+      // File was run successfully.
+    }
+
+  if (octave_add_breakpoint_event *abe
+      = dynamic_cast<octave_add_breakpoint_event*> (e))
+    {
+      // TODO: Check file.
+      _edit_area->markerAdd (abe->get_line (), breakpoint);
+    }
+
+  if (octave_remove_breakpoint_event *rbe
+      = dynamic_cast<octave_remove_breakpoint_event*> (e))
+    {
+      // TODO: Check file.
+      _edit_area->markerDelete (rbe->get_line (), breakpoint);
+    }
+
+  if (octave_remove_all_breakpoints_event *rabe
+      = dynamic_cast<octave_remove_all_breakpoints_event*> (e))
+    {
+      Q_UNUSED (rabe);
+      _edit_area->markerDeleteAll (breakpoint);
+    }
+
+  delete e;
+}
+
+void
+file_editor_tab::event_reject (octave_event *e)
+{
+  if (dynamic_cast<octave_run_file_event*> (e))
+    {
+      // Running file failed.
+    }
+  delete e;
+}
+
+void
+file_editor_tab::closeEvent (QCloseEvent *event)
+{
+  if (_file_editor->get_main_window ()->is_closing ())
+    {
+      // close whole application: save file or not if modified
+      check_file_modified ("Closing Octave", 0); // no cancel possible
+      event->accept ();
+    }
+  else
+    {
+      // ignore close event if file is not saved and user cancels
+      // closing this window
+      if (check_file_modified ("Close File",
+                               QMessageBox::Cancel) == QMessageBox::Cancel)
+        {
+          event->ignore ();
+        }
+      else
+        {
+          event->accept();
+        }
+    }
+}
+
+void
+file_editor_tab::set_file_name (QString fileName)
+{
+  _file_name = fileName;
+  update_lexer ();
+  update_tracked_file ();
+}
+
+void
+file_editor_tab::handle_margin_clicked(int margin, int line,
+                                       Qt::KeyboardModifiers state)
+{
+  Q_UNUSED (state);
+  if (margin == 1)
+    {
+      unsigned int mask = _edit_area->markersAtLine (line);
+
+      if (state & Qt::ControlModifier)
+        {
+          if (mask && (1 << bookmark))
+            _edit_area->markerDelete(line,bookmark);
+          else
+            _edit_area->markerAdd(line,bookmark);
+        }
+      else
+        {
+          if (mask && (1 << breakpoint))
+            {
+              request_remove_breakpoint (line);
+            }
+          else
+            {
+              request_add_breakpoint (line);
+            }
+        }
+    }
+}
+
+void
+file_editor_tab::update_lexer ()
+{
+  QsciLexer *lexer =  _edit_area->lexer ();
+  delete lexer;
+
+  if (_file_name.endsWith (".m") || _file_name.endsWith (".M"))
+    {
+      lexer = new lexer_octave_gui ();
+
+      // The API info that is used for auto completion
+      // TODO: Where to store a file with API info (raw or prepared?)?
+      // TODO: Also provide infos on octave-forge functions?
+      // TODO: Also provide infos on function parameters?
+      // By now, use the keywords-list from syntax highlighting
+
+      QsciAPIs *lexer_api = new QsciAPIs (lexer);
+
+      QString keyword;
+      QStringList keywordList;
+
+       // get whole string with all keywords
+      keyword = lexer->keywords (1);
+      // split into single strings
+      keywordList = keyword.split (QRegExp ("\\s+"));
+
+      int i;
+      for (i = 0; i < keywordList.size (); i++)
+        {
+           // add single strings to the API
+          lexer_api->add (keywordList.at (i));
+        }
+      // prepare API info ... this make take some time
+      lexer_api->prepare ();
+    }
+  else if (_file_name.endsWith (".c")
+        || _file_name.endsWith (".cc")
+        || _file_name.endsWith (".cpp")
+        || _file_name.endsWith (".cxx")
+        || _file_name.endsWith (".c++")
+        || _file_name.endsWith (".h")
+        || _file_name.endsWith (".hh")
+        || _file_name.endsWith (".hpp")
+        || _file_name.endsWith (".h++"))
+    {
+      lexer = new QsciLexerCPP ();
+    }
+  else if (_file_name.endsWith (".pl"))
+    {
+      lexer = new QsciLexerPerl ();
+    }
+  else if (_file_name.endsWith (".bat"))
+    {
+      lexer = new QsciLexerBatch ();
+    }
+  else if (_file_name.endsWith (".diff"))
+    {
+      lexer = new QsciLexerDiff ();
+    }
+  else // Default to bash lexer.
+    {
+      lexer = new QsciLexerBash ();
+    }
+
+  QSettings *settings = resource_manager::get_settings ();
+
+  // FIXME -- what should happen if settings is 0?
+
+  // Editor font (default or from settings)
+  lexer->setDefaultFont (QFont (
+                                settings->value ("editor/fontName",
+                                                 "Courier").toString (),
+                                settings->value ("editor/fontSize",
+                                                 10).toInt ()));
+
+  // TODO: Autoindent not working as it should
+  lexer->setAutoIndentStyle (QsciScintilla::AiMaintain ||
+                             QsciScintilla::AiOpening  ||
+                             QsciScintilla::AiClosing);
+
+  _edit_area->setLexer (lexer);
+}
+
+void
+file_editor_tab::request_add_breakpoint (int line)
+{
+  QFileInfo file_info (_file_name);
+  QString path = file_info.absolutePath ();
+  QString function_name = file_info.fileName ();
+
+  // We have to cut off the suffix, because octave appends it.
+  function_name.chop (file_info.suffix ().length () + 1);
+
+  octave_link::instance ()->post_event
+      (new octave_add_breakpoint_event (*this,
+                                        path.toStdString (),
+                                        function_name.toStdString (),
+                                        line));
+}
+
+void
+file_editor_tab::request_remove_breakpoint (int line)
+{
+  QFileInfo file_info (_file_name);
+  QString path = file_info.absolutePath ();
+  QString function_name = file_info.fileName ();
+
+  // We have to cut off the suffix, because octave appends it.
+  function_name.chop (file_info.suffix ().length () + 1);
+
+  octave_link::instance ()->post_event
+      (new octave_remove_breakpoint_event (*this,
+                                           path.toStdString (),
+                                           function_name.toStdString (),
+                                           line));
+}
+
+void
+file_editor_tab::comment_selected_text ()
+{
+  do_comment_selected_text (true);
+}
+
+void
+file_editor_tab::uncomment_selected_text ()
+{
+  do_comment_selected_text (false);
+}
+
+void
+file_editor_tab::do_comment_selected_text (bool comment)
+{
+  if ( _edit_area->hasSelectedText() )
+    {
+      int lineFrom, lineTo, colFrom, colTo, i;
+      _edit_area->getSelection (&lineFrom,&colFrom,&lineTo,&colTo);
+      if ( colTo == 0 )  // the beginning of last line is not selected
+        lineTo--;        // stop at line above
+      _edit_area->beginUndoAction ();
+      for ( i=lineFrom; i<=lineTo; i++ )
+        {
+          if ( comment )
+            _edit_area->insertAt("%",i,0);
+          else
+            {
+              QString line(_edit_area->text(i));
+              if ( line.startsWith("%") )
+                {
+                  _edit_area->setSelection(i,0,i,1);
+                  _edit_area->removeSelectedText();
+                }
+            }
+        }
+      _edit_area->endUndoAction ();
+    }
+}
+
+void
+file_editor_tab::find ()
+{
+  find_dialog dialog (_edit_area);
+  dialog.exec ();
+}
+
+void
+file_editor_tab::update_window_title (bool modified)
+{
+  QString title(_file_name);
+  if ( !_long_title )
+    {
+      QFileInfo file(_file_name);
+      title = file.fileName();
+    }
+
+  if ( modified )
+    {
+      emit file_name_changed (title.prepend("* "));
+    }
+  else
+    emit file_name_changed (title);
+}
+
+void
+file_editor_tab::handle_copy_available(bool enableCopy)
+{
+  _copy_available = enableCopy;
+  emit editor_state_changed ();
+}
+
+void
+file_editor_tab::update_tracked_file ()
+{
+  QStringList trackedFiles = _file_system_watcher.files ();
+  if (!trackedFiles.isEmpty ())
+    _file_system_watcher.removePaths (trackedFiles);
+
+  if (_file_name != UNNAMED_FILE)
+    _file_system_watcher.addPath (_file_name);
+}
+
+int
+file_editor_tab::check_file_modified (QString msg, int cancelButton)
+{
+  int decision = QMessageBox::Yes;
+  if (_edit_area->isModified ())
+    {
+      // file is modified but not saved, aks user what to do
+      decision = QMessageBox::warning (this,
+                                       msg,
+                                       tr ("The file %1\n"
+                                           "has been modified. Do you want to save the changes?").
+                                       arg (_file_name),
+                                       QMessageBox::Save,
+                                       QMessageBox::Discard, cancelButton );
+      if (decision == QMessageBox::Save)
+        {
+          save_file ();
+          if (_edit_area->isModified ())
+            {
+              // If the user attempted to save the file, but it's still
+              // modified, then probably something went wrong, so return
+              // cancel for cancel this operation or try to save files
+              // as if cancel not possible
+              if ( cancelButton )
+                return (QMessageBox::Cancel);
+              else
+                save_file_as ();
+            }
+        }
+    }
+  return (decision);
+}
+
+void
+file_editor_tab::remove_bookmark ()
+{
+  _edit_area->markerDeleteAll (bookmark);
+}
+
+void
+file_editor_tab::toggle_bookmark ()
+{
+  int line, cur;
+  _edit_area->getCursorPosition (&line,&cur);
+  if ( _edit_area->markersAtLine (line) && (1 << bookmark) )
+    _edit_area->markerDelete (line, bookmark);
+  else
+    _edit_area->markerAdd (line, bookmark);
+}
+
+void
+file_editor_tab::next_bookmark()
+{
+  int line, cur, nextline;
+  _edit_area->getCursorPosition (&line, &cur);
+  if ( _edit_area->markersAtLine (line) && (1 << bookmark) )
+    line++; // we have a breakpoint here, so start search from next line
+  nextline = _edit_area->markerFindNext (line, (1 << bookmark));
+  _edit_area->setCursorPosition (nextline, 0);
+}
+
+void
+file_editor_tab::previous_bookmark ()
+{
+  int line, cur, prevline;
+  _edit_area->getCursorPosition (&line, &cur);
+  if ( _edit_area->markersAtLine (line) && (1 << bookmark) )
+    line--; // we have a breakpoint here, so start search from prev line
+  prevline = _edit_area->markerFindPrevious (line, (1 << bookmark));
+  _edit_area->setCursorPosition (prevline, 0);
+}
+
+void
+file_editor_tab::remove_all_breakpoints ()
+{
+  QFileInfo file_info (_file_name);
+  QString path = file_info.absolutePath ();
+  QString function_name = file_info.fileName ();
+
+  // We have to cut off the suffix, because octave appends it.
+  function_name.chop (file_info.suffix ().length () + 1);
+
+  octave_link::instance ()->post_event
+      (new octave_remove_all_breakpoints_event (*this,
+                                                path.toStdString (),
+                                                function_name.toStdString ()));
+}
+
+void
+file_editor_tab::toggle_breakpoint ()
+{
+  int line, cur;
+  _edit_area->getCursorPosition (&line, &cur);
+  if ( _edit_area->markersAtLine (line) && (1 << breakpoint) )
+    request_remove_breakpoint (line);
+  else
+    request_add_breakpoint (line);
+}
+
+void
+file_editor_tab::next_breakpoint ()
+{
+  int line, cur, nextline;
+  _edit_area->getCursorPosition (&line, &cur);
+  if ( _edit_area->markersAtLine (line) && (1 << breakpoint) )
+    line++; // we have a breakpoint here, so start search from next line
+  nextline = _edit_area->markerFindNext (line, (1 << breakpoint));
+  _edit_area->setCursorPosition (nextline, 0);
+}
+
+void
+file_editor_tab::previous_breakpoint ()
+{
+  int line, cur, prevline;
+  _edit_area->getCursorPosition (&line, &cur);
+  if ( _edit_area->markersAtLine (line) && (1 << breakpoint) )
+    line--; // we have a breakpoint here, so start search from prev line
+  prevline = _edit_area->markerFindPrevious (line, (1 << breakpoint));
+  _edit_area->setCursorPosition (prevline, 0);
+}
+
+void
+file_editor_tab::cut ()
+{
+  _edit_area->cut ();
+}
+
+void
+file_editor_tab::copy ()
+{
+  _edit_area->copy ();
+}
+
+void
+file_editor_tab::paste ()
+{
+  _edit_area->paste ();
+}
+
+void
+file_editor_tab::undo ()
+{
+  _edit_area->undo ();
+}
+
+void
+file_editor_tab::redo ()
+{
+  _edit_area->redo ();
+}
+
+void
+file_editor_tab::set_debugger_position (int line)
+{
+  _edit_area->markerDeleteAll (debugger_position);
+  if (line > 0)
+    {
+      _edit_area->markerAdd (line, debugger_position);
+    }
+}
+
+void
+file_editor_tab::set_modified (bool modified)
+{
+  _edit_area->setModified (modified);
+}
+
+bool
+file_editor_tab::open_file ()
+{
+  QString openFileName;
+  QFileDialog fileDialog(this);
+  fileDialog.setNameFilter(SAVE_FILE_FILTER);
+  fileDialog.setAcceptMode(QFileDialog::AcceptOpen);
+  fileDialog.setViewMode(QFileDialog::Detail);
+  if (fileDialog.exec () == QDialog::Accepted)
+    {
+      openFileName = fileDialog.selectedFiles().at(0);
+      if (openFileName.isEmpty ())
+        return false;
+
+      load_file(openFileName);
+      return true;
+    }
+  else
+    {
+      return false;
+    }
+}
+
+void
+file_editor_tab::load_file (QString fileName)
+{
+  if (!_file_editor->isVisible ())
+    {
+      _file_editor->show ();
+    }
+
+  QFile file (fileName);
+  if (!file.open (QFile::ReadOnly))
+    {
+      QMessageBox::warning (this, tr ("Octave Editor"),
+                            tr ("Could not open file %1 for read:\n%2.").arg (fileName).
+                            arg (file.errorString ()));
+      return;
+    }
+
+  QTextStream in (&file);
+  QApplication::setOverrideCursor (Qt::WaitCursor);
+  _edit_area->setText (in.readAll ());
+  QApplication::restoreOverrideCursor ();
+
+  set_file_name (fileName);
+  update_tracked_file ();
+
+
+  update_window_title (false); // window title (no modification)
+  _edit_area->setModified (false); // loaded file is not modified yet
+}
+
+void
+file_editor_tab::new_file ()
+{
+  if (!_file_editor->isVisible ())
+    {
+      _file_editor->show ();
+    }
+
+  set_file_name (UNNAMED_FILE);
+  update_window_title (false); // window title (no modification)
+  _edit_area->setText ("");
+  _edit_area->setModified (false); // new file is not modified yet
+}
+
+bool file_editor_tab::save_file()
+{
+  return save_file (_file_name);
+}
+
+bool
+file_editor_tab::save_file (QString saveFileName)
+{
+  // it is a new file with the name "<unnamed>" -> call saveFielAs
+  if (saveFileName == UNNAMED_FILE || saveFileName.isEmpty ())
+    {
+      return save_file_as();
+    }
+
+  QStringList watched_files = _file_system_watcher.files();
+  if (!watched_files.isEmpty ())
+    _file_system_watcher.removePaths(watched_files);
+
+  // open the file for writing
+  QFile file (saveFileName);
+  if (!file.open (QFile::WriteOnly))
+    {
+      QMessageBox::warning (this, tr ("Octave Editor"),
+                            tr ("Could not open file %1 for write:\n%2.").
+                            arg (saveFileName).arg (file.errorString ()));
+      _file_system_watcher.addPaths (watched_files);
+      return false;
+    }
+
+  // save the contents into the file
+  QTextStream out (&file);
+  QApplication::setOverrideCursor (Qt::WaitCursor);
+  out << _edit_area->text ();
+  QApplication::restoreOverrideCursor ();
+
+  // save file name for later use
+  _file_name = saveFileName;
+  // set the window title to actual file name (not modified)
+  update_window_title (false);
+   // files is save -> not modified
+  _edit_area->setModified (false);
+  file.close();
+
+  if (!watched_files.isEmpty ())
+    _file_system_watcher.addPaths (watched_files);
+  return true;
+}
+
+bool
+file_editor_tab::save_file_as ()
+{
+  QString saveFileName(_file_name);
+  QFileDialog fileDialog(this);
+  if (saveFileName == UNNAMED_FILE || saveFileName.isEmpty ())
+    {
+      QString directory = QString::fromStdString
+          (octave_link::instance ()->get_last_working_directory ());
+
+      if (directory.isEmpty ())
+        {
+          directory = QDir::homePath ();
+        }
+
+      fileDialog.setDirectory (directory);
+    }
+  else
+    {
+      fileDialog.selectFile (saveFileName);
+    }
+  fileDialog.setNameFilter (SAVE_FILE_FILTER);
+  fileDialog.setDefaultSuffix ("m");
+  fileDialog.setAcceptMode (QFileDialog::AcceptSave);
+  fileDialog.setViewMode (QFileDialog::Detail);
+
+  if (fileDialog.exec ())
+    {
+      saveFileName = fileDialog.selectedFiles ().at (0);
+      if (saveFileName.isEmpty ())
+        return false;
+
+      return save_file (saveFileName);
+    }
+
+  return false;
+}
+
+void
+file_editor_tab::run_file ()
+{
+  if (_edit_area->isModified ())
+    save_file(_file_name);
+
+  QFileInfo file_info (_file_name);
+  QString path = file_info.absolutePath ();
+  //QString current_path = QString::fromStdString
+      (octave_link::instance ()->get_last_working_directory ());
+  QString function_name = file_info.fileName ();
+
+  // We have to cut off the suffix, because octave appends it.
+  function_name.chop (file_info.suffix ().length () + 1);
+  _file_editor->terminal ()->sendText (QString ("cd \'%1\'\n%2\n")
+    .arg(path).arg (function_name));
+  // TODO: Sending a run event crashes for long scripts. Find out why.
+  //  octave_link::instance ()
+  //      ->post_event (new octave_run_file_event (*this, _file_name.toStdString ()));
+}
+
+void
+file_editor_tab::file_has_changed (QString fileName)
+{
+  Q_UNUSED (fileName);
+  if (QFile::exists (_file_name))
+    {
+      // Prevent popping up multiple message boxes when the file has
+      // been changed multiple times.
+      static bool alreadyAsking = false;
+      if (!alreadyAsking)
+        {
+          alreadyAsking = true;
+
+          int decision =
+          QMessageBox::warning (this, tr ("Octave Editor"),
+                                tr ("It seems that \'%1\' has been modified by another application. Do you want to reload it?").
+                                arg (_file_name), QMessageBox::Yes,
+                                QMessageBox::No);
+
+          if (decision == QMessageBox::Yes)
+            {
+              load_file (_file_name);
+            }
+
+          alreadyAsking = false;
+        }
+    }
+  else
+    {
+      int decision =
+      QMessageBox::warning (this, tr ("Octave Editor"),
+                            tr ("It seems that \'%1\' has been deleted or renamed. Do you want to save it now?").
+                            arg (_file_name), QMessageBox::Save,
+                            QMessageBox::Close);
+      if (decision == QMessageBox::Save)
+        {
+          if (!save_file_as ())
+            {
+              set_file_name (UNNAMED_FILE);
+              update_window_title (true); // window title (no modification)
+              set_modified (true);
+              update_tracked_file ();
+            }
+        }
+      else
+        {
+          emit close_request ();
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/libgui/src/m-editor/file-editor-tab.h	Sat Aug 18 18:10:09 2012 -0400
@@ -0,0 +1,102 @@
+/* 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/>.
+ */
+
+#ifndef FILEEDITORTAB_H
+#define FILEEDITORTAB_H
+
+#include <Qsci/qsciscintilla.h>
+#include <QWidget>
+#include <QCloseEvent>
+#include <QFileSystemWatcher>
+#include "octave-event-observer.h"
+
+class file_editor;
+class file_editor_tab : public QWidget, public octave_event_observer
+{
+  Q_OBJECT
+public:
+  file_editor_tab (file_editor *fileEditor);
+  bool copy_available ();
+
+  void event_accepted (octave_event *e);
+  void event_reject (octave_event *e);
+
+public slots:
+  void update_window_title(bool modified);
+  void handle_copy_available(bool enableCopy);
+  void handle_margin_clicked (int line, int margin, Qt::KeyboardModifiers state);
+  void comment_selected_text ();
+  void uncomment_selected_text ();
+  void find ();
+  void remove_bookmark ();
+  void toggle_bookmark ();
+  void next_bookmark ();
+  void previous_bookmark ();
+  void remove_all_breakpoints ();
+  void toggle_breakpoint ();
+  void next_breakpoint ();
+  void previous_breakpoint ();
+  void cut ();
+  void copy ();
+  void paste ();
+  void undo ();
+  void redo ();
+  void set_debugger_position (int line);
+
+  void set_modified (bool modified = true);
+
+  bool open_file ();
+  void load_file (QString fileName);
+  void new_file ();
+  bool save_file ();
+  bool save_file(QString saveFileName);
+  bool save_file_as();
+  void run_file ();
+
+  void file_has_changed (QString fileName);
+
+signals:
+  void file_name_changed (QString fileName);
+  void editor_state_changed ();
+  void close_request ();
+
+protected:
+  void closeEvent (QCloseEvent *event);
+  void set_file_name (QString fileName);
+
+private:
+  void update_lexer ();
+  void request_add_breakpoint (int line);
+  void request_remove_breakpoint (int line);
+
+  void update_tracked_file ();
+  int check_file_modified (QString msg, int cancelButton);
+  void do_comment_selected_text (bool comment);
+
+  file_editor *         _file_editor;
+  QsciScintilla *       _edit_area;
+
+  QString               _file_name;
+  QString               _file_name_short;
+
+  bool                  _long_title;
+  bool                  _copy_available;
+
+  QFileSystemWatcher    _file_system_watcher;
+};
+
+#endif // FILEEDITORTAB_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/libgui/src/m-editor/file-editor.cc	Sat Aug 18 18:10:09 2012 -0400
@@ -0,0 +1,558 @@
+/* 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 "file-editor.h"
+#include <QVBoxLayout>
+#include <QApplication>
+#include <QFile>
+#include <QFont>
+#include <QFileDialog>
+#include <QMessageBox>
+#include <QStyle>
+#include <QTextStream>
+
+file_editor::file_editor (QTerminal *terminal, main_window *m)
+  : file_editor_interface(terminal, m)
+{
+  construct ();
+
+  _terminal = terminal;
+  _main_window = m;
+  setVisible (false);
+}
+
+file_editor::~file_editor ()
+{
+}
+
+QTerminal *
+file_editor::terminal ()
+{
+  return _terminal;
+}
+
+main_window *
+file_editor::get_main_window ()
+{
+  return _main_window;
+}
+
+QMenu *
+file_editor::debug_menu ()
+{
+  return _debug_menu;
+}
+
+QToolBar *
+file_editor::toolbar ()
+{
+  return _tool_bar;
+}
+
+void
+file_editor::handle_entered_debug_mode ()
+{
+  _run_action->setEnabled (false);
+}
+
+void
+file_editor::handle_quit_debug_mode ()
+{
+  _run_action->setEnabled (true);
+}
+
+void
+file_editor::request_new_file ()
+{
+  file_editor_tab *fileEditorTab = new file_editor_tab (this);
+  if (fileEditorTab)
+    {
+      add_file_editor_tab (fileEditorTab);
+      fileEditorTab->new_file ();
+    }
+}
+
+void
+file_editor::request_open_file ()
+{
+  file_editor_tab *fileEditorTab = new file_editor_tab (this);
+  if (fileEditorTab)
+    {
+      add_file_editor_tab (fileEditorTab);
+      if (!fileEditorTab->open_file ())
+        {
+          // If no file was loaded, remove the tab again.
+          _tab_widget->removeTab (_tab_widget->indexOf (fileEditorTab));
+        }
+    }
+}
+
+void
+file_editor::request_open_file (QString fileName)
+{
+  if (!isVisible ())
+    {
+      show ();
+    }
+
+  file_editor_tab *fileEditorTab = new file_editor_tab (this);
+  if (fileEditorTab)
+    {
+      add_file_editor_tab (fileEditorTab);
+      fileEditorTab->load_file (fileName);
+    }
+}
+
+void
+file_editor::request_undo ()
+{
+  file_editor_tab *_active_file_editor_tab = active_editor_tab ();
+  if (_active_file_editor_tab)
+    _active_file_editor_tab->undo ();
+}
+
+void
+file_editor::request_redo ()
+{
+  file_editor_tab *_active_file_editor_tab = active_editor_tab ();
+  if (_active_file_editor_tab)
+    _active_file_editor_tab->redo ();
+}
+
+void
+file_editor::request_copy ()
+{
+  file_editor_tab *_active_file_editor_tab = active_editor_tab ();
+  if (_active_file_editor_tab)
+    _active_file_editor_tab->copy ();
+}
+
+void
+file_editor::request_cut ()
+{
+  file_editor_tab *_active_file_editor_tab = active_editor_tab ();
+  if (_active_file_editor_tab)
+    _active_file_editor_tab->cut ();
+}
+
+void
+file_editor::request_paste ()
+{
+  file_editor_tab *_active_file_editor_tab = active_editor_tab ();
+  if (_active_file_editor_tab)
+    _active_file_editor_tab->paste ();
+}
+
+void
+file_editor::request_save_file ()
+{
+  file_editor_tab *_active_file_editor_tab = active_editor_tab ();
+  if (_active_file_editor_tab)
+    _active_file_editor_tab->save_file ();
+}
+
+void
+file_editor::request_save_file_as ()
+{
+  file_editor_tab *_active_file_editor_tab = active_editor_tab ();
+  if (_active_file_editor_tab)
+    _active_file_editor_tab->save_file_as ();
+}
+
+void
+file_editor::request_run_file ()
+{
+  file_editor_tab *_active_file_editor_tab = active_editor_tab ();
+  if (_active_file_editor_tab)
+    _active_file_editor_tab->run_file ();
+}
+
+void
+file_editor::request_toggle_bookmark ()
+{
+  file_editor_tab *_active_file_editor_tab = active_editor_tab ();
+  if (_active_file_editor_tab)
+    _active_file_editor_tab->toggle_bookmark ();
+}
+
+void
+file_editor::request_next_bookmark ()
+{
+  file_editor_tab *_active_file_editor_tab = active_editor_tab ();
+  if (_active_file_editor_tab)
+    _active_file_editor_tab->next_bookmark ();
+}
+
+void
+file_editor::request_previous_bookmark ()
+{
+  file_editor_tab *_active_file_editor_tab = active_editor_tab ();
+  if (_active_file_editor_tab)
+    _active_file_editor_tab->previous_bookmark ();
+}
+
+void
+file_editor::request_remove_bookmark ()
+{
+  file_editor_tab *_active_file_editor_tab = active_editor_tab ();
+  if (_active_file_editor_tab)
+    _active_file_editor_tab->remove_bookmark ();
+}
+
+void
+file_editor::request_toggle_breakpoint ()
+{
+  file_editor_tab *_active_file_editor_tab = active_editor_tab ();
+  if (_active_file_editor_tab)
+    _active_file_editor_tab->toggle_breakpoint ();
+}
+
+void
+file_editor::request_next_breakpoint ()
+{
+  file_editor_tab *_active_file_editor_tab = active_editor_tab ();
+  if (_active_file_editor_tab)
+    _active_file_editor_tab->next_breakpoint ();
+}
+
+void
+file_editor::request_previous_breakpoint ()
+{
+  file_editor_tab *_active_file_editor_tab = active_editor_tab ();
+  if (_active_file_editor_tab)
+    _active_file_editor_tab->previous_breakpoint ();
+}
+
+void
+file_editor::request_remove_breakpoint ()
+{
+  file_editor_tab *_active_file_editor_tab = active_editor_tab ();
+  if (_active_file_editor_tab)
+    _active_file_editor_tab->remove_all_breakpoints ();
+}
+
+void
+file_editor::request_comment_selected_text ()
+{
+  file_editor_tab *_active_file_editor_tab = active_editor_tab ();
+  if (_active_file_editor_tab)
+    _active_file_editor_tab->comment_selected_text ();
+}
+
+void
+file_editor::request_uncomment_selected_text ()
+{
+  file_editor_tab *_active_file_editor_tab = active_editor_tab ();
+  if (_active_file_editor_tab)
+    _active_file_editor_tab->uncomment_selected_text ();
+}
+
+void
+file_editor::request_find ()
+{
+  file_editor_tab *_active_file_editor_tab = active_editor_tab ();
+  if (_active_file_editor_tab)
+    _active_file_editor_tab->find ();
+}
+
+void
+file_editor::handle_file_name_changed (QString fileName)
+{
+  QObject *senderObject = sender ();
+  file_editor_tab *fileEditorTab
+    = dynamic_cast<file_editor_tab*> (senderObject);
+  if (fileEditorTab)
+    {
+      for(int i = 0; i < _tab_widget->count (); i++)
+        {
+          if (_tab_widget->widget (i) == fileEditorTab)
+            {
+              _tab_widget->setTabText (i, fileName);
+            }
+        }
+    }
+}
+
+void
+file_editor::handle_tab_close_request (int index)
+{
+  file_editor_tab *fileEditorTab
+    = dynamic_cast <file_editor_tab*> (_tab_widget->widget (index));
+  if (fileEditorTab)
+    if (fileEditorTab->close ())
+      {
+        _tab_widget->removeTab (index);
+        delete fileEditorTab;
+      }
+}
+
+void
+file_editor::handle_tab_close_request ()
+{
+  file_editor_tab *fileEditorTab = dynamic_cast <file_editor_tab*> (sender ());
+  if (fileEditorTab)
+    if (fileEditorTab->close ())
+      {
+        _tab_widget->removeTab (_tab_widget->indexOf (fileEditorTab));
+        delete fileEditorTab;
+      }
+}
+
+void
+file_editor::active_tab_changed (int index)
+{
+  Q_UNUSED (index);
+  handle_editor_state_changed ();
+}
+
+void
+file_editor::handle_editor_state_changed ()
+{
+  file_editor_tab *f = active_editor_tab ();
+  if (f)
+    {
+      bool copy_available = f->copy_available ();
+      _copy_action->setEnabled (copy_available);
+      _cut_action->setEnabled (copy_available);
+      setFocusProxy (f);
+    }
+}
+
+void
+file_editor::construct ()
+{
+  QWidget *widget = new QWidget (this);
+  QStyle *style = QApplication::style ();
+
+  _menu_bar = new QMenuBar (widget);
+  _tool_bar = new QToolBar (widget);
+  _tab_widget = new QTabWidget (widget);
+  _tab_widget->setTabsClosable (true);
+
+  QAction *new_action = new QAction (QIcon(":/actions/icons/filenew.png"),
+        tr("&New File"), _tool_bar);
+
+  QAction *open_action = new QAction (QIcon(":/actions/icons/fileopen.png"),
+        tr("&Open File"), _tool_bar);
+
+  QAction *save_action = new QAction (QIcon(":/actions/icons/filesave.png"),
+        tr("&Save File"), _tool_bar);
+
+  QAction *save_as_action
+    = new QAction (QIcon(":/actions/icons/filesaveas.png"),
+                   tr("Save File &As"), _tool_bar);
+
+  QAction *undo_action = new QAction (QIcon(":/actions/icons/undo.png"),
+        tr("&Undo"), _tool_bar);
+
+  QAction *redo_action = new QAction (QIcon(":/actions/icons/redo.png"),
+        tr("&Redo"), _tool_bar);
+
+  _copy_action = new QAction (QIcon(":/actions/icons/editcopy.png"),
+                              tr ("&Copy"), _tool_bar);
+
+  _cut_action  = new QAction (QIcon(":/actions/icons/editcut.png"),
+                              tr ("Cu&t"), _tool_bar);
+
+  QAction *paste_action
+      = new QAction (QIcon (":/actions/icons/editpaste.png"),
+                     tr("Paste"), _tool_bar);
+  QAction *next_bookmark_action       = new QAction (tr ("&Next Bookmark"),_tool_bar);
+  QAction *previous_bookmark_action   = new QAction (tr ("Pre&vious Bookmark"),_tool_bar);
+  QAction *toggle_bookmark_action     = new QAction (tr ("Toggle &Bookmark"),_tool_bar);
+  QAction *remove_bookmark_action     = new QAction (tr ("&Remove All Bookmarks"),_tool_bar);
+
+  QAction *next_breakpoint_action
+      = new QAction (QIcon (":/actions/icons/bp_next.png"),
+                     tr ("&Next breakpoint"), _tool_bar);
+  QAction *previous_breakpoint_action
+      = new QAction (QIcon (":/actions/icons/bp_prev.png"),
+                     tr ("Pre&vious breakpoint"), _tool_bar);
+  QAction *toggle_breakpoint_action
+      = new QAction (QIcon (":/actions/icons/bp_toggle.png"),
+                     tr ("Toggle &breakpoint"), _tool_bar);
+  QAction *remove_all_breakpoints_action
+      = new QAction (QIcon (":/actions/icons/bp_rm_all.png"),
+                     tr ("&Remove All breakpoints"), _tool_bar);
+
+  QAction *comment_selection_action   = new QAction (tr ("&Comment Selected Text"),_tool_bar);
+  QAction *uncomment_selection_action = new QAction (tr ("&Uncomment Selected Text"),_tool_bar);
+
+  QAction *find_action = new QAction (QIcon(":/actions/icons/find.png"),
+                                      tr ("&Find and Replace"), _tool_bar);
+
+  _run_action = new QAction (QIcon(":/actions/icons/artsbuilderexecute.png"),
+        tr("Save File And Run"), _tool_bar);
+
+  // some actions are disabled from the beginning
+  _copy_action->setEnabled(false);
+  _cut_action->setEnabled(false);
+  _run_action->setShortcut                      (Qt::ControlModifier+ Qt::Key_R);
+  _run_action->setShortcutContext               (Qt::WindowShortcut);
+  next_bookmark_action->setShortcut             (Qt::Key_F2);
+  next_bookmark_action->setShortcutContext      (Qt::WindowShortcut);
+  previous_bookmark_action->setShortcut         (Qt::SHIFT + Qt::Key_F2);
+  previous_bookmark_action->setShortcutContext  (Qt::WindowShortcut);
+  toggle_bookmark_action->setShortcut           (Qt::Key_F7);
+  toggle_bookmark_action->setShortcutContext    (Qt::WindowShortcut);
+  comment_selection_action->setShortcut         (Qt::ControlModifier + Qt::Key_7);
+  comment_selection_action->setShortcutContext  (Qt::WindowShortcut);
+  uncomment_selection_action->setShortcut       (Qt::ControlModifier + Qt::Key_8);
+  uncomment_selection_action->setShortcutContext(Qt::WindowShortcut);
+  find_action->setShortcut                      (Qt::ControlModifier+Qt::Key_F);
+  find_action->setShortcutContext               (Qt::WindowShortcut);
+
+  // toolbar
+  _tool_bar->addAction (new_action);
+  _tool_bar->addAction (open_action);
+  _tool_bar->addAction (save_action);
+  _tool_bar->addAction (save_as_action);
+  _tool_bar->addSeparator ();
+  _tool_bar->addAction (undo_action);
+  _tool_bar->addAction (redo_action);
+  _tool_bar->addAction (_copy_action);
+  _tool_bar->addAction (_cut_action);
+  _tool_bar->addAction (paste_action);
+  _tool_bar->addSeparator ();
+  _tool_bar->addAction (find_action);
+  _tool_bar->addAction (_run_action);
+  _tool_bar->addSeparator ();
+  _tool_bar->addAction (toggle_breakpoint_action);
+  _tool_bar->addAction (next_breakpoint_action);
+  _tool_bar->addAction (previous_breakpoint_action);
+  _tool_bar->addAction (remove_all_breakpoints_action);
+
+  // menu bar
+  QMenu *fileMenu = new QMenu (tr ("&File"), _menu_bar);
+  fileMenu->addAction (new_action);
+  fileMenu->addAction (open_action);
+  fileMenu->addAction (save_action);
+  fileMenu->addAction (save_as_action);
+  fileMenu->addSeparator ();
+  _menu_bar->addMenu (fileMenu);
+
+  QMenu *editMenu = new QMenu (tr ("&Edit"), _menu_bar);
+  editMenu->addAction (undo_action);
+  editMenu->addAction (redo_action);
+  editMenu->addSeparator ();
+  editMenu->addAction (_copy_action);
+  editMenu->addAction (_cut_action);
+  editMenu->addAction (paste_action);
+  editMenu->addSeparator ();
+  editMenu->addAction (find_action);
+  editMenu->addSeparator ();
+  editMenu->addAction (comment_selection_action);
+  editMenu->addAction (uncomment_selection_action);
+  editMenu->addSeparator ();
+  editMenu->addAction (toggle_bookmark_action);
+  editMenu->addAction (next_bookmark_action);
+  editMenu->addAction (previous_bookmark_action);
+  editMenu->addAction (remove_bookmark_action);
+  _menu_bar->addMenu (editMenu);
+
+  _debug_menu = new QMenu (tr ("&Debug"), _menu_bar);
+  _debug_menu->addAction (toggle_breakpoint_action);
+  _debug_menu->addAction (next_breakpoint_action);
+  _debug_menu->addAction (previous_breakpoint_action);
+  _debug_menu->addAction (remove_all_breakpoints_action);
+  _debug_menu->addSeparator ();
+  // The other debug actions will be added by the main window.
+  _menu_bar->addMenu (_debug_menu);
+
+  QMenu *_run_menu = new QMenu (tr ("&Run"), _menu_bar);
+  _run_menu->addAction (_run_action);
+  _menu_bar->addMenu (_run_menu);
+
+  QVBoxLayout *layout = new QVBoxLayout ();
+  layout->addWidget (_menu_bar);
+  layout->addWidget (_tool_bar);
+  layout->addWidget (_tab_widget);
+  layout->setMargin (0);
+  widget->setLayout (layout);
+  setWidget (widget);
+
+  connect (new_action,
+           SIGNAL (triggered ()), this, SLOT (request_new_file ()));
+  connect (open_action,              
+           SIGNAL (triggered ()), this, SLOT (request_open_file ()));
+  connect (undo_action,
+           SIGNAL (triggered ()), this, SLOT (request_undo ()));
+  connect (redo_action,
+           SIGNAL (triggered ()), this, SLOT (request_redo ()));
+  connect (_copy_action,
+           SIGNAL (triggered ()), this, SLOT (request_copy ()));
+  connect (_cut_action,
+           SIGNAL (triggered ()), this, SLOT (request_cut ()));
+  connect (paste_action,
+           SIGNAL (triggered ()), this, SLOT (request_paste ()));
+  connect (save_action,
+           SIGNAL (triggered ()), this, SLOT (request_save_file ()));
+  connect (save_as_action,
+           SIGNAL (triggered ()), this, SLOT (request_save_file_as ()));
+  connect (_run_action,
+           SIGNAL (triggered ()), this, SLOT (request_run_file ()));
+  connect (toggle_bookmark_action,
+           SIGNAL (triggered ()), this, SLOT (request_toggle_bookmark ()));
+  connect (next_bookmark_action,
+           SIGNAL (triggered ()), this, SLOT (request_next_bookmark ()));
+  connect (previous_bookmark_action,
+           SIGNAL (triggered ()), this, SLOT (request_previous_bookmark ()));
+  connect (remove_bookmark_action,
+           SIGNAL (triggered ()), this, SLOT (request_remove_bookmark ()));
+  connect (toggle_breakpoint_action,
+           SIGNAL (triggered ()), this, SLOT (request_toggle_breakpoint ()));
+  connect (next_breakpoint_action,
+           SIGNAL (triggered ()), this, SLOT (request_next_breakpoint ()));
+  connect (previous_breakpoint_action,
+           SIGNAL (triggered ()), this, SLOT (request_previous_breakpoint ()));
+  connect (remove_all_breakpoints_action,
+           SIGNAL (triggered ()), this, SLOT (request_remove_breakpoint ()));
+  connect (comment_selection_action,
+           SIGNAL (triggered ()), this, SLOT (request_comment_selected_text ()));
+  connect (uncomment_selection_action,
+           SIGNAL (triggered ()), this, SLOT (request_uncomment_selected_text ()));
+  connect (find_action,
+           SIGNAL (triggered ()), this, SLOT (request_find ()));
+  connect (_tab_widget,
+           SIGNAL (tabCloseRequested (int)), this, SLOT (handle_tab_close_request (int)));
+  connect (_tab_widget,
+           SIGNAL (currentChanged(int)), this, SLOT (active_tab_changed (int)));
+
+  resize (500, 400);
+  setWindowIcon (QIcon::fromTheme ("accessories-text-editor",
+                                   style->standardIcon (QStyle::SP_FileIcon)));
+  setWindowTitle ("Octave Editor");
+}
+
+void
+file_editor::add_file_editor_tab (file_editor_tab *f)
+{
+  _tab_widget->addTab (f, "");
+  connect (f, SIGNAL (file_name_changed(QString)),
+           this, SLOT(handle_file_name_changed(QString)));
+  connect (f, SIGNAL (editor_state_changed ()),
+           this, SLOT (handle_editor_state_changed ()));
+  connect (f, SIGNAL (close_request ()),
+           this, SLOT (handle_tab_close_request ()));
+  _tab_widget->setCurrentWidget (f);
+}
+
+file_editor_tab *
+file_editor::active_editor_tab ()
+{
+  return dynamic_cast<file_editor_tab*> (_tab_widget->currentWidget ());
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/libgui/src/m-editor/file-editor.h	Sat Aug 18 18:10:09 2012 -0400
@@ -0,0 +1,107 @@
+/* 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/>.
+ */
+
+#ifndef FILEEDITORMDISUBWINDOW_H
+#define FILEEDITORMDISUBWINDOW_H
+
+#include <QToolBar>
+#include <QAction>
+#include <QMenuBar>
+#include <QStatusBar>
+#include <QCloseEvent>
+#include <QTabWidget>
+
+#include "main-window.h"
+#include "file-editor-interface.h"
+#include "file-editor-tab.h"
+
+const char UNNAMED_FILE[]     = "<unnamed>";
+const char SAVE_FILE_FILTER[] = "Octave Files (*.m);;All Files (*.*)";
+enum editor_markers
+  {
+    bookmark,
+    breakpoint,
+    debugger_position
+  };
+
+class file_editor : public file_editor_interface
+{
+Q_OBJECT
+
+public:
+  file_editor (QTerminal *terminal, main_window *m);
+  ~file_editor ();
+  void loadFile (QString fileName);
+
+  QTerminal *       terminal ();
+  main_window *     get_main_window ();
+
+  QMenu *           debug_menu ();
+  QToolBar *        toolbar ();
+
+  void handle_entered_debug_mode ();
+  void handle_quit_debug_mode ();
+
+public slots:
+  void request_new_file ();
+  void request_open_file ();
+  void request_open_file (QString fileName);
+
+  void request_undo ();
+  void request_redo ();
+  void request_copy ();
+  void request_cut ();
+  void request_paste ();
+  void request_save_file ();
+  void request_save_file_as ();
+  void request_run_file ();
+  void request_toggle_bookmark ();
+  void request_next_bookmark ();
+  void request_previous_bookmark ();
+  void request_remove_bookmark ();
+
+  void request_toggle_breakpoint ();
+  void request_next_breakpoint ();
+  void request_previous_breakpoint ();
+  void request_remove_breakpoint ();
+
+  void request_comment_selected_text ();
+  void request_uncomment_selected_text ();
+  void request_find ();
+
+  void handle_file_name_changed (QString fileName);
+  void handle_tab_close_request (int index);
+  void handle_tab_close_request ();
+  void active_tab_changed (int index);
+  void handle_editor_state_changed ();
+
+private:
+  void construct ();
+  void add_file_editor_tab(file_editor_tab *f);
+  file_editor_tab *active_editor_tab();
+
+  QMenuBar *        _menu_bar;
+  QToolBar *        _tool_bar;
+  QMenu *           _debug_menu;
+  QAction *         _copy_action;
+  QAction *         _cut_action;
+  QAction *         _run_action;
+  QTabWidget *      _tab_widget;
+  int               _marker_breakpoint;
+};
+
+#endif // FILEEDITORMDISUBWINDOW_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/libgui/src/m-editor/find-dialog.cc	Sat Aug 18 18:10:09 2012 -0400
@@ -0,0 +1,195 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** Commercial Usage
+** Licensees holding valid Qt Commercial licenses may use this file in
+** accordance with the Qt Commercial License Agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and Nokia.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file.  Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights.  These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3.0 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file.  Please review the following information to
+** ensure the GNU General Public License version 3.0 requirements will be
+** met: http://www.gnu.org/copyleft/gpl.html.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include <QtGui>
+#include <QIcon>
+#include "find-dialog.h"
+
+find_dialog::find_dialog (QsciScintilla* edit_area, QWidget *parent)
+  : QDialog (parent)
+{
+  setWindowTitle ("Find and Replace");
+  setWindowIcon (QIcon(":/actions/icons/logo.png"));
+
+  _search_label = new QLabel (tr ("Find &what:"));
+  _search_line_edit = new QLineEdit;
+  _search_label->setBuddy (_search_line_edit);
+  _replace_label = new QLabel (tr ("Re&place with:"));
+  _replace_line_edit = new QLineEdit;
+  _replace_label->setBuddy (_replace_line_edit);
+
+  _case_check_box = new QCheckBox (tr ("Match &case"));
+  _from_start_check_box = new QCheckBox (tr ("Search from &start"));
+  _wrap_check_box = new QCheckBox (tr ("&Wrap while searching"));
+  _wrap_check_box->setChecked(true);
+  _find_next_button = new QPushButton (tr ("&Find Next"));
+  _find_next_button->setDefault (true);
+  _replace_button = new QPushButton (tr ("&Replace"));
+  _replace_all_button = new QPushButton (tr ("Replace &All"));
+
+  _more_button = new QPushButton (tr ("&More"));
+  _more_button->setCheckable (true);
+  _more_button->setAutoDefault (false);
+
+  _button_box = new QDialogButtonBox (Qt::Vertical);
+  _button_box->addButton (_find_next_button, QDialogButtonBox::ActionRole);
+  _button_box->addButton (_replace_button, QDialogButtonBox::ActionRole);
+  _button_box->addButton (_replace_all_button, QDialogButtonBox::ActionRole);
+  _button_box->addButton (_more_button, QDialogButtonBox::ActionRole);
+
+  _extension = new QWidget (this);
+  _whole_words_check_box = new QCheckBox (tr ("&Whole words"));
+  _regex_check_box = new QCheckBox (tr ("Regular E&xpressions"));
+  _backward_check_box = new QCheckBox (tr ("Search &backward"));
+  _search_selection_check_box = new QCheckBox (tr ("Search se&lection"));
+  _search_selection_check_box->setCheckable (false); // TODO: Not implemented.
+  _search_selection_check_box->setEnabled (false);
+
+  _edit_area = edit_area;
+  connect (_find_next_button,   SIGNAL (clicked ()),
+           this,                SLOT (search_next ()));
+  connect (_more_button,        SIGNAL (toggled (bool)),
+           _extension,          SLOT (setVisible (bool)));
+  connect (_replace_button,     SIGNAL (clicked ()),
+           this,                SLOT (replace ()));
+  connect (_replace_all_button, SIGNAL (clicked ()),
+           this,                SLOT (replace_all ()));
+
+  QVBoxLayout *extension_layout = new QVBoxLayout ();
+  extension_layout->setMargin (0);
+  extension_layout->addWidget (_whole_words_check_box);
+  extension_layout->addWidget (_backward_check_box);
+  extension_layout->addWidget (_search_selection_check_box);
+  _extension->setLayout (extension_layout);
+
+  QGridLayout *top_left_layout = new QGridLayout;
+  top_left_layout->addWidget (_search_label, 1, 1);
+  top_left_layout->addWidget (_search_line_edit, 1, 2);
+  top_left_layout->addWidget (_replace_label, 2, 1);
+  top_left_layout->addWidget (_replace_line_edit, 2, 2);
+
+  QVBoxLayout *left_layout = new QVBoxLayout;
+  left_layout->addLayout (top_left_layout);
+  left_layout->insertStretch (1, 5);
+  left_layout->addWidget (_case_check_box);
+  left_layout->addWidget (_from_start_check_box);
+  left_layout->addWidget (_wrap_check_box);
+  left_layout->addWidget (_regex_check_box);
+
+  QGridLayout *main_layout = new QGridLayout;
+  main_layout->setSizeConstraint (QLayout::SetFixedSize);
+  main_layout->addLayout (left_layout, 0, 0);
+  main_layout->addWidget (_button_box, 0, 1);
+  main_layout->addWidget (_extension, 1, 0, 1, 2);
+  setLayout (main_layout);
+
+  _extension->hide ();
+}
+
+void
+find_dialog::search_next ()
+{
+  int line = -1, col = -1;
+
+  _find_result_available = false;
+  if (_from_start_check_box->isChecked ())
+    {
+      line = 1;
+      col  = 1;
+    }
+
+  if (_edit_area)
+    {
+      _find_result_available = _edit_area->findFirst (_search_line_edit->text (),
+                                      _regex_check_box->isChecked (),
+                                      _case_check_box->isChecked (),
+                                      _whole_words_check_box->isChecked (),
+                                      _wrap_check_box->isChecked (),
+                                      !_backward_check_box->isChecked (),
+                                      line,col,
+                                      true,
+                                      true
+                                      );
+    }
+}
+
+
+void
+find_dialog::replace ()
+{
+  if (_edit_area)
+    {
+      _edit_area->replace (_replace_line_edit->text ());
+      _edit_area->findNext();
+    }
+}
+
+void
+find_dialog::replace_all ()
+{
+  int count = 0;
+
+  // check whether find & replace srings are different (avoid endless loop!)
+  int strDiff;
+  Qt::CaseSensitivity cs;
+  if (_case_check_box->isChecked())
+    {
+      cs = Qt::CaseSensitive;
+    }
+  else
+    {
+      cs = Qt::CaseInsensitive;
+    }
+  strDiff = QString::compare(_search_line_edit->text(),_replace_line_edit->text(),cs);
+
+  // replace all if strings are different
+  if (_edit_area && strDiff )
+    {
+      search_next ();  // find first occurence
+      while (_find_result_available)   // while search string is found
+        {
+          _edit_area->replace (_replace_line_edit->text ());   // replace
+          count++;                                             // inc counter
+          _find_result_available = _edit_area->findNext();                     // and find next
+        }
+    }
+  // TODO: Show number of replaced strings
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/libgui/src/m-editor/find-dialog.h	Sat Aug 18 18:10:09 2012 -0400
@@ -0,0 +1,89 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** Commercial Usage
+** Licensees holding valid Qt Commercial licenses may use this file in
+** accordance with the Qt Commercial License Agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and Nokia.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file.  Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights.  These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3.0 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file.  Please review the following information to
+** ensure the GNU General Public License version 3.0 requirements will be
+** met: http://www.gnu.org/copyleft/gpl.html.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#ifndef FIND_DIALOG_H
+#define FIND_DIALOG_H
+
+#include <QDialog>
+#include <Qsci/qsciscintilla.h>
+
+class QCheckBox;
+class QDialogButtonBox;
+class QGroupBox;
+class QLabel;
+class QLineEdit;
+class QPushButton;
+
+class find_dialog : public QDialog
+{
+  Q_OBJECT
+public:
+  find_dialog (QsciScintilla* edit_area, QWidget *parent = 0);
+
+private slots:
+  void search_next ();
+  void replace ();
+  void replace_all ();
+
+private:
+  QLabel            *_search_label;
+  QLineEdit         *_search_line_edit;
+  QLabel            *_replace_label;
+  QLineEdit         *_replace_line_edit;
+  QCheckBox         *_case_check_box;
+  QCheckBox         *_from_start_check_box;
+  QCheckBox         *_wrap_check_box;
+  QCheckBox         *_whole_words_check_box;
+  QCheckBox         *_regex_check_box;
+  QCheckBox         *_search_selection_check_box;
+  QCheckBox         *_backward_check_box;
+  QDialogButtonBox  *_button_box;
+  QPushButton       *_find_next_button;
+  QPushButton       *_replace_button;
+  QPushButton       *_replace_all_button;
+  QPushButton       *_more_button;
+  QWidget           *_extension;
+  QsciScintilla     *_edit_area;
+  bool               _find_result_available;
+};
+
+#endif // FIND_DIALOG_H
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/libgui/src/m-editor/lexer-octave-gui.cc	Sat Aug 18 18:10:09 2012 -0400
@@ -0,0 +1,141 @@
+/* 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 "lexer-octave-gui.h"
+#include <qcolor.h>
+#include <qfont.h>
+
+// -----------------------------------------------------
+// Some basic functions
+// -----------------------------------------------------
+lexer_octave_gui::lexer_octave_gui(QObject *parent)
+    : QsciLexer(parent)  // inherit from base lexer
+{
+}
+
+lexer_octave_gui::~lexer_octave_gui()
+{
+}
+
+const char *lexer_octave_gui::language() const
+{
+  return "Octave";  // return the name of the language
+}
+
+const char *lexer_octave_gui::lexer() const
+{
+  return "octave";  // return the name of the lexer
+}
+
+// -----------------------------------------------------
+// The colors for syntax highlighting
+// -----------------------------------------------------
+QColor lexer_octave_gui::defaultColor(int style) const
+{
+    switch (style)
+      {
+        case Default:  // black
+          return QColor(0x00,0x00,0x00);
+        case Operator: // red
+          return QColor(0xef,0x00,0x00);
+        case Comment:  // gray
+          return QColor(0x7f,0x7f,0x7f);
+        case Command:  // blue-green
+          return QColor(0x00,0x7f,0x7f);
+        case Number:   // orange
+          return QColor(0x7f,0x7f,0x00);
+        case Keyword:  // blue
+          return QColor(0x00,0x00,0xbf);
+        case SingleQuotedString: // green
+          return QColor(0x00,0x7f,0x00);
+        case DoubleQuotedString: // green-yellow
+          return QColor(0x4f,0x7f,0x00);
+      }
+    return QsciLexer::defaultColor(style);
+}
+
+
+// -----------------------------------------------------
+// The font decorations for highlighting
+// -----------------------------------------------------
+QFont lexer_octave_gui::defaultFont(int style) const
+{
+    QFont f;
+
+    switch (style)
+      {
+        case Comment: // default but italic
+          f = QsciLexer::defaultFont(style);
+          f.setItalic(true);
+          break;
+        case Keyword: // default
+          f = QsciLexer::defaultFont(style);
+          break;
+        case Operator:  // default
+          f = QsciLexer::defaultFont(style);
+          break;
+        default:        // default
+          f = QsciLexer::defaultFont(style);
+          break;
+      }
+    return f;   // return the selected font
+}
+
+
+// -----------------------------------------------------
+// Style names
+// -----------------------------------------------------
+QString lexer_octave_gui::description(int style) const
+{
+    switch (style)
+      {
+        case Default:
+          return tr("Default");
+        case Comment:
+          return tr("Comment");
+        case Command:
+          return tr("Command");
+        case Number:
+          return tr("Number");
+        case Keyword:
+          return tr("Keyword");
+        case SingleQuotedString:
+          return tr("Single-quoted string");
+        case Operator:
+          return tr("Operator");
+        case Identifier:
+          return tr("Identifier");
+        case DoubleQuotedString:
+          return tr("Double-quoted string");
+      }
+    return QString();
+}
+
+
+// -----------------------------------------------------
+// The set of keywords for highlighting
+// TODO: How to define a second set?
+// -----------------------------------------------------
+const char *lexer_octave_gui::keywords(int set) const
+{
+    if (set == 1)
+      {
+        return resource_manager::octave_keywords ();
+      }
+    return 0;
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/libgui/src/m-editor/lexer-octave-gui.h	Sat Aug 18 18:10:09 2012 -0400
@@ -0,0 +1,60 @@
+/* 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/>.
+ */
+
+#ifndef LEXEROCTAVE_H
+#define LEXEROCTAVE_H
+
+#include "resource-manager.h"
+#include <QObject>
+#include <Qsci/qsciglobal.h>
+#include <Qsci/qscilexer.h>
+
+
+class lexer_octave_gui : public QsciLexer
+{
+    Q_OBJECT
+
+public:
+    // the used styles
+    enum
+      {
+        Default = 0,
+        Comment = 1,
+        Command = 2,
+        Number = 3,
+        Keyword = 4,
+        SingleQuotedString = 5,
+        Operator = 6,
+        Identifier = 7,
+        DoubleQuotedString = 8
+      };
+
+    lexer_octave_gui (QObject *parent = 0);
+    virtual ~lexer_octave_gui ();
+    const char *language () const;
+    const char *lexer () const;
+    QColor defaultColor (int style) const;
+    QFont defaultFont (int style) const;
+    const char *keywords (int set) const;
+    QString description (int style) const;
+
+private:
+    lexer_octave_gui (const lexer_octave_gui &);
+    lexer_octave_gui &operator= (const lexer_octave_gui &);
+};
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/libgui/src/main-window.cc	Sat Aug 18 18:10:09 2012 -0400
@@ -0,0 +1,865 @@
+/* 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 <QMenuBar>
+#include <QMenu>
+#include <QAction>
+#include <QSettings>
+#include <QStyle>
+#include <QToolBar>
+#include <QDesktopServices>
+#include <QFileDialog>
+#include <QMessageBox>
+#include <QIcon>
+
+#include "main-window.h"
+#include "file-editor.h"
+#include "settings-dialog.h"
+
+main_window::main_window (QWidget * parent)
+  : QMainWindow (parent), octave_event_observer ()
+{
+  // We have to set up all our windows, before we finally launch octave.
+  construct ();
+  octave_link::instance ()->launch_octave();
+}
+
+main_window::~main_window ()
+{
+}
+
+void
+main_window::event_accepted (octave_event *e)
+{
+  if (dynamic_cast<octave_clear_history_event*> (e))
+    {
+      // After clearing the history, we need to reset the model.
+      _history_dock_widget->reset_model ();
+    }
+  delete e;
+}
+
+void
+main_window::event_reject (octave_event *e)
+{
+  delete e;
+}
+
+void
+main_window::new_file ()
+{
+  _file_editor->request_new_file ();
+  focus_editor ();
+}
+
+void
+main_window::open_file ()
+{
+  _file_editor->request_open_file ();
+  focus_editor ();
+}
+
+void
+main_window::open_file (QString file_name)
+{
+  _file_editor->request_open_file (file_name);
+  focus_editor ();
+}
+
+void
+main_window::report_status_message (QString statusMessage)
+{
+  _status_bar->showMessage (statusMessage, 1000);
+}
+
+void
+main_window::handle_save_workspace_request ()
+{
+  QString selectedFile =
+      QFileDialog::getSaveFileName (this, tr ("Save Workspace"),
+                                    resource_manager::get_home_path ());
+  if (!selectedFile.isEmpty ())
+    {
+      octave_link::instance ()
+          ->post_event (new octave_save_workspace_event (*this,
+          selectedFile.toStdString()));
+    }
+}
+
+void
+main_window::handle_load_workspace_request ()
+{
+  QString selectedFile =
+      QFileDialog::getOpenFileName (this, tr ("Load Workspace"),
+                                    resource_manager::get_home_path ());
+  if (!selectedFile.isEmpty ())
+    {
+      octave_link::instance ()
+          ->post_event (new octave_load_workspace_event (*this,
+            selectedFile.toStdString()));
+    }
+}
+
+void
+main_window::handle_clear_workspace_request ()
+{
+  octave_link::instance ()
+      ->post_event (new octave_clear_workspace_event (*this));
+}
+
+void
+main_window::handle_clear_history_request()
+{
+  octave_link::instance ()
+      ->post_event (new octave_clear_history_event (*this));
+}
+
+void
+main_window::handle_command_double_clicked (QString command)
+{
+  _terminal->sendText (command);
+  _terminal->setFocus ();
+}
+
+void
+main_window::open_bug_tracker_page ()
+{
+  QDesktopServices::openUrl (QUrl ("http://bugs.octave.org"));
+}
+
+void
+main_window::open_agora_page ()
+{
+  QDesktopServices::openUrl (QUrl ("http://agora.octave.org/"));
+}
+
+void
+main_window::open_octave_forge_page ()
+{
+  QDesktopServices::openUrl (QUrl ("http://octave.sourceforge.net/"));
+}
+
+void
+main_window::process_settings_dialog_request ()
+{
+  settings_dialog *settingsDialog = new settings_dialog (this);
+  settingsDialog->exec ();
+  delete settingsDialog;
+  emit settings_changed ();
+}
+
+void
+main_window::notice_settings ()
+{
+  // Set terminal font:
+  QSettings *settings = resource_manager::get_settings ();
+
+  // FIXME -- what should happen if settings is 0?
+
+  QFont font = QFont();
+  font.setFamily(settings->value("terminal/fontName").toString());
+  font.setPointSize(settings->value("terminal/fontSize").toInt ());
+  _terminal->setTerminalFont(font);
+
+  QString cursorType = settings->value ("terminal/cursorType").toString ();
+  bool cursorBlinking = settings->value ("terminal/cursorBlinking").toBool ();
+  if (cursorType == "ibeam")
+    _terminal->setCursorType(QTerminalInterface::IBeamCursor, cursorBlinking);
+  else if (cursorType == "block")
+    _terminal->setCursorType(QTerminalInterface::BlockCursor, cursorBlinking);
+  else if (cursorType == "underline")
+    _terminal->setCursorType(QTerminalInterface::UnderlineCursor,
+                             cursorBlinking);
+
+  resource_manager::update_network_settings ();
+}
+
+void
+main_window::prepare_for_quit ()
+{
+  write_settings ();
+}
+
+void
+main_window::reset_windows ()
+{
+  // TODO: Implement.
+}
+
+void
+main_window::current_working_directory_has_changed (QString directory)
+{
+  if (_current_directory_combo_box->count () > 31)
+    {
+      _current_directory_combo_box->removeItem (0);
+    }
+  _current_directory_combo_box->addItem (directory);
+  int index = _current_directory_combo_box->findText (directory);
+  _current_directory_combo_box->setCurrentIndex (index);
+
+  _files_dock_widget->set_current_directory (directory);
+}
+
+void
+main_window::change_current_working_directory ()
+{
+  QString selectedDirectory =
+      QFileDialog::getExistingDirectory(this, tr ("Set working direcotry"));
+
+  if (!selectedDirectory.isEmpty ())
+    {
+      octave_link::instance ()
+          ->post_event (new octave_change_directory_event (*this,
+                        selectedDirectory.toStdString ()));
+    }
+}
+
+void
+main_window::set_current_working_directory (QString directory)
+{
+  octave_link::instance ()
+      ->post_event (new octave_change_directory_event (*this,
+                    directory.toStdString ()));
+}
+
+void
+main_window::current_working_directory_up ()
+{
+  set_current_working_directory ("..");
+}
+
+void
+main_window::focus_command_window ()
+{
+  if (!_terminal_dock_widget->isVisible ())
+    {
+      _terminal_dock_widget->setVisible (true);
+    }
+
+  _terminal_dock_widget->setFocus ();
+  _terminal_dock_widget->activateWindow ();
+  _terminal_dock_widget->raise ();
+
+  _terminal->setFocus ();
+  _terminal->activateWindow ();
+  _terminal->raise ();
+}
+
+void
+main_window::focus_command_history ()
+{
+  if (!_history_dock_widget->isVisible ())
+    {
+      _history_dock_widget->setVisible (true);
+    }
+
+  _history_dock_widget->setFocus ();
+  _history_dock_widget->activateWindow ();
+  _history_dock_widget->raise ();
+}
+
+void
+main_window::focus_current_directory ()
+{
+  if (!_files_dock_widget->isVisible ())
+    {
+      _files_dock_widget->setVisible (true);
+    }
+
+  _files_dock_widget->setFocus ();
+  _files_dock_widget->activateWindow ();
+  _files_dock_widget->raise ();
+}
+
+void
+main_window::focus_workspace ()
+{
+  if (!_workspace_view->isVisible ())
+    {
+      _workspace_view->setVisible (true);
+    }
+
+  _workspace_view->setFocus ();
+  _workspace_view->activateWindow ();
+  _workspace_view->raise ();
+}
+
+void
+main_window::focus_editor ()
+{
+  if (!_file_editor->isVisible ())
+    {
+      _file_editor->setVisible (true);
+    }
+
+  _file_editor->setFocus ();
+  _file_editor->activateWindow ();
+  _file_editor->raise ();
+}
+
+void
+main_window::focus_documentation ()
+{
+  if (!_documentation_dock_widget->isVisible ())
+    {
+      _documentation_dock_widget->setVisible (true);
+    }
+
+  _documentation_dock_widget->setFocus ();
+  _documentation_dock_widget->activateWindow ();
+  _documentation_dock_widget->raise ();
+}
+
+void
+main_window::handle_entered_debug_mode ()
+{
+  setWindowTitle ("Octave (Debugging)");
+  _debug_continue->setEnabled (true);
+  _debug_step_into->setEnabled (true);
+  _debug_step_over->setEnabled (true);
+  _debug_step_out->setEnabled (true);
+  _debug_quit->setEnabled (true);
+  _file_editor->handle_entered_debug_mode ();
+}
+
+void
+main_window::handle_quit_debug_mode ()
+{
+  setWindowTitle ("Octave");
+  _debug_continue->setEnabled (false);
+  _debug_step_into->setEnabled (false);
+  _debug_step_over->setEnabled (false);
+  _debug_step_out->setEnabled (false);
+  _debug_quit->setEnabled (false);
+  _file_editor->handle_quit_debug_mode ();
+}
+
+void
+main_window::debug_continue ()
+{
+  octave_link::instance ()
+      ->post_event (new octave_debug_continue_event (*this));
+}
+
+void
+main_window::debug_step_into ()
+{
+  octave_link::instance ()
+      ->post_event (new octave_debug_step_into_event (*this));
+}
+
+void
+main_window::debug_step_over ()
+{
+  octave_link::instance ()
+      ->post_event (new octave_debug_step_over_event (*this));
+}
+
+void
+main_window::debug_step_out ()
+{
+  octave_link::instance ()
+      ->post_event (new octave_debug_step_out_event (*this));
+}
+
+void
+main_window::debug_quit ()
+{
+  octave_link::instance ()
+      ->post_event (new octave_debug_quit_event (*this));
+}
+
+void
+main_window::show_about_octave ()
+{
+  QString message =
+      "GNU Octave\n"
+      "Copyright (C) 2009 John W. Eaton and others.\n"
+      "This is free software; see the source code for copying conditions."
+      "There is ABSOLUTELY NO WARRANTY; not even for MERCHANTABILITY or"
+      "FITNESS FOR A PARTICULAR PURPOSE.  For details, type `warranty'.\n"
+      "\n"
+      "Additional information about Octave is available at http://www.octave.org.\n"
+      "\n"
+      "Please contribute if you find this software useful."
+      "For more information, visit http://www.octave.org/help-wanted.html\n"
+      "\n"
+      "Report bugs to <bug@octave.org> (but first, please read"
+      "http://www.octave.org/bugs.html to learn how to write a helpful report).\n"
+      "\n"
+      "For information about changes from previous versions, type `news'.\n";
+
+  QMessageBox::about (this, tr ("About Octave"), message);
+}
+
+void
+main_window::closeEvent (QCloseEvent * closeEvent)
+{
+  closeEvent->ignore ();
+  octave_link::instance ()->post_event (new octave_exit_event (*this));
+ }
+
+void
+main_window::read_settings ()
+{
+  QSettings *settings = resource_manager::get_settings ();
+
+  // FIXME -- what should happen if settings is 0?
+
+  restoreGeometry (settings->value ("MainWindow/geometry").toByteArray ());
+  restoreState (settings->value ("MainWindow/windowState").toByteArray ());
+  emit settings_changed ();
+}
+
+void
+main_window::write_settings ()
+{
+  QSettings *settings = resource_manager::get_settings ();
+
+  // FIXME -- what should happen if settings is 0?
+
+  settings->setValue ("MainWindow/geometry", saveGeometry ());
+  settings->setValue ("MainWindow/windowState", saveState ());
+  settings->sync ();
+}
+
+void
+main_window::construct ()
+{
+  _closing = false;   // flag for editor files when closed
+  setWindowIcon (QIcon(":/actions/icons/logo.png"));
+
+  // Setup dockable widgets and the status bar.
+  _workspace_view           = new workspace_view (this);
+  _workspace_view->setStatusTip (tr ("View the variables in the active workspace."));
+  _history_dock_widget      = new history_dock_widget (this);
+  _history_dock_widget->setStatusTip (tr ("Browse and search the command history."));
+  _files_dock_widget        = new files_dock_widget (this);
+  _files_dock_widget->setStatusTip (tr ("Browse your files."));
+  _documentation_dock_widget= new documentation_dock_widget (this);
+  _documentation_dock_widget->setStatusTip (tr ("See the documentation for help."));
+  _status_bar               = new QStatusBar (this);
+
+  _current_directory_combo_box = new QComboBox (this);
+  _current_directory_combo_box->setFixedWidth (300);
+  _current_directory_combo_box->setEditable (true);
+  _current_directory_combo_box->setInsertPolicy (QComboBox::InsertAtTop);
+  _current_directory_combo_box->setMaxVisibleItems (14);
+
+  _current_directory_tool_button = new QToolButton (this);
+  _current_directory_tool_button->setIcon (QIcon(":/actions/icons/search.png"));
+
+  _current_directory_up_tool_button = new QToolButton (this);
+  _current_directory_up_tool_button->setIcon (QIcon(":/actions/icons/up.png"));
+
+  // Octave Terminal subwindow.
+  _terminal = new QTerminal (this);
+  _terminal->setObjectName ("OctaveTerminal");
+  _terminal->setFocusPolicy (Qt::StrongFocus);
+  _terminal_dock_widget = new terminal_dock_widget (_terminal, this);
+  _terminal_dock_widget->setWindowIcon (QIcon(":/actions/icons/terminal.png"));
+
+  QWidget *dummyWidget = new QWidget ();
+  dummyWidget->setObjectName ("CentralDummyWidget");
+  dummyWidget->resize (10, 10);
+  dummyWidget->setSizePolicy (QSizePolicy::Minimum, QSizePolicy::Minimum);
+  dummyWidget->hide ();
+  setCentralWidget (dummyWidget);
+
+  _file_editor = new file_editor (_terminal, this);
+
+  QMenu *file_menu = menuBar ()->addMenu (tr ("&File"));
+
+  QMenu *new_menu = file_menu->addMenu(tr ("New"));
+
+  QAction *new_script_action
+      = new_menu->addAction (QIcon(":/actions/icons/filenew.png"), tr ("Script"));
+  new_script_action->setShortcut (Qt::ControlModifier + Qt::Key_N);
+
+  QAction *new_function_action = new_menu->addAction (tr ("Function"));
+  new_function_action->setEnabled (false); // TODO: Make this work.
+  QAction *new_class_action = new_menu->addAction (tr ("Class"));
+  new_class_action->setEnabled (false); // TODO: Make this work.
+  QAction *new_enumeration_action = new_menu->addAction (tr ("Enumeration"));
+  new_enumeration_action->setEnabled (false); // TODO: Make this work.
+  QAction *new_figure_action = new_menu->addAction (tr ("Figure"));
+  new_figure_action->setEnabled (false); // TODO: Make this work.
+  QAction *new_variable_action = new_menu->addAction (tr ("Variable"));
+  new_variable_action->setEnabled (false); // TODO: Make this work.
+  QAction *new_model_action = new_menu->addAction (tr ("Model"));
+  new_model_action->setEnabled (false); // TODO: Make this work.
+  QAction *new_gui_action = new_menu->addAction (tr ("GUI"));
+  new_gui_action->setEnabled (false); // TODO: Make this work.
+
+  QAction *open_action
+      = file_menu->addAction (QIcon(":/actions/icons/fileopen.png"), tr ("Open..."));
+  open_action->setShortcut (Qt::ControlModifier + Qt::Key_O);
+
+  QAction *close_command_window_action
+      = file_menu->addAction (tr ("Close Command Window"));
+  close_command_window_action->setShortcut (Qt::ControlModifier + Qt::Key_W);
+  close_command_window_action->setEnabled (false); // TODO: Make this work.
+
+  file_menu->addSeparator ();
+  QAction *import_data_action
+      = file_menu->addAction (tr ("Import Data..."));
+  import_data_action->setEnabled (false); // TODO: Make this work.
+
+  QAction *save_workspace_action
+      = file_menu->addAction (tr ("Save Workspace..."));
+  save_workspace_action->setShortcut (Qt::ControlModifier + Qt::Key_S);
+  file_menu->addSeparator ();
+
+  QAction *preferences_action
+      = file_menu->addAction (QIcon(":/actions/icons/configure.png"),
+                              tr ("Preferences..."));
+  file_menu->addSeparator ();
+  QAction *page_setup_action
+      = file_menu->addAction (tr ("Page Setup..."));
+  page_setup_action->setEnabled (false); // TODO: Make this work.
+  QAction *print_action
+      = file_menu->addAction (tr ("Print"));
+  print_action->setShortcut (Qt::ControlModifier + Qt::Key_P);
+  print_action->setEnabled (false); // TODO: Make this work.
+  QAction *print_selection_action
+      = file_menu->addAction (tr ("Print Selection..."));
+  print_selection_action->setEnabled (false); // TODO: Make this work.
+
+  file_menu->addSeparator ();
+  QAction *exit_action = file_menu->addAction (tr ("Exit"));
+  exit_action->setShortcut (Qt::ControlModifier + Qt::Key_Q);
+
+
+  QMenu *edit_menu = menuBar ()->addMenu (tr ("&Edit"));
+  QAction *undo_action
+      = edit_menu->addAction (QIcon(":/actions/icons/undo.png"), tr ("Undo"));
+  undo_action->setShortcut (QKeySequence::Undo);
+
+  QAction *redo_action
+      = edit_menu->addAction (QIcon(":/actions/icons/redo.png"), tr ("Redo"));
+  redo_action->setShortcut (QKeySequence::Redo);
+  edit_menu->addSeparator ();
+
+  QAction *cut_action
+      = edit_menu->addAction (QIcon(":/actions/icons/editcut.png"), tr ("Cut"));
+  cut_action->setShortcut (Qt::ControlModifier + Qt::ShiftModifier + Qt::Key_X);
+
+  QAction *copy_action
+      = edit_menu->addAction (QIcon(":/actions/icons/editcopy.png"), tr ("Copy"));
+  copy_action->setShortcut (Qt::ControlModifier + Qt::ShiftModifier + Qt::Key_C);
+
+  QAction *paste_action
+      = edit_menu->addAction (QIcon(":/actions/icons/editpaste.png"), tr ("Paste"));
+  paste_action->setShortcut (Qt::ControlModifier + Qt::ShiftModifier + Qt::Key_V);
+
+  QAction *paste_to_workspace_action
+      = edit_menu->addAction (tr ("Paste To Workspace..."));
+  paste_to_workspace_action->setEnabled (false); // TODO: Make this work.
+  edit_menu->addSeparator ();
+
+  QAction *select_all_action
+      = edit_menu->addAction (tr ("Select All"));
+  select_all_action->setEnabled (false); // TODO: Make this work.
+  QAction *delete_action
+      = edit_menu->addAction (tr ("Delete"));
+  delete_action->setShortcut (Qt::Key_Delete);
+  delete_action->setEnabled (false); // TODO: Make this work.
+  edit_menu->addSeparator ();
+
+  QAction *find_action
+      = edit_menu->addAction (tr ("Find..."));
+  find_action->setEnabled (false); // TODO: Make this work.
+  QAction *find_files_action
+      = edit_menu->addAction (tr ("Find Files..."));
+  find_files_action->setShortcut (Qt::ControlModifier + Qt::ShiftModifier
+                                  + Qt::Key_F);
+  find_files_action->setEnabled (false); // TODO: Make this work.
+  edit_menu->addSeparator ();
+
+  QAction *clear_command_window_action
+      = edit_menu->addAction (tr ("Clear Command Window"));
+  clear_command_window_action->setEnabled (false); // TODO: Make this work.
+  QAction *clear_command_history
+      = edit_menu->addAction(tr ("Clear Command History"));
+  QAction * clear_workspace_action
+      = edit_menu->addAction (tr ("Clear Workspace"));
+
+  _debug_menu = menuBar ()->addMenu (tr ("De&bug"));
+
+  _debug_step_over = _debug_menu->addAction (QIcon (":/actions/icons/db_step.png"), tr ("Step"));
+  _debug_step_over->setEnabled (false);
+  _file_editor->debug_menu ()->addAction (_debug_step_over);
+  _file_editor->toolbar ()->addAction (_debug_step_over);
+  _debug_step_over->setShortcut (Qt::Key_F10);
+
+  _debug_step_into = _debug_menu->addAction (QIcon (":/actions/icons/db_step_in.png"), tr ("Step in"));
+  _debug_step_into->setEnabled (false);
+  _file_editor->debug_menu ()->addAction (_debug_step_into);
+  _file_editor->toolbar ()->addAction (_debug_step_into);
+  _debug_step_into->setShortcut (Qt::Key_F11);
+
+  _debug_step_out = _debug_menu->addAction (QIcon (":/actions/icons/db_step_out.png"), tr ("Step out"));
+  _debug_step_out->setEnabled (false);
+  _file_editor->debug_menu ()->addAction (_debug_step_out);
+  _file_editor->toolbar ()->addAction (_debug_step_out);
+  _debug_step_out->setShortcut (Qt::ShiftModifier + Qt::Key_F11);
+
+  _debug_continue = _debug_menu->addAction (QIcon (":/actions/icons/db_cont.png"), tr ("Continue"));
+  _debug_continue->setEnabled (false);
+  _file_editor->debug_menu ()->addAction (_debug_continue);
+  _file_editor->toolbar ()->addAction (_debug_continue);
+  _debug_continue->setShortcut (Qt::Key_F5);
+
+  _debug_menu->addSeparator ();
+  _file_editor->debug_menu ()->addSeparator ();
+
+  _debug_quit = _debug_menu->addAction (QIcon (":/actions/icons/db_stop.png"), tr ("Exit Debug Mode"));
+  _debug_quit->setEnabled (false);
+  _file_editor->debug_menu ()->addAction (_debug_quit);
+  _file_editor->toolbar ()->addAction (_debug_quit);
+  _debug_quit->setShortcut (Qt::ShiftModifier + Qt::Key_F5);
+
+  //QMenu *parallelMenu = menuBar ()->addMenu (tr ("&Parallel"));
+
+  QMenu *   desktop_menu = menuBar ()->addMenu (tr ("&Desktop"));
+  QAction * load_workspace_action       = desktop_menu->addAction (tr ("Load workspace"));
+
+
+  // Window menu
+  QMenu *   window_menu = menuBar ()->addMenu (tr ("&Window"));
+  QAction * show_command_window_action
+    = window_menu->addAction (tr ("Show Command Window"));
+  show_command_window_action->setCheckable (true);
+  show_command_window_action->setShortcut (Qt::ControlModifier
+                                           + Qt::ShiftModifier + Qt::Key_0);
+
+  QAction * show_history_action
+    = window_menu->addAction (tr ("Show Command History"));
+  show_history_action->setCheckable (true);
+  show_history_action->setShortcut (Qt::ControlModifier
+                                    + Qt::ShiftModifier + Qt::Key_1);
+  QAction * show_file_browser_action
+    = window_menu->addAction (tr ("Show Current Directory"));
+  show_file_browser_action->setCheckable (true);
+  show_file_browser_action->setShortcut (Qt::ControlModifier
+                                         + Qt::ShiftModifier + Qt::Key_2);
+
+  QAction * show_workspace_action
+    = window_menu->addAction (tr ("Show Workspace"));
+  show_workspace_action->setCheckable (true);
+  show_workspace_action->setShortcut (Qt::ControlModifier
+                                      + Qt::ShiftModifier + Qt::Key_3);
+
+  QAction * show_editor_action = window_menu->addAction (tr ("Show Editor"));
+  show_editor_action->setCheckable (true);
+  show_editor_action->setShortcut (Qt::ControlModifier + Qt::ShiftModifier
+                                   + Qt::Key_4);
+
+  QAction * show_documentation_action = window_menu->addAction (tr ("Show Documentation"));
+  show_documentation_action->setCheckable (true);
+  show_documentation_action->setShortcut (Qt::ControlModifier + Qt::ShiftModifier
+                                   + Qt::Key_5);
+  window_menu->addSeparator ();
+
+  QAction * command_window_action
+    = window_menu->addAction (tr ("Command Window"));
+  command_window_action->setShortcut (Qt::ControlModifier + Qt::Key_0);
+
+  QAction * history_action
+    = window_menu->addAction (tr ("Command History"));
+  history_action->setShortcut (Qt::ControlModifier + Qt::Key_1);
+
+  QAction * file_browser_action
+    = window_menu->addAction (tr ("Current Directory"));
+  file_browser_action->setShortcut (Qt::ControlModifier + Qt::Key_2);
+
+  QAction * workspace_action
+    = window_menu->addAction (tr ("Workspace"));
+  workspace_action->setShortcut (Qt::ControlModifier + Qt::Key_3);
+
+  QAction * editor_action
+    = window_menu->addAction (tr ("Editor"));
+  editor_action->setShortcut (Qt::ControlModifier + Qt::Key_4);
+
+  QAction * documentation_action
+    = window_menu->addAction (tr ("Documentation"));
+  documentation_action->setShortcut (Qt::ControlModifier + Qt::Key_5);
+
+  window_menu->addSeparator ();
+  QAction * reset_windows_action
+    = window_menu->addAction (tr ("Reset Windows"));
+  reset_windows_action->setEnabled (false); // TODO: Make this work.
+
+  // Help menu
+  QMenu *   help_menu = menuBar ()->addMenu (tr ("&Help"));
+  QAction * report_bug_action
+    = help_menu->addAction (tr ("Report Bug"));
+  QAction * agora_action
+    = help_menu->addAction (tr ("Visit Agora"));
+  QAction * octave_forge_action
+    = help_menu->addAction (tr ("Visit Octave Forge"));
+  help_menu->addSeparator ();
+
+  QAction * about_octave_action
+    = help_menu->addAction (tr ("About Octave"));
+
+  // Toolbars
+  QToolBar *main_tool_bar = addToolBar ("Main");
+            main_tool_bar->addAction (new_script_action);
+            main_tool_bar->addAction (open_action);
+            main_tool_bar->addSeparator ();
+            main_tool_bar->addAction (cut_action);
+            main_tool_bar->addAction (copy_action);
+            main_tool_bar->addAction (paste_action);
+            main_tool_bar->addAction (undo_action);
+            main_tool_bar->addAction (redo_action);
+            main_tool_bar->addSeparator ();
+            main_tool_bar->addWidget (new QLabel (tr ("Current Directory:")));
+            main_tool_bar->addWidget (_current_directory_combo_box);
+            main_tool_bar->addWidget (_current_directory_tool_button);
+            main_tool_bar->addWidget (_current_directory_up_tool_button);
+
+  connect (qApp,                        SIGNAL (aboutToQuit ()),
+           this,                        SLOT   (prepare_for_quit ()));
+  connect (preferences_action,          SIGNAL (triggered ()),
+           this,                        SLOT   (process_settings_dialog_request ()));
+  connect (exit_action,                 SIGNAL (triggered ()),
+           this,                        SLOT   (close ()));
+  connect (new_script_action,           SIGNAL (triggered ()),
+           this,                        SLOT   (new_file ()));
+  connect (open_action,                 SIGNAL (triggered ()),
+           this,                        SLOT   (open_file ()));
+  connect (report_bug_action,           SIGNAL (triggered ()),
+           this,                        SLOT   (open_bug_tracker_page ()));
+  connect (agora_action,                SIGNAL (triggered ()),
+           this,                        SLOT   (open_agora_page ()));
+  connect (octave_forge_action,         SIGNAL (triggered ()),
+           this,                        SLOT   (open_octave_forge_page ()));
+  connect (about_octave_action,         SIGNAL (triggered ()),
+           this,                        SLOT   (show_about_octave ()));
+  connect (show_command_window_action,  SIGNAL (toggled (bool)),
+           _terminal_dock_widget,       SLOT   (setVisible (bool)));
+  connect (_terminal_dock_widget,       SIGNAL (active_changed (bool)),
+           show_command_window_action,  SLOT   (setChecked (bool)));
+  connect (show_workspace_action,       SIGNAL (toggled (bool)),
+           _workspace_view,             SLOT   (setVisible (bool)));
+  connect (_workspace_view,             SIGNAL (active_changed (bool)),
+           show_workspace_action,       SLOT   (setChecked (bool)));
+  connect (show_history_action,         SIGNAL (toggled (bool)),
+           _history_dock_widget,        SLOT   (setVisible (bool)));
+  connect (_history_dock_widget,        SIGNAL (active_changed (bool)),
+           show_history_action,         SLOT   (setChecked (bool)));
+  connect (show_file_browser_action,    SIGNAL (toggled (bool)),
+           _files_dock_widget,          SLOT   (setVisible (bool)));
+  connect (_files_dock_widget,          SIGNAL (active_changed (bool)),
+           show_file_browser_action,    SLOT   (setChecked (bool)));
+  connect (show_editor_action,          SIGNAL (toggled (bool)),
+           _file_editor,                SLOT   (setVisible (bool)));
+  connect (_file_editor,                SIGNAL (active_changed (bool)),
+           show_editor_action,          SLOT   (setChecked (bool)));
+  connect (show_documentation_action,   SIGNAL (toggled (bool)),
+           _documentation_dock_widget,  SLOT   (setVisible (bool)));
+  connect (_documentation_dock_widget,  SIGNAL (active_changed (bool)),
+           show_documentation_action,   SLOT   (setChecked (bool)));
+
+  connect (command_window_action,       SIGNAL (triggered ()),
+           this,                        SLOT (focus_command_window ()));
+  connect (workspace_action,            SIGNAL (triggered ()),
+           this,                        SLOT (focus_workspace ()));
+  connect (history_action,              SIGNAL (triggered ()),
+           this,                        SLOT (focus_command_history ()));
+  connect (file_browser_action,         SIGNAL (triggered ()),
+           this,                        SLOT (focus_current_directory ()));
+  connect (editor_action,               SIGNAL (triggered ()),
+           this,                        SLOT (focus_editor ()));
+  connect (documentation_action,        SIGNAL (triggered ()),
+           this,                        SLOT (focus_documentation ()));
+
+  connect (reset_windows_action,        SIGNAL (triggered ()),
+           this,                        SLOT   (reset_windows ()));
+  connect (this,                        SIGNAL (settings_changed ()),
+           _files_dock_widget,          SLOT   (notice_settings ()));
+  connect (this,                        SIGNAL (settings_changed ()),
+           this,                        SLOT   (notice_settings ()));
+  connect (_files_dock_widget,          SIGNAL (open_file (QString)),
+           this,                        SLOT   (open_file (QString)));
+  connect (_files_dock_widget,          SIGNAL (displayed_directory_changed(QString)),
+           this,                        SLOT   (set_current_working_directory(QString)));
+  connect (_history_dock_widget,        SIGNAL (information (QString)),
+           this,                        SLOT   (report_status_message (QString)));
+  connect (_history_dock_widget,        SIGNAL (command_double_clicked (QString)),
+           this,                        SLOT   (handle_command_double_clicked (QString)));
+  connect (save_workspace_action,       SIGNAL (triggered ()),
+           this,                        SLOT   (handle_save_workspace_request ()));
+  connect (load_workspace_action,       SIGNAL (triggered ()),
+           this,                        SLOT   (handle_load_workspace_request ()));
+  connect (clear_workspace_action,      SIGNAL (triggered ()),
+           this,                        SLOT   (handle_clear_workspace_request ()));
+  connect (_current_directory_tool_button, SIGNAL (clicked ()),
+           this,                        SLOT   (change_current_working_directory ()));
+  connect (_current_directory_up_tool_button, SIGNAL (clicked ()),
+           this,                        SLOT   (current_working_directory_up()));
+  connect (copy_action,                 SIGNAL (triggered()),
+           _terminal,                   SLOT   (copyClipboard ()));
+  connect (paste_action,                SIGNAL (triggered()),
+           _terminal,                   SLOT   (pasteClipboard ()));
+  connect (_current_directory_combo_box, SIGNAL (activated (QString)),
+           this,                        SLOT (set_current_working_directory (QString)));
+  connect (_debug_continue,             SIGNAL (triggered ()),
+           this,                        SLOT (debug_continue ()));
+  connect (_debug_step_into,            SIGNAL (triggered ()),
+           this,                        SLOT (debug_step_into ()));
+  connect (_debug_step_over,            SIGNAL (triggered ()),
+           this,                        SLOT (debug_step_over ()));
+  connect (_debug_step_out,             SIGNAL (triggered ()),
+           this,                        SLOT (debug_step_out ()));
+  connect (_debug_quit,                 SIGNAL (triggered ()),
+           this,                        SLOT (debug_quit ()));
+
+  connect (clear_command_history,       SIGNAL (triggered ()),
+           this,                        SLOT (handle_clear_history_request ()));
+
+  setWindowTitle ("Octave");
+  setDockOptions(QMainWindow::AnimatedDocks | QMainWindow::AllowNestedDocks | QMainWindow::AllowTabbedDocks);
+  addDockWidget (Qt::LeftDockWidgetArea, _workspace_view);
+  addDockWidget (Qt::LeftDockWidgetArea, _history_dock_widget);
+  addDockWidget (Qt::RightDockWidgetArea, _files_dock_widget);
+  addDockWidget (Qt::RightDockWidgetArea, _file_editor);
+  addDockWidget (Qt::BottomDockWidgetArea, _terminal_dock_widget);
+  addDockWidget (Qt::RightDockWidgetArea, _documentation_dock_widget);
+  setStatusBar (_status_bar);
+  read_settings ();
+
+  _octave_qt_event_listener = new octave_qt_event_listener ();
+  octave_link::instance ()->register_event_listener (_octave_qt_event_listener);
+
+  connect (_octave_qt_event_listener,
+           SIGNAL (current_directory_has_changed_signal (QString)),
+           this,
+           SLOT (current_working_directory_has_changed (QString)));
+
+  connect (_octave_qt_event_listener,
+           SIGNAL (entered_debug_mode_signal ()),
+           this,
+           SLOT(handle_entered_debug_mode ()));
+
+  connect (_octave_qt_event_listener,
+           SIGNAL (quit_debug_mode_signal ()),
+           this,
+           SLOT (handle_quit_debug_mode ()));
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/libgui/src/main-window.h	Sat Aug 18 18:10:09 2012 -0400
@@ -0,0 +1,156 @@
+/* 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/>.
+ */
+
+#ifndef MAINWINDOW_H
+#define MAINWINDOW_H
+
+// Qt includes
+#include <QtGui/QMainWindow>
+#include <QThread>
+#include <QTabWidget>
+#include <QMdiArea>
+#include <QStatusBar>
+#include <QToolBar>
+#include <QQueue>
+#include <QMdiSubWindow>
+#include <QCloseEvent>
+#include <QToolButton>
+#include <QComboBox>
+
+// Editor includes
+#include "file-editor-interface.h"
+
+// QTerminal includes
+#include "QTerminal.h"
+
+// Own includes
+#include "resource-manager.h"
+#include "octave-link.h"
+#include "workspace-view.h"
+#include "history-dockwidget.h"
+#include "files-dockwidget.h"
+#include "terminal-dockwidget.h"
+#include "documentation-dockwidget.h"
+#include "octave-qt-event-listener.h"
+#include "octave-event-observer.h"
+
+/**
+  * \class MainWindow
+  *
+  * Represents the main window.
+  */
+class main_window
+    : public QMainWindow, public octave_event_observer
+{
+Q_OBJECT public:
+  main_window (QWidget * parent = 0);
+  ~main_window ();
+
+  void event_accepted (octave_event *e);
+  void event_reject (octave_event *e);
+
+  QTerminal *get_terminal_view () { return _terminal; }
+  history_dock_widget *get_history_dock_widget ()
+  {
+    return _history_dock_widget;
+  }
+  files_dock_widget *get_files_dock_widget ()
+  {
+    return _files_dock_widget;
+  }
+  bool is_closing () { return _closing; }
+
+signals:
+  void settings_changed ();
+
+public slots:
+  void report_status_message (QString statusMessage);
+  void handle_save_workspace_request ();
+  void handle_load_workspace_request ();
+  void handle_clear_workspace_request ();
+  void handle_clear_history_request ();
+  void handle_command_double_clicked (QString command);
+  void new_file ();
+  void open_file ();
+  void open_file (QString file_name);
+  void open_bug_tracker_page ();
+  void open_agora_page ();
+  void open_octave_forge_page ();
+  void process_settings_dialog_request ();
+  void show_about_octave ();
+  void notice_settings ();
+  void prepare_for_quit ();
+  void reset_windows ();
+  void current_working_directory_has_changed (QString directory);
+  void change_current_working_directory ();
+  void set_current_working_directory (QString directory);
+  void current_working_directory_up ();
+
+  void focus_command_window ();
+  void focus_command_history ();
+  void focus_current_directory ();
+  void focus_workspace ();
+  void focus_editor ();
+  void focus_documentation ();
+
+  void handle_entered_debug_mode ();
+  void handle_quit_debug_mode ();
+  void debug_continue ();
+  void debug_step_into ();
+  void debug_step_over ();
+  void debug_step_out ();
+  void debug_quit ();
+
+protected:
+  void closeEvent (QCloseEvent * closeEvent);
+  void read_settings ();
+  void write_settings ();
+
+private:
+  void construct ();
+  void establish_octave_link ();
+
+  QTerminal *               _terminal;
+  file_editor_interface *   _file_editor;
+  QMenu *                   _debug_menu;
+
+  QAction *                 _debug_continue;
+  QAction *                 _debug_step_into;
+  QAction *                 _debug_step_over;
+  QAction *                 _debug_step_out;
+  QAction *                 _debug_quit;
+
+  // Dock widgets.
+  workspace_view *          _workspace_view;
+  history_dock_widget *     _history_dock_widget;
+  files_dock_widget *       _files_dock_widget;
+  terminal_dock_widget *    _terminal_dock_widget;
+  documentation_dock_widget*_documentation_dock_widget;
+
+  // Toolbars.
+  QStatusBar *              _status_bar;
+  QComboBox *               _current_directory_combo_box;
+  QToolButton *             _current_directory_tool_button;
+  QToolButton *             _current_directory_up_tool_button;
+
+  octave_qt_event_listener *_octave_qt_event_listener;
+
+  // Flag for closing whole application
+  bool                      _closing;
+};
+
+#endif // MAINWINDOW_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/libgui/src/msvc-debug.pri	Sat Aug 18 18:10:09 2012 -0400
@@ -0,0 +1,24 @@
+# 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/>.
+
+win32-msvc* {
+	CONFIG += release warn_off
+	QMAKE_CXXFLAGS += -MP
+	QMAKE_CXXFLAGS_RELEASE += -Zi
+	QMAKE_CXXFLAGS_RELEASE -= -O2
+	QMAKE_LFLAGS_RELEASE += -debug
+	QMAKE_CLEAN += $(DESTDIR)$(QMAKE_TARGET).pdb
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/libgui/src/msvc.pri	Sat Aug 18 18:10:09 2012 -0400
@@ -0,0 +1,11 @@
+CONFIG += release
+
+QMAKE_CXXFLAGS += -MP
+LIBDIR_SUFFIX = release
+
+msvc-debug {
+	QMAKE_CXXFLAGS_RELEASE += -Zi
+	QMAKE_CXXFLAGS_RELEASE -= -O2
+	QMAKE_LFLAGS_RELEASE += -debug
+	QMAKE_CLEAN += $(DESTDIR)$(QMAKE_TARGET).pdb
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/libgui/src/octave-adapter/octave-event-listener.h	Sat Aug 18 18:10:09 2012 -0400
@@ -0,0 +1,36 @@
+/* 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/>.
+ */
+
+#ifndef OCTAVEEVENTLISTENER_H
+#define OCTAVEEVENTLISTENER_H
+
+#include <string>
+
+class octave_event_listener
+{
+  public:
+    octave_event_listener () { }
+    virtual ~octave_event_listener () { }
+
+    virtual void current_directory_has_changed (std::string directory) = 0;
+    virtual void about_to_exit () = 0;
+
+    virtual void entered_debug_mode () = 0;
+    virtual void quit_debug_mode () = 0;
+};
+
+#endif // OCTAVEEVENTLISTENER_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/libgui/src/octave-adapter/octave-event-observer.h	Sat Aug 18 18:10:09 2012 -0400
@@ -0,0 +1,48 @@
+/* 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/>.
+ */
+
+#ifndef OCTAVEEVENTOBSERVER_H
+#define OCTAVEEVENTOBSERVER_H
+
+class octave_event;
+
+/**
+  * \class octave_event_observer
+  * \brief Implements the observer part for the observer pattern.
+  */
+class octave_event_observer
+{
+  public:
+    octave_event_observer () { }
+    virtual ~octave_event_observer () { }
+
+    /**
+      * This will be called when an event has been accepted. Operations
+      * in this routine will be processed in the octave thread.
+      */
+    virtual void event_accepted (octave_event *e) = 0;
+
+    /**
+      * This will be called when an event has been rejected. Operations
+      * in this routine will be processed in the octave thread.
+      */
+    virtual void event_reject (octave_event *e) = 0;
+};
+
+#include "octave-event.h"
+
+#endif // OCTAVEEVENTOBSERVER_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/libgui/src/octave-adapter/octave-event.cc	Sat Aug 18 18:10:09 2012 -0400
@@ -0,0 +1,170 @@
+/* OctaveGUI - A graphical user interface for Octave
+ * Copyright (C) 2011 John P. Swensen, 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 <string>
+
+#include "cmd-hist.h"
+#include "oct-env.h"
+
+#include "debug.h"
+#include "oct-obj.h"
+#include "parse.h"
+#include "symtab.h"
+#include "toplev.h"
+
+#include "octave-event.h"
+
+#include <readline/readline.h>
+
+void
+octave_event::call_octave_function (std::string name)
+{
+  call_octave_function (name, octave_value_list ());
+}
+
+void
+octave_event::call_octave_function (std::string name,
+                                    const octave_value_list& args,
+                                    int nargout)
+{
+  try
+    {
+      feval (name, args, nargout);
+    } catch (...) { } // Ignore exceptions. Crashes without that.
+}
+
+void
+octave_event::finish_readline_event () const
+{
+  rl_line_buffer[0] = '\0';
+  rl_point = rl_end = 0;
+  rl_done = 1;
+  //rl_forced_update_display ();
+}
+
+bool
+octave_clear_history_event::perform ()
+{
+  int i;
+  while ((i = command_history::length ()) > 0) {
+    command_history::remove (i - 1);
+  }
+  return true;
+}
+
+bool
+octave_debug_step_into_event::perform ()
+{
+  octave_value_list args;
+  args.append (octave_value ("in"));
+  call_octave_function ("dbstep", args);
+  finish_readline_event ();
+  return true;
+}
+
+bool
+octave_debug_step_out_event::perform ()
+{
+  octave_value_list args;
+  args.append (octave_value ("out"));
+  call_octave_function ("dbstep", args);
+  finish_readline_event ();
+  return true;
+}
+
+
+bool
+octave_exit_event::perform ()
+{
+  clean_up_and_exit (0);
+  return true;
+}
+
+bool
+octave_run_file_event::perform ()
+{
+  octave_value_list args;
+  args.append (octave_value (_file));
+  call_octave_function ("run", args);
+  finish_readline_event ();
+  return true;
+}
+
+bool
+octave_change_directory_event::perform ()
+{
+  return octave_env::chdir (_directory);
+}
+
+bool
+octave_load_workspace_event::perform ()
+{
+  octave_value_list args;
+  args.append (octave_value (_file));
+  call_octave_function ("load", args);
+  return true;
+}
+
+bool
+octave_save_workspace_event::perform ()
+{
+  octave_value_list args;
+  args.append (octave_value (_file));
+  call_octave_function ("save", args);
+  return true;
+}
+
+bool
+octave_add_breakpoint_event::perform ()
+{
+  bp_table::intmap intmap;
+  intmap[0] = _line + 1;
+
+  std::string previous_directory = octave_env::get_current_directory ();
+  octave_env::chdir (_path);
+  intmap = bp_table::add_breakpoint (_function_name, intmap);
+  octave_env::chdir (previous_directory);
+  return intmap.size () > 0;
+}
+
+bool
+octave_remove_breakpoint_event::perform ()
+{
+  bp_table::intmap intmap;
+  intmap[0] = _line;
+
+  std::string previous_directory = octave_env::get_current_directory ();
+  octave_env::chdir (_path);
+  bp_table::remove_breakpoint (_function_name, intmap);
+  octave_env::chdir (previous_directory);
+  return true; // TODO: Check result.
+}
+
+bool
+octave_remove_all_breakpoints_event::perform ()
+{
+  bp_table::intmap intmap;
+  std::string previous_directory = octave_env::get_current_directory ();
+  octave_env::chdir (_path);
+  intmap = bp_table::remove_all_breakpoints_in_file (_function_name, true);
+  octave_env::chdir (previous_directory);
+  return intmap.size() > 0;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/libgui/src/octave-adapter/octave-event.h	Sat Aug 18 18:10:09 2012 -0400
@@ -0,0 +1,377 @@
+/* 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/>.
+ */
+
+#ifndef OCTAVEEVENT_H
+#define OCTAVEEVENT_H
+
+#include <string>
+
+class octave_value_list;
+
+#include "octave-event-observer.h"
+
+/**
+  * \class octave_event
+  * \brief Base class for an octave event.
+  * In order to make communication with octave threadsafe, comunication is
+  * implemented via events. An application may create events and post them,
+  * however there is no guarantee events will be processed in a given time.
+  *
+  * In order to create an event, there must be an event observer. The event
+  * observer will be given the opportunity to react on the event as soon as
+  * it has been processed in the octave thread. Accepting and ignoring takes
+  * places in the octave thread.
+  */
+class octave_event
+{
+  public:
+    octave_event (octave_event_observer& o)
+      : _octave_event_observer (o)
+    { }
+
+    virtual ~octave_event ()
+    { }
+
+    /** Performs what is necessary to make this event happen. This
+      * code is thread-safe since it will be executed in the octave
+      * thread. However, you should take care to keep this code as
+      * short as possible. */
+    virtual bool perform () = 0;
+
+    /**
+      * Accepts this event. This allows the event observer to react properly
+      * onto the event.
+      */
+    void accept ()
+    { _octave_event_observer.event_accepted (this); }
+
+    /**
+      * Rejects this event. This allows the event observer to react properly
+      * onto the event.
+      */
+    void reject ()
+    { _octave_event_observer.event_reject (this); }
+
+  protected:
+    void call_octave_function (std::string name);
+
+    void call_octave_function (std::string name,
+                               const octave_value_list& args,
+                               int nargout = 0);
+
+    void finish_readline_event () const;
+
+  private:
+    octave_event_observer& _octave_event_observer;
+};
+
+class octave_update_history_event : public octave_event
+{
+  public:
+    /** Creates a new octave_exit_event. */
+    octave_update_history_event (octave_event_observer& o)
+      : octave_event (o)
+    { }
+
+    bool perform ()
+    { return true; /* Always grant. */ }
+};
+
+class octave_update_workspace_event : public octave_event
+{
+  public:
+    /** Creates a new octave_exit_event. */
+    octave_update_workspace_event (octave_event_observer& o)
+      : octave_event (o)
+    { }
+
+    bool perform ()
+    { return true; /* Always grant. */ }
+};
+
+/** Implements an octave exit event. */
+class octave_exit_event : public octave_event
+{
+  public:
+    /** Creates a new octave_exit_event. */
+    octave_exit_event (octave_event_observer& o)
+      : octave_event (o)
+    { }
+
+    bool perform ();
+};
+
+/** Implements an octave run file event. */
+class octave_run_file_event : public octave_event
+{
+  public:
+    /** Creates a new octave_run_file_event. */
+    octave_run_file_event (octave_event_observer& o,
+                           std::string file)
+      : octave_event (o)
+    { _file = file; }
+
+    bool perform ();
+
+  private:
+    std::string _file;
+};
+
+/** Implements a change directory event. */
+class octave_change_directory_event : public octave_event
+{
+  public:
+    /** Creates a new octave_change_directory_event. */
+    octave_change_directory_event (octave_event_observer& o,
+                                   std::string directory)
+      : octave_event (o)
+    { _directory = directory; }
+
+    bool perform ();
+
+  private:
+    std::string _directory;
+};
+
+/** Implements a clear workspace event. */
+class octave_clear_workspace_event : public octave_event
+{
+  public:
+    /** Creates a new octave_run_file_event. */
+    octave_clear_workspace_event (octave_event_observer& o)
+      : octave_event (o)
+    { }
+
+    bool perform ()
+    {
+      call_octave_function ("clear");
+      return true;
+    }
+};
+
+/** Implements a load workspace event. */
+class octave_load_workspace_event : public octave_event
+{
+  public:
+    /** Creates a new octave_change_directory_event. */
+    octave_load_workspace_event (octave_event_observer& o,
+                                 std::string file)
+      : octave_event (o)
+    { _file = file; }
+
+    bool perform ();
+
+  private:
+    std::string _file;
+};
+
+/** Implements a save workspace event. */
+class octave_save_workspace_event : public octave_event
+{
+  public:
+    /** Creates a new octave_change_directory_event. */
+    octave_save_workspace_event (octave_event_observer& o,
+                                 std::string file)
+      : octave_event (o)
+    { _file = file; }
+
+    bool perform ();
+
+  private:
+    std::string _file;
+};
+
+class octave_clear_history_event : public octave_event
+{
+  public:
+    /** Creates a new octave_clear_history_event. */
+    octave_clear_history_event (octave_event_observer& o)
+      : octave_event (o)
+    { }
+
+  bool perform ();
+};
+
+class octave_add_breakpoint_event : public octave_event
+{
+  public:
+    octave_add_breakpoint_event (octave_event_observer& o,
+                                 std::string path,
+                                 std::string function_name,
+                                 int line)
+      : octave_event (o)
+    {
+      _path = path;
+      _function_name = function_name;
+      _line = line;
+    }
+
+    bool perform ();
+
+    std::string get_path ()
+    {
+      return _path;
+    }
+
+    std::string get_function_name ()
+    {
+      return _function_name;
+    }
+
+    int get_line ()
+    {
+      return _line;
+    }
+
+  private:
+    std::string _path;
+    std::string _function_name;
+    int _line;
+};
+
+class octave_remove_breakpoint_event : public octave_event
+{
+  public:
+    octave_remove_breakpoint_event (octave_event_observer& o,
+                                    std::string path,
+                                    std::string function_name,
+                                    int line)
+      : octave_event (o)
+    {
+      _path = path;
+      _function_name = function_name;
+      _line = line;
+    }
+
+    bool perform ();
+
+    std::string get_path ()
+    {
+      return _path;
+    }
+
+    std::string get_function_name ()
+    {
+      return _function_name;
+    }
+
+    int get_line ()
+    {
+      return _line;
+    }
+
+  private:
+    std::string _path;
+    std::string _function_name;
+    int _line;
+};
+
+class octave_remove_all_breakpoints_event : public octave_event
+{
+  public:
+    octave_remove_all_breakpoints_event (octave_event_observer& o,
+                                         std::string path,
+                                         std::string function_name)
+      : octave_event (o)
+    {
+      _path = path;
+      _function_name = function_name;
+    }
+
+    bool perform ();
+
+    std::string get_path ()
+    {
+      return _path;
+    }
+
+    std::string get_function_name ()
+    {
+      return _function_name;
+    }
+
+  private:
+    std::string _path;
+    std::string _function_name;
+};
+
+class octave_debug_step_into_event : public octave_event
+{
+  public:
+    /** Creates a new octave_debug_step_into_event. */
+    octave_debug_step_into_event (octave_event_observer& o)
+      : octave_event (o) { }
+
+    bool perform ();
+};
+
+class octave_debug_step_over_event : public octave_event
+{
+  public:
+    /** Creates a new octave_debug_step_over_event. */
+    octave_debug_step_over_event (octave_event_observer& o)
+      : octave_event (o) { }
+
+    bool perform ()
+    {
+      call_octave_function ("dbnext");
+      finish_readline_event ();
+      return true;
+    }
+};
+
+class octave_debug_step_out_event : public octave_event
+{
+  public:
+    /** Creates a new octave_debug_step_out_event. */
+    octave_debug_step_out_event (octave_event_observer& o)
+      : octave_event (o) { }
+
+    bool perform ();
+};
+
+class octave_debug_continue_event : public octave_event
+{
+  public:
+    /** Creates a new octave_debug_step_out_event. */
+    octave_debug_continue_event (octave_event_observer& o)
+      : octave_event (o) { }
+
+    bool perform ()
+    {
+      call_octave_function ("dbcont");
+      finish_readline_event ();
+      return true;
+    }
+};
+
+class octave_debug_quit_event : public octave_event
+{
+  public:
+    /** Creates a new octave_debug_step_out_event. */
+    octave_debug_quit_event (octave_event_observer& o)
+      : octave_event (o) { }
+
+    bool perform ()
+    {
+      call_octave_function ("dbquit");
+      finish_readline_event ();
+      return true;
+    }
+};
+
+#endif // OCTAVEEVENT_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/libgui/src/octave-adapter/octave-link.cc	Sat Aug 18 18:10:09 2012 -0400
@@ -0,0 +1,161 @@
+/* OctaveGUI - A graphical user interface for Octave
+ * Copyright (C) 2011 John P. Swensen, 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 "cmd-edit.h"
+#include "oct-env.h"
+#include "oct-mutex.h"
+#include "symtab.h"
+#include "toplev.h"
+
+#include "octave-link.h"
+
+int octave_readline_hook ()
+{
+  octave_link::instance ()->entered_readline_hook ();
+  octave_link::instance ()->generate_events ();
+  octave_link::instance ()->process_events ();
+  octave_link::instance ()->finished_readline_hook ();
+  return 0;
+}
+
+void octave_exit_hook (int status)
+{
+  (void) status;
+  octave_link::instance ()->about_to_exit ();
+}
+
+octave_link octave_link::_singleton;
+
+octave_link::octave_link ()
+{
+  _event_queue_mutex = new octave_mutex ();
+  _last_working_directory = "";
+  _debugging_mode_active = false;
+}
+
+octave_link::~octave_link ()
+{
+}
+
+void
+octave_link::launch_octave ()
+{
+  // Create both threads.
+  _octave_main_thread = new octave_main_thread ();
+  command_editor::add_event_hook (octave_readline_hook);
+  octave_exit = octave_exit_hook;
+
+  // Start the first one.
+  _octave_main_thread->start ();
+}
+
+void
+octave_link::register_event_listener (octave_event_listener *oel)
+{ _octave_event_listener = oel; }
+
+void
+octave_link::generate_events ()
+{
+  std::string current_working_directory = octave_env::get_current_directory ();
+  if (current_working_directory != _last_working_directory)
+    {
+      _last_working_directory = current_working_directory;
+      if (_octave_event_listener)
+        _octave_event_listener
+            ->current_directory_has_changed (_last_working_directory);
+    }
+
+  if (_debugging_mode_active != Vdebugging)
+    {
+      _debugging_mode_active = Vdebugging;
+      if (_octave_event_listener)
+        {
+          if (_debugging_mode_active)
+            _octave_event_listener->entered_debug_mode ();
+          else
+            _octave_event_listener->quit_debug_mode ();
+        }
+    }
+}
+
+void
+octave_link::process_events ()
+{
+  _event_queue_mutex->lock ();
+
+  while (_event_queue.size () > 0)
+    {
+      octave_event * e = _event_queue.front ();
+      _event_queue.pop ();
+      if (e->perform ())
+        e->accept ();
+      else
+        e->reject ();
+    }
+  _event_queue_mutex->unlock ();
+}
+
+void
+octave_link::post_event (octave_event *e)
+{
+  if (e)
+    {
+      _event_queue_mutex->lock ();
+      _event_queue.push (e);
+      _event_queue_mutex->unlock ();
+    }
+}
+
+void
+octave_link::event_accepted (octave_event *e)
+{ delete e; }
+
+void
+octave_link::event_reject (octave_event *e)
+{ delete e; }
+
+void
+octave_link::about_to_exit ()
+{
+  _event_queue_mutex->lock ();
+  while (!_event_queue.empty ())
+    _event_queue.pop ();
+
+  _event_queue_mutex->unlock ();
+
+  if (_octave_event_listener)
+    _octave_event_listener->about_to_exit ();
+}
+
+void
+octave_link::entered_readline_hook ()
+{ }
+
+void
+octave_link::finished_readline_hook ()
+{
+}
+
+std::string
+octave_link::get_last_working_directory ()
+{
+  return _last_working_directory;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/libgui/src/octave-adapter/octave-link.h	Sat Aug 18 18:10:09 2012 -0400
@@ -0,0 +1,88 @@
+/* OctaveGUI - A graphical user interface for Octave
+ * Copyright (C) 2011 John P. Swensen, 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/>.
+ */
+
+#ifndef OCTAVELINK_H
+#define OCTAVELINK_H
+
+#include <queue>
+#include <string>
+
+class octave_mutex;
+
+#include "octave-main-thread.h"
+#include "octave-event.h"
+#include "octave-event-observer.h"
+#include "octave-event-listener.h"
+
+/**
+  * \class OctaveLink
+  * \brief Provides threadsafe access to octave.
+  * \author Jacob Dawid
+  * This class is a wrapper around octave and provides threadsafety by
+  * buffering access operations to octave and executing them in the readline
+  * event hook, which lives in the octave thread.
+  */
+class octave_link : public octave_event_observer
+{
+public:
+  /** Provides a way to access the unique octave_link object. */
+  static octave_link * instance () { return &_singleton; }
+
+  /** Starts octave. */
+  void launch_octave ();
+  void register_event_listener (octave_event_listener *oel);
+
+  void generate_events ();
+  void process_events ();
+  void post_event (octave_event *e);
+  void event_accepted (octave_event *e);
+  void event_reject (octave_event *e);
+
+  void about_to_exit ();
+
+  void entered_readline_hook ();
+  void finished_readline_hook ();
+
+  std::string get_last_working_directory ();
+
+private:
+  /** Singleton. */
+  octave_link ();
+  ~octave_link ();
+
+  octave_event_listener *_octave_event_listener;
+
+  /** Thread running octave_main. */
+  octave_main_thread *_octave_main_thread;
+
+  /** Semaphore to lock access to the event queue. */
+  octave_mutex *_event_queue_mutex;
+
+  /** Buffer for queueing events until they will be processed. */
+  std::queue <octave_event *> _event_queue;
+
+  /** Stores the last known current working directory of octave. */
+  std::string _last_working_directory;
+  bool _debugging_mode_active;
+
+  /** Semaphore to lock access to the performance information. */
+  octave_mutex *_performance_information_mutex;
+
+  /** Unique instance. Singelton! */
+  static octave_link _singleton;
+};
+#endif // OCTAVELINK_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/libgui/src/octave-adapter/octave-main-thread.cc	Sat Aug 18 18:10:09 2012 -0400
@@ -0,0 +1,39 @@
+/* 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 <string>
+
+#include "octave.h"
+
+#include "octave-main-thread.h"
+#include "octave-link.h"
+
+octave_main_thread::octave_main_thread () : QThread ()
+{
+}
+
+void
+octave_main_thread::run ()
+{
+  setlocale (LC_ALL, "en_US.UTF-8");
+  emit ready ();
+  octave_execute_interpreter ();
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/libgui/src/octave-adapter/octave-main-thread.h	Sat Aug 18 18:10:09 2012 -0400
@@ -0,0 +1,45 @@
+/* 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/>.
+ */
+
+#ifndef OCTAVEMAINTHREAD_H
+#define OCTAVEMAINTHREAD_H
+
+#include <QThread>
+
+/**
+  * \class octave_main
+  * \brief This class represents a thread just running octave_main.
+  * \author Jacob Dawid
+  */
+class octave_main_thread : public QThread
+{
+  Q_OBJECT
+public:
+  /** Creates a new thread running octave_main. */
+  octave_main_thread ();
+
+signals:
+  /** This signal will be emitted when the thread is about to actually
+    * run octave_main. */
+  void ready();
+
+protected:
+  /** Runs octave_main. */
+  void run ();
+};
+
+#endif // OCTAVEMAINTHREAD_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/libgui/src/octave-gui.cc	Sat Aug 18 18:10:09 2012 -0400
@@ -0,0 +1,108 @@
+/* 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 ();
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/libgui/src/octave-gui.h	Sat Aug 18 18:10:09 2012 -0400
@@ -0,0 +1,28 @@
+/*
+
+Copyright (C) 2012 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/>.
+
+*/
+
+#if !defined (octave_octave_gui_h)
+#define octave_octave_gui_h 1
+
+extern int octave_start_gui (int argc, char **argv);
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/libgui/src/octave-qt-event-listener.cc	Sat Aug 18 18:10:09 2012 -0400
@@ -0,0 +1,46 @@
+/* OctaveGUI - A graphical user interface for Octave
+ * Copyright (C) 2012 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 "octave-qt-event-listener.h"
+#include <QApplication>
+
+octave_qt_event_listener::octave_qt_event_listener (QObject *parent)
+  : QObject (parent), octave_event_listener ()
+{
+}
+
+void
+octave_qt_event_listener::current_directory_has_changed (std::string directory)
+{
+  emit current_directory_has_changed_signal
+      (QString::fromStdString (directory));
+}
+
+void
+octave_qt_event_listener::about_to_exit ()
+{
+  qApp->quit ();
+}
+
+void
+octave_qt_event_listener::entered_debug_mode ()
+{ emit entered_debug_mode_signal (); }
+
+void
+octave_qt_event_listener::quit_debug_mode ()
+{ emit quit_debug_mode_signal (); }
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/libgui/src/octave-qt-event-listener.h	Sat Aug 18 18:10:09 2012 -0400
@@ -0,0 +1,44 @@
+/* OctaveGUI - A graphical user interface for Octave
+ * Copyright (C) 2012 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/>.
+ */
+
+#ifndef OCTAVEQTEVENTLISTENER_H
+#define OCTAVEQTEVENTLISTENER_H
+
+#include <QObject>
+#include <QString>
+#include "octave-event-listener.h"
+
+class octave_qt_event_listener
+    : public QObject, public octave_event_listener
+{
+    Q_OBJECT
+  public:
+    octave_qt_event_listener (QObject *parent = 0);
+
+    void current_directory_has_changed (std::string directory);
+    void about_to_exit ();
+
+    void entered_debug_mode ();
+    void quit_debug_mode ();
+
+  signals:
+    void current_directory_has_changed_signal (QString directory);
+    void entered_debug_mode_signal ();
+    void quit_debug_mode_signal ();
+};
+
+#endif // OCTAVEQTEVENTLISTENER_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/libgui/src/qtinfo/parser.cc	Sat Aug 18 18:10:09 2012 -0400
@@ -0,0 +1,578 @@
+/* Copyright (C) 2009 P.L. Lucas
+ * Copyright (C) 2012 Jacob Dawid <jacob.dawid@gmail.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 2 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, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+#include "parser.h"
+#include <QFileInfo>
+#include <QDir>
+#include <QFile>
+#include <QUrl>
+#include <QRegExp>
+#include <QProcess>
+#include <QBuffer>
+
+parser::parser(QObject *parent)
+  : QObject(parent)
+{
+  _compressors_map.insert ("bz2",  "bzip2 -dc \"%1\"");
+  _compressors_map.insert ("gz",   "gzip -dc \"%1\"");
+  _compressors_map.insert ("lzma", "lzma -dc \"%1\"");
+  _compressors_map.insert ("xz",   "xz -dc \"%1\"");
+  _compressors_map.insert ("Z",    "gunzip -c \"%1\"");
+}
+
+void
+parser::set_info_path (QString infoPath)
+{
+  this->_info_path = infoPath;
+
+  _info_files.clear ();
+
+  QFileInfo info (infoPath);
+
+  QString path = info.absolutePath ();
+  QString fileName = info.fileName ();
+
+  QDir infoDir (path);
+  QStringList filter;
+  filter.append (fileName + "*");
+
+  _info_files = infoDir.entryInfoList (filter, QDir::Files);
+  parse_info_map ();
+}
+
+QString
+parser::get_info_path ()
+{
+  return _info_path;
+}
+
+QIODevice *
+parser::open_file (QFileInfo & file_info)
+{
+  QIODevice *iodevice=NULL;
+  if ( _compressors_map.contains(file_info.suffix ()))
+    {
+      QProcess gzip;
+      gzip.start (_compressors_map.value (file_info.suffix ()).arg (file_info.absoluteFilePath ()));
+
+      if (!gzip.waitForFinished ())
+        return NULL;
+
+      QByteArray result = gzip.readAll ();
+
+      QBuffer *io = new QBuffer (this);
+      io->setData (result);
+
+      if (!io->open (QIODevice::ReadOnly | QIODevice::Text))
+        return NULL;
+
+      iodevice = io;
+    }
+  else
+    {
+      QFile *io = new QFile (file_info.absoluteFilePath ());
+      if (!io->open (QIODevice::ReadOnly | QIODevice::Text))
+        return NULL;
+      iodevice = io;
+    }
+
+  return iodevice;
+}
+
+int
+parser::is_ref (QString node)
+{
+  if (_ref_map.contains (node))
+    {
+      node_position ref = _ref_map [node];
+
+      return ref.pos-_node_map [ref._node_name].pos;
+    }
+  return -1;
+}
+
+QString
+parser::search_node (QString node)
+{
+  QFileInfo file_info;
+  QString ref;
+
+  if (_ref_map.contains (node))
+    {
+      ref = node;
+      node = _ref_map [ref]._node_name;
+    }
+
+  if (_node_map.contains (node))
+    {
+      int pos = _node_map [node].pos;
+      int realPos;
+
+      real_position (pos, file_info, realPos);
+
+      QIODevice *io = open_file (file_info);
+      if (io == NULL)
+        {
+          return QString ();
+        }
+
+      seek (io, realPos);
+
+      QString text = get_next_node (io);
+      if (!text.isEmpty())
+        {
+          return text;
+        }
+
+      io->close ();
+      delete io;
+    }
+
+  return QString ();
+}
+
+QString
+parser::search_node (QString node, QIODevice *io)
+{
+  while (!io->atEnd ())
+    {
+      QString text = get_next_node (io);
+      if(node == get_node_name (text))
+        {
+          return text;
+        }
+    }
+
+  return QString ();
+}
+
+QString
+parser::get_next_node (QIODevice *io)
+{
+  QString text;
+  while (!io->atEnd ())
+    {
+      QByteArray line = io->readLine ();
+      if (line.at(0) == 31)
+        {
+          break;
+        }
+      else
+        {
+          text.append (line);
+        }
+    }
+  return text;
+}
+
+static QString
+get_first_line (QString text)
+{
+  int n = text.indexOf ("\n");
+
+  if (n < 0)
+    {
+      return QString ();
+    }
+
+  QString first_line = text.left (n);
+  return first_line;
+}
+
+static QString
+parser_node (QString text, QString node_name)
+{
+  QString firstLine = get_first_line (text);
+  QStringList nodes = firstLine.split (",");
+  for (int i = 0;i < nodes.size (); i++)
+    {
+      QString node = nodes.at (i).trimmed ();
+
+      if (node.startsWith (node_name))
+        {
+          return node.remove (0, node_name.size ()).trimmed ();
+        }
+    }
+  return QString ();
+}
+
+QString
+parser::get_node_name (QString text)
+{
+  return parser_node (text, "Node:");
+}
+
+QString
+parser::get_node_up (QString text)
+{
+  return parser_node (text, "Up:");
+}
+
+QString
+parser::get_node_next (QString text)
+{
+  return parser_node (text, "Next:");
+}
+
+QString
+parser::get_node_prev (QString text)
+{
+  return parser_node (text, "Prev:");
+}
+
+static void
+replace_links (QString &text)
+{
+  QRegExp re ("(\\*[N|n]ote|\n\\*)([ |\n]+)([^:]+):([^:\\.,]*)([:,\\.])");
+  int i = 0, f;
+
+  while ( (i = re.indexIn (text,i)) != -1)
+    {
+      QString type     = re.cap (1);
+      QString note     = re.cap (3);
+      QString url_link = re.cap (4);
+      QString link     = re.cap (4);
+
+      if (url_link.isEmpty ())
+        {
+          url_link = note;
+        }
+
+      url_link = url_link.trimmed ();
+      url_link.replace ("\n"," ");
+      url_link.replace (QRegExp ("  +")," ");
+      url_link.replace ("<b>","");
+      url_link.replace ("</b>","");
+      url_link = QUrl::toPercentEncoding (url_link, "", "'");
+
+      QString href;
+      if (type=="\n*")
+        {
+          href="\n<img src=':/actions/icons/bookmark.png'/>";
+        }
+      else
+        {
+          href="<img src=':/actions/icons/bookmark.png'/>";
+        }
+      href += re.cap (2) + "<a href='" + url_link + "'>" + note + ":" + link + re.cap (5) + "</a>";
+      f = re.matchedLength ();
+      text.replace (i,f,href);
+      i += href.size ();
+    }
+}
+
+static void
+replace_colons (QString &text)
+{
+  QRegExp re ("`([^']+)'");
+  int i = 0, f;
+  while ( (i = re.indexIn (text, i)) != -1)
+    {
+      QString t = re.cap (1);
+      QString bold = "<b>`" + t + "</b>'";
+
+      f = re.matchedLength ();
+      text.replace (i,f,bold);
+      i += bold.size ();
+    }
+}
+
+static void
+info_to_html (QString &text)
+{
+  text.replace ("&", "&amp;");
+  text.replace ("<", "&lt;");
+  text.replace (">", "&gt;");
+
+  text.replace ("\n* Menu:", "\n<b>Menu:</b>");
+  text.replace ("*See also:*", "<b>See also:</b>");
+  replace_colons (text);
+  replace_links (text);
+}
+
+QString
+parser::node_text_to_html (QString text, int anchorPos, QString anchor)
+{
+  QString nodeName = get_node_name (text);
+  QString nodeUp   = get_node_up (text);
+  QString nodeNext = get_node_next (text);
+  QString nodePrev = get_node_prev (text);
+
+  if (anchorPos > -1)
+    {
+      QString text1 = text.left (anchorPos);
+      QString text2 = text.mid (anchorPos);
+
+      int n = text1.indexOf ("\n");
+      text1.remove (0, n);
+
+      info_to_html (text1);
+      info_to_html (text2);
+
+      text = text1 + "<a name='" + anchor + "' /><img src=':/actions/icons/stop.png'>" + text2;
+    }
+  else
+    {
+      int n = text.indexOf ("\n");
+      text.remove (0, n);
+      info_to_html (text);
+    }
+
+  QString navigationLinks = QString (
+        "<img src=':/actions/icons/arrow_right.png'/> <b>Section:</b> %1<br>"
+        "<b>Previous Section:</b> <a href='%2'>%3</a><br>"
+        "<b>Next Section:</b> <a href='%4'>%5</a><br>"
+        "<b>Up:</b> <a href='%6'>%7</a><br>\n"
+        )
+      .arg (nodeName)
+      .arg (QString (QUrl::toPercentEncoding (nodePrev, "", "'")))
+      .arg (nodePrev)
+      .arg (QString (QUrl::toPercentEncoding (nodeNext, "", "'")))
+      .arg (nodeNext)
+      .arg (QString (QUrl::toPercentEncoding (nodeUp, "", "'")))
+      .arg (nodeUp);
+
+
+  text.prepend ("<hr>\n<pre>");
+  text.append ("</pre>\n<hr><hr>\n");
+  text.prepend (navigationLinks);
+  text.append (navigationLinks);
+  text.prepend ("<html><body>\n");
+  text.append ("</body></html>\n");
+  return text;
+}
+
+void
+parser::parse_info_map ()
+{
+  QRegExp re ("(Node|Ref): ([^\\0177]+)\\0177(\\d+)\n");
+  QRegExp re_files ("([^:]+): (\\d+)\n");
+  int foundCount = 0;
+
+  for(int i = 0; i < _info_files.size (); i++)
+    {
+      QFileInfo fileInfo = _info_files.at (i);
+
+      QIODevice *io = open_file (fileInfo);
+      if (io == NULL)
+        {
+          continue;
+        }
+
+      QString nodeText;
+      while (! (nodeText=get_next_node (io)).isEmpty () && foundCount < 2)
+        {
+          QString first_line = get_first_line (nodeText);
+          if (first_line.startsWith ("Tag") )
+            {
+              foundCount++;
+              int pos = 0;
+              QString last_node;
+
+              while ((pos = re.indexIn (nodeText, pos)) != -1) {
+                  QString type = re.cap (1);
+                  QString node = re.cap (2);
+                  int index = re.cap (3).toInt ();
+
+                  if (type == "Node")
+                    {
+                      node_map_item item;
+                      item.pos = index;
+                      _node_map [node] = item;
+                      last_node = node;
+                    }
+                  else if (type == "Ref")
+                    {
+                      node_position item;
+                      item._node_name = last_node;
+                      item.pos = index;
+                      _ref_map [node] = item;
+                    }
+                  pos += re.matchedLength ();
+                }
+              break;
+            }
+          else if (first_line.startsWith ("Indirect:"))
+            {
+              foundCount++;
+              int pos = 0;
+
+              while ( (pos = re_files.indexIn (nodeText, pos)) != -1) {
+                  QString fileCap = re_files.cap (1).trimmed ();
+                  int index = re_files.cap (2).toInt ();
+
+                  info_file_item item;
+                  for (int j = 0;j < _info_files.size (); j++)
+                    {
+                      QFileInfo info = _info_files.at (j);
+                      if (info.fileName ().startsWith (fileCap))
+                        {
+                          item.file_info = info;
+                          break;
+                        }
+                    }
+                  item.real_size = index;
+                  _info_file_real_size_list.append (item);
+                  pos += re_files.matchedLength ();
+                }
+
+            }
+        }
+      io->close ();
+      delete io;
+    }
+}
+
+void
+parser::real_position (int pos, QFileInfo & file_info, int & real_pos)
+{
+  int header = -1, sum = 0;
+  for (int i = 0; i < _info_file_real_size_list.size (); i++)
+    {
+      info_file_item item = _info_file_real_size_list.at (i);
+      if (header == -1)
+        {
+          file_info = item.file_info;
+          header = item.real_size;
+        }
+
+      if (pos < item.real_size)
+        {
+          break;
+        }
+
+      file_info = item.file_info;
+      sum = item.real_size;
+    }
+  real_pos = pos - sum + header + 2;
+}
+
+void
+parser::seek (QIODevice *io, int pos)
+{
+  char ch;
+  while (!io->atEnd () && pos > 0)
+    {
+      io->getChar (&ch);
+      pos--;
+    }
+}
+
+static void
+replace (QString &text, QRegExp re, QString after)
+{
+  int pos = 0;
+
+  while ( (pos = re.indexIn (text, pos)) != -1)
+    {
+      QString cap = text.mid (pos,re.matchedLength ());
+      QString a (after);
+      a = a.arg (cap);
+      text.remove (pos, re.matchedLength ());
+      text.insert (pos, a);
+      pos += a.size ();
+    }
+}
+
+QString
+parser::global_search (QString text, int max_founds)
+{
+  QString results;
+  QStringList words = text.split (" ",QString::SkipEmptyParts);
+
+  QString re_program ("(" + words.at (0));
+  for (int i = 1; i < words.size (); i++)
+    {
+      re_program += "|" + words.at (i);
+    }
+  re_program += ")";
+
+  QRegExp re (re_program, Qt::CaseInsensitive);
+
+  results.append ("<html><body>\n<h1>Search results</h1>\n<b>Results for:</b> ");
+  results.append (text);
+  results.append ("<br>\n");
+
+  for (int i = 0; i < _info_files.size (); i++)
+    {
+      QFileInfo file_info = _info_files.at (i);
+      QIODevice *io = open_file (file_info);
+      if (io == NULL)
+        {
+          continue;
+        }
+
+      QString node_text;
+      while ( !(node_text = get_next_node (io)).isEmpty ())
+        {
+          QString firstLine = get_first_line (node_text);
+          QString node = get_node_name (node_text);
+          if (node.isEmpty ())
+            {
+              continue;
+            }
+
+          int n = node_text.indexOf ("\n");
+          node_text.remove (0, n);
+
+          int pos = 0;
+          int founds = 0;
+
+          for (; founds < words.size () && node_text.indexOf (words.at (founds)) >= 0; founds++)
+            { }
+
+          if (founds<words.size ())
+            {
+              continue;
+            }
+          founds = 0;
+
+          while ( (pos = re.indexIn (node_text, pos)) != -1 && founds < max_founds)
+            {
+              int line_start, line_end;
+              line_start = node_text.lastIndexOf ("\n", pos);
+              line_end = node_text.indexOf ("\n", pos);
+              QString line = node_text.mid (line_start, line_end - line_start).trimmed ();
+
+              if (founds == 0)
+                {
+                  results.append(
+                        "<br>\n<img src=':/actions/icons/bookmark.png'> <a href='"
+                        + QString(QUrl::toPercentEncoding(node,"","'")) +
+                        "'>");
+                  results.append (node);
+                  results.append ("</a><br>\n");
+                }
+
+              replace (line, re, "<i>%1</i>");
+              results.append (line);
+              results.append ("<br>\n");
+
+              founds++;
+
+              pos += re.matchedLength ();
+            }
+        }
+      io->close ();
+      delete io;
+    }
+
+  results.append ("</body></html>");
+  return results;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/libgui/src/qtinfo/parser.h	Sat Aug 18 18:10:09 2012 -0400
@@ -0,0 +1,111 @@
+/* Copyright (C) 2009 P.L. Lucas
+ * Copyright (C) 2012 Jacob Dawid <jacob.dawid@gmail.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 2 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, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+#include <QStringList>
+#include <QIODevice>
+#include <QFileInfoList>
+#include <QHash>
+
+/**
+ * \class parser
+ * This class gets nodes and searchs inside of `info files'.
+ * <p>Each info file has nodes. Every node has the documentation.
+ * Info files contains a map with position of each node.</p>
+ * <p>What is position?
+ * There is a simple answer:
+ * If you make a queue with info files, position will be the number of bytes
+ * from begining to node position.</p>
+ * <p>
+ * But is not so easy. There is headers, and qtinfo must not take these headers into account.
+ * </p>
+ * <p>
+ * This class also translates info files to html.
+ * </p>
+ */
+class parser
+    : public QObject
+{
+  Q_OBJECT
+
+public:
+  parser (QObject *parent = 0);
+  void set_info_path (QString _info_path);
+  QString get_info_path ();
+  QString search_node (QString node);
+  QString global_search (QString text, int maxFounds);
+
+  /** Checks if this node is reference. If node is reference, it will be returned its position
+    * in text, else  it will be returned -1.
+    */
+  int is_ref (QString node);
+
+  /**Translates text of node to Html. If anchorPos is not -1, then anchor is inserted in that
+    * position.
+    */
+  QString node_text_to_html (QString text, int anchorPos=-1, QString anchor=QString());
+
+private:
+  struct node_position
+  {
+    QString _node_name;
+    int pos;
+  };
+
+  struct node_map_item
+  {
+    int pos;
+  };
+
+  struct info_file_item
+  {
+    QFileInfo file_info;
+    int real_size;
+  };
+
+  QString search_node (QString node, QIODevice * io);
+  QString get_next_node (QIODevice * io);
+  QString get_node_name (QString text);
+  QString get_node_up (QString text);
+  QString get_node_next (QString text);
+  QString get_node_prev (QString text);
+
+  /** Parses info files and gets map of node positions.*/
+  void parse_info_map();
+
+  /** Open info files and uncompress them. */
+  QIODevice *open_file(QFileInfo & fileInfo);
+
+  /** Calculates real position of nodes.
+    * \param pos position from info file.
+    * \param fileInfo returns file what contains that position.
+    * \param realPos returns real position inside of fileInfo.
+    */
+  void real_position (int pos, QFileInfo & file_info, int & real_pos);
+
+  /** Seeks to position pos. */
+  void seek (QIODevice *io, int pos);
+
+
+  QString                       _info_path;
+  QFileInfoList                 _info_files;
+  QHash<QString, node_map_item> _node_map;
+  QHash<QString, node_position> _ref_map;
+  QList<info_file_item>         _info_file_real_size_list;
+  QHash<QString, QString>       _compressors_map;
+};
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/libgui/src/qtinfo/webinfo.cc	Sat Aug 18 18:10:09 2012 -0400
@@ -0,0 +1,211 @@
+/* Copyright (C) 2009 P.L. Lucas
+ * Copyright (C) 2012 Jacob Dawid <jacob.dawid@gmail.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 2 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, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+#include "webinfo.h"
+#include <QVBoxLayout>
+#include <QHBoxLayout>
+
+
+webinfo::webinfo (QWidget *parent)
+  :QWidget (parent)
+{
+  _font_web = font ();
+
+  QVBoxLayout *layout = new QVBoxLayout ();
+  layout->setMargin (0);
+  setLayout (layout);
+
+  QHBoxLayout *hboxLayout = new QHBoxLayout ();
+  hboxLayout->setMargin (2);
+  layout->addLayout (hboxLayout);
+
+  _close_tab_button = new QPushButton (this);
+  _close_tab_button->setSizePolicy (QSizePolicy::Fixed,QSizePolicy::Preferred);
+  _close_tab_button->setIcon (QIcon (":/actions/icons/stop.png"));
+  hboxLayout->addWidget (_close_tab_button);
+
+  _tab_bar = new QTabBar (this);
+  _tab_bar->setSizePolicy (QSizePolicy::Preferred,QSizePolicy::Preferred);
+  _tab_bar->setExpanding (false);
+  hboxLayout->addWidget (_tab_bar);
+
+  _zoom_in_button = new QToolButton (this);
+  _zoom_in_button->setSizePolicy (QSizePolicy::Fixed,QSizePolicy::Preferred);
+  _zoom_in_button->setIcon (QIcon (":/actions/icons/zoom-in.png"));
+  hboxLayout->addWidget (_zoom_in_button);
+
+  _zoom_out_button = new QToolButton (this);
+  _zoom_out_button->setSizePolicy (QSizePolicy::Fixed,QSizePolicy::Preferred);
+  _zoom_out_button->setIcon (QIcon (":/actions/icons/zoom-out.png"));
+  hboxLayout->addWidget (_zoom_out_button);
+
+  _stacked_widget = new QStackedWidget (this);
+  layout->addWidget (_stacked_widget);
+
+  hboxLayout = new QHBoxLayout ();
+  layout->addLayout (hboxLayout);
+
+  _search_line_edit = new QLineEdit(this);
+  _search_line_edit->setPlaceholderText (tr ("Type here and press \'Return\' to search"));
+  hboxLayout->addWidget (_search_line_edit);
+
+  _search_check_box = new QCheckBox (tr ("Global search"));
+  hboxLayout->addWidget (_search_check_box);
+
+  connect (_close_tab_button, SIGNAL (clicked ()), this, SLOT (close_tab ()));
+  connect (_tab_bar, SIGNAL (currentChanged (int)), this, SLOT (current_tab_changed (int)));
+  connect (_zoom_in_button, SIGNAL (clicked ()), this, SLOT (zoom_in ()));
+  connect (_zoom_out_button, SIGNAL (clicked ()), this, SLOT (zoom_out ()));
+  connect (_search_line_edit, SIGNAL (returnPressed ()), this, SLOT (search ()));
+
+  resize (500, 300);
+
+  set_info_path ("../../doc/interpreter/octave.info");
+}
+
+void
+webinfo::set_info_path (QString info_path)
+{
+  _parser.set_info_path (info_path);
+  load_node ("Top");
+}
+
+void
+webinfo::load_node (QString node_name)
+{
+  //Check if node has been already opened.
+  for (int i = 0;i < _tab_bar->count (); i++)
+    {
+      if (node_name == _tab_bar->tabText (i))
+        {
+          _tab_bar->setCurrentIndex (i);
+          return;
+        }
+    }
+
+  QString text = _parser.search_node (node_name);
+  int i = _parser.is_ref (node_name);
+  _text_browser = addNewTab (node_name);
+  _text_browser->setHtml (_parser.node_text_to_html (text, i - 1, "anchor"));
+
+  if (i != -1)
+    {
+      _text_browser->scrollToAnchor ("anchor");
+    }
+}
+
+void
+webinfo::link_clicked (const QUrl & link)
+{
+  QString node = link.toString ();
+  load_node (node);
+}
+
+void
+webinfo::current_tab_changed (int index)
+{
+  QVariant data = _tab_bar->tabData (index);
+  _text_browser = (QTextBrowser*) (data.value<void*> ());
+
+  _stacked_widget->setCurrentIndex (_stacked_widget->indexOf (_text_browser));
+
+  if (_text_browser->font () != _font_web)
+    {
+      _text_browser->setFont (_font_web);
+    }
+}
+
+QTextBrowser *
+webinfo::addNewTab(QString name)
+{
+  _text_browser = new QTextBrowser (this);
+  _text_browser->setOpenLinks (false);
+  _text_browser->show ();
+
+  connect (_text_browser, SIGNAL (anchorClicked (const QUrl &)), this, SLOT (link_clicked (const QUrl &)) );
+  disconnect(_tab_bar, SIGNAL (currentChanged(int)), this, SLOT (current_tab_changed (int)));
+
+  int ns = _stacked_widget->addWidget (_text_browser);
+  _stacked_widget->setCurrentIndex (ns);
+
+  int nt = _tab_bar->addTab (name);
+  _tab_bar->setCurrentIndex (nt);
+  QVariant data;
+  data.setValue ( (void*)_text_browser);
+  _tab_bar->setTabData (nt, data);
+
+  connect (_tab_bar, SIGNAL (currentChanged (int)), this, SLOT (current_tab_changed (int)));
+
+  if (_text_browser->font () != _font_web)
+    {
+      _text_browser->setFont (_font_web);
+    }
+  return _text_browser;
+}
+
+void
+webinfo::close_tab ()
+{
+  int index = _tab_bar->currentIndex ();
+  if (_tab_bar->tabText (index) != "Top")
+    closeTab (index);
+}
+
+void
+webinfo::closeTab (int index)
+{
+  QVariant data = _tab_bar->tabData (index);
+  QWidget *w = (QWidget*) (data.value<void*> ());
+  _stacked_widget->removeWidget (w);
+  delete w;
+
+  _tab_bar->removeTab (index);
+}
+
+void
+webinfo::search ()
+{
+  if (_search_check_box->isChecked ())
+    {
+      // Global search
+      QString results = _parser.global_search (_search_line_edit->text (), 5);
+      _text_browser=addNewTab ("Results for: " + _search_line_edit->text ());
+      _text_browser->setHtml (results);
+    }
+  else
+    {
+      // Local search
+      _text_browser->find (_search_line_edit->text ());
+    }
+}
+
+void
+webinfo::zoom_in ()
+{
+  _font_web.setPointSize (_font_web.pointSize() + 1);
+  _text_browser->setFont (_font_web);
+}
+
+void
+webinfo::zoom_out ()
+{
+  _font_web.setPointSize (_font_web.pointSize() - 1);
+  _text_browser->setFont (_font_web);
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/libgui/src/qtinfo/webinfo.h	Sat Aug 18 18:10:09 2012 -0400
@@ -0,0 +1,60 @@
+/* Copyright (C) 2009 P.L. Lucas
+ * Copyright (C) 2012 Jacob Dawid <jacob.dawid@gmail.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 2 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, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+#include <QTextBrowser>
+#include "parser.h"
+#include <QStackedWidget>
+#include <QTabBar>
+#include <QPushButton>
+#include <QLineEdit>
+#include <QCheckBox>
+#include <QToolButton>
+
+class webinfo : public QWidget
+{
+  Q_OBJECT
+public:
+  webinfo (QWidget *parent = 0);
+  void set_info_path (QString info_path);
+  void load_node (QString node_name);
+
+public slots:
+  void link_clicked (const QUrl &link);
+  void current_tab_changed (int index);
+  void close_tab ();
+  void search ();
+  void zoom_in ();
+  void zoom_out ();
+
+private:
+  QTextBrowser        *_text_browser;
+  QTabBar             *_tab_bar;
+  QStackedWidget      *_stacked_widget;
+  QPushButton         *_close_tab_button;
+  QLineEdit           *_search_line_edit;
+  QCheckBox           *_search_check_box;
+  QToolButton         *_zoom_in_button;
+  QToolButton         *_zoom_out_button;
+
+  parser              _parser;
+  QFont               _font_web;
+
+  QTextBrowser *addNewTab (QString name);
+  void closeTab(int index);
+};
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/libgui/src/resource-manager.cc	Sat Aug 18 18:10:09 2012 -0400
@@ -0,0 +1,1721 @@
+/* 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 <string>
+
+#include <QFile>
+#include <QDir>
+#include <QNetworkProxy>
+
+#include "error.h"
+#include "file-ops.h"
+#include "oct-env.h"
+#include "singleton-cleanup.h"
+
+#include "defaults.h"
+
+#include "resource-manager.h"
+
+resource_manager *resource_manager::instance = 0;
+
+resource_manager::resource_manager (void)
+  : settings (0), home_path (), first_run (false)
+{
+  do_reload_settings ();
+}
+
+resource_manager::~resource_manager (void)
+{
+  delete settings;
+}
+
+QString
+resource_manager::find_translator_file (QString language)
+{
+  // TODO: Quick hack to be able to test language files.
+  return QString ("../languages/%1.qm").arg (language);
+}
+
+bool
+resource_manager::instance_ok (void)
+{
+  bool retval = true;
+
+  if (! instance)
+    {
+      instance = new resource_manager ();
+
+      if (instance)
+        singleton_cleanup_list::add (cleanup_instance);
+    }
+
+  if (! instance)
+    {
+      ::error ("unable to create resource_manager object!");
+
+      retval = false;
+    }
+
+  return retval;
+}
+
+QSettings *
+resource_manager::do_get_settings (void)
+{
+  return settings;
+}
+
+QString
+resource_manager::do_get_home_path (void)
+{
+  return home_path;
+}
+
+static std::string
+default_qt_settings_file (void)
+{
+  std::string dsf = octave_env::getenv ("OCTAVE_DEFAULT_QT_SETTINGS");
+
+  if (dsf.empty ())
+    dsf = Voct_etc_dir + file_ops::dir_sep_str () + "default-qt-settings";
+
+  return dsf;
+}
+
+void
+resource_manager::do_reload_settings (void)
+{
+  QDesktopServices desktopServices;
+  home_path = desktopServices.storageLocation (QDesktopServices::HomeLocation);
+  QString settings_path = home_path + "/.config/octave/";
+  QString settings_file = settings_path + "qt-settings";
+
+  if (!QFile::exists (settings_file))
+   {
+     QDir("/").mkpath (settings_path);
+     QFile::copy (QString::fromStdString (default_qt_settings_file ()),
+                  settings_file);
+     first_run = true;
+   }
+  else
+     first_run = false;
+
+  do_set_settings (settings_file);
+}
+
+void
+resource_manager::do_set_settings (QString file)
+{
+  delete settings;
+  settings = new QSettings (file, QSettings::IniFormat);
+}
+
+bool
+resource_manager::do_is_first_run (void)
+{
+  return first_run;
+}
+
+void
+resource_manager::do_update_network_settings (void)
+{
+  QNetworkProxy::ProxyType proxyType = QNetworkProxy::NoProxy;
+
+  if (settings->value ("useProxyServer").toBool ())
+    {
+      QString proxyTypeString = settings->value ("proxyType").toString ();
+
+      if (proxyTypeString == "Socks5Proxy")
+        proxyType = QNetworkProxy::Socks5Proxy;
+      else if (proxyTypeString == "HttpProxy")
+        proxyType = QNetworkProxy::HttpProxy;
+    }
+
+  QNetworkProxy proxy;
+
+  proxy.setType (proxyType);
+  proxy.setHostName (settings->value ("proxyHostName").toString ());
+  proxy.setPort (settings->value ("proxyPort").toInt ());
+  proxy.setUser (settings->value ("proxyUserName").toString ());
+  proxy.setPassword (settings->value ("proxyPassword").toString ());
+
+  QNetworkProxy::setApplicationProxy (proxy);
+}
+
+const char*
+resource_manager::octave_keywords (void)
+{
+  return
+      ".nargin. "
+      "EDITOR "
+      "EXEC_PATH "
+      "F_DUPFD "
+      "F_GETFD "
+      "F_GETFL "
+      "F_SETFD "
+      "F_SETFL "
+      "I "
+      "IMAGE_PATH "
+      "Inf "
+      "J "
+      "NA "
+      "NaN "
+      "OCTAVE_HOME "
+      "OCTAVE_VERSION "
+      "O_APPEND "
+      "O_ASYNC "
+      "O_CREAT "
+      "O_EXCL "
+      "O_NONBLOCK "
+      "O_RDONLY "
+      "O_RDWR "
+      "O_SYNC "
+      "O_TRUNC "
+      "O_WRONLY "
+      "PAGER "
+      "PAGER_FLAGS "
+      "PS1 "
+      "PS2 "
+      "PS4 "
+      "P_tmpdir "
+      "SEEK_CUR "
+      "SEEK_END "
+      "SEEK_SET "
+      "SIG "
+      "S_ISBLK "
+      "S_ISCHR "
+      "S_ISDIR "
+      "S_ISFIFO "
+      "S_ISLNK "
+      "S_ISREG "
+      "S_ISSOCK "
+      "WCONTINUE "
+      "WCOREDUMP "
+      "WEXITSTATUS "
+      "WIFCONTINUED "
+      "WIFEXITED "
+      "WIFSIGNALED "
+      "WIFSTOPPED "
+      "WNOHANG "
+      "WSTOPSIG "
+      "WTERMSIG "
+      "WUNTRACED "
+      "__accumarray_max__ "
+      "__accumarray_min__ "
+      "__accumarray_sum__ "
+      "__accumdim_sum__ "
+      "__all_opts__ "
+      "__builtins__ "
+      "__calc_dimensions__ "
+      "__contourc__ "
+      "__current_scope__ "
+      "__delaunayn__ "
+      "__dispatch__ "
+      "__display_tokens__ "
+      "__dsearchn__ "
+      "__dump_symtab_info__ "
+      "__end__ "
+      "__error_text__ "
+      "__finish__ "
+      "__fltk_ginput__ "
+      "__fltk_print__ "
+      "__fltk_uigetfile__ "
+      "__ftp__ "
+      "__ftp_ascii__ "
+      "__ftp_binary__ "
+      "__ftp_close__ "
+      "__ftp_cwd__ "
+      "__ftp_delete__ "
+      "__ftp_dir__ "
+      "__ftp_mget__ "
+      "__ftp_mkdir__ "
+      "__ftp_mode__ "
+      "__ftp_mput__ "
+      "__ftp_pwd__ "
+      "__ftp_rename__ "
+      "__ftp_rmdir__ "
+      "__get__ "
+      "__glpk__ "
+      "__gnuplot_drawnow__ "
+      "__gnuplot_get_var__ "
+      "__gnuplot_ginput__ "
+      "__gnuplot_has_feature__ "
+      "__gnuplot_open_stream__ "
+      "__gnuplot_print__ "
+      "__gnuplot_version__ "
+      "__go_axes__ "
+      "__go_axes_init__ "
+      "__go_close_all__ "
+      "__go_delete__ "
+      "__go_draw_axes__ "
+      "__go_draw_figure__ "
+      "__go_execute_callback__ "
+      "__go_figure__ "
+      "__go_figure_handles__ "
+      "__go_handles__ "
+      "__go_hggroup__ "
+      "__go_image__ "
+      "__go_line__ "
+      "__go_patch__ "
+      "__go_surface__ "
+      "__go_text__ "
+      "__go_uimenu__ "
+      "__gud_mode__ "
+      "__image_pixel_size__ "
+      "__init_fltk__ "
+      "__isa_parent__ "
+      "__keywords__ "
+      "__lexer_debug_flag__ "
+      "__lin_interpn__ "
+      "__list_functions__ "
+      "__magick_finfo__ "
+      "__magick_format_list__ "
+      "__magick_read__ "
+      "__magick_write__ "
+      "__makeinfo__ "
+      "__marching_cube__ "
+      "__next_line_color__ "
+      "__next_line_style__ "
+      "__operators__ "
+      "__parent_classes__ "
+      "__parser_debug_flag__ "
+      "__pathorig__ "
+      "__pchip_deriv__ "
+      "__plt_get_axis_arg__ "
+      "__print_parse_opts__ "
+      "__qp__ "
+      "__request_drawnow__ "
+      "__sort_rows_idx__ "
+      "__strip_html_tags__ "
+      "__token_count__ "
+      "__varval__ "
+      "__version_info__ "
+      "__voronoi__ "
+      "__which__ "
+      "abs "
+      "accumarray "
+      "accumdim "
+      "acos "
+      "acosd "
+      "acosh "
+      "acot "
+      "acotd "
+      "acoth "
+      "acsc "
+      "acscd "
+      "acsch "
+      "add_input_event_hook "
+      "addlistener "
+      "addpath "
+      "addproperty "
+      "addtodate "
+      "airy "
+      "all "
+      "allchild "
+      "allow_noninteger_range_as_index "
+      "amd "
+      "ancestor "
+      "and "
+      "angle "
+      "anova "
+      "ans "
+      "any "
+      "arch_fit "
+      "arch_rnd "
+      "arch_test "
+      "area "
+      "arg "
+      "argnames "
+      "argv "
+      "arma_rnd "
+      "arrayfun "
+      "asctime "
+      "asec "
+      "asecd "
+      "asech "
+      "asin "
+      "asind "
+      "asinh "
+      "assert "
+      "assignin "
+      "atan "
+      "atan2 "
+      "atand "
+      "atanh "
+      "atexit "
+      "autocor "
+      "autocov "
+      "autoload "
+      "autoreg_matrix "
+      "autumn "
+      "available_graphics_toolkits "
+      "axes "
+      "axis "
+      "balance "
+      "bar "
+      "barh "
+      "bartlett "
+      "bartlett_test "
+      "base2dec "
+      "beep "
+      "beep_on_error "
+      "bessel "
+      "besselh "
+      "besseli "
+      "besselj "
+      "besselk "
+      "bessely "
+      "beta "
+      "betacdf "
+      "betai "
+      "betainc "
+      "betainv "
+      "betaln "
+      "betapdf "
+      "betarnd "
+      "bicgstab "
+      "bicubic "
+      "bin2dec "
+      "bincoeff "
+      "binocdf "
+      "binoinv "
+      "binopdf "
+      "binornd "
+      "bitand "
+      "bitcmp "
+      "bitget "
+      "bitmax "
+      "bitor "
+      "bitpack "
+      "bitset "
+      "bitshift "
+      "bitunpack "
+      "bitxor "
+      "blackman "
+      "blanks "
+      "blkdiag "
+      "blkmm "
+      "bone "
+      "box "
+      "break "
+      "brighten "
+      "bsxfun "
+      "bug_report "
+      "builtin "
+      "bunzip2 "
+      "bzip2 "
+      "calendar "
+      "canonicalize_file_name "
+      "cart2pol "
+      "cart2sph "
+      "case "
+      "cast "
+      "cat "
+      "catch "
+      "cauchy_cdf "
+      "cauchy_inv "
+      "cauchy_pdf "
+      "cauchy_rnd "
+      "caxis "
+      "cbrt "
+      "ccolamd "
+      "cd "
+      "ceil "
+      "cell "
+      "cell2mat "
+      "cell2struct "
+      "celldisp "
+      "cellfun "
+      "cellidx "
+      "cellindexmat "
+      "cellslices "
+      "cellstr "
+      "center "
+      "cgs "
+      "char "
+      "chdir "
+      "chi2cdf "
+      "chi2inv "
+      "chi2pdf "
+      "chi2rnd "
+      "chisquare_test_homogeneity "
+      "chisquare_test_independence "
+      "chol "
+      "chol2inv "
+      "choldelete "
+      "cholinsert "
+      "cholinv "
+      "cholshift "
+      "cholupdate "
+      "chop "
+      "circshift "
+      "cla "
+      "clabel "
+      "class "
+      "clc "
+      "clear "
+      "clf "
+      "clg "
+      "clock "
+      "cloglog "
+      "close "
+      "closereq "
+      "colamd "
+      "colloc "
+      "colon "
+      "colorbar "
+      "colormap "
+      "colperm "
+      "colstyle "
+      "columns "
+      "comet "
+      "comet3 "
+      "comma "
+      "command_line_path "
+      "common_size "
+      "commutation_matrix "
+      "compan "
+      "compare_versions "
+      "compass "
+      "complement "
+      "completion_append_char "
+      "completion_matches "
+      "complex "
+      "computer "
+      "cond "
+      "condest "
+      "confirm_recursive_rmdir "
+      "conj "
+      "continue "
+      "contour "
+      "contour3 "
+      "contourc "
+      "contourf "
+      "contrast "
+      "conv "
+      "conv2 "
+      "convhull "
+      "convhulln "
+      "convn "
+      "cool "
+      "copper "
+      "copyfile "
+      "cor "
+      "cor_test "
+      "corrcoef "
+      "cos "
+      "cosd "
+      "cosh "
+      "cot "
+      "cotd "
+      "coth "
+      "cov "
+      "cplxpair "
+      "cputime "
+      "cquad "
+      "crash_dumps_octave_core "
+      "create_set "
+      "cross "
+      "csc "
+      "cscd "
+      "csch "
+      "cstrcat "
+      "csvread "
+      "csvwrite "
+      "csymamd "
+      "ctime "
+      "ctranspose "
+      "cummax "
+      "cummin "
+      "cumprod "
+      "cumsum "
+      "cumtrapz "
+      "curl "
+      "cut "
+      "cylinder "
+      "daspect "
+      "daspk "
+      "daspk_options "
+      "dasrt "
+      "dasrt_options "
+      "dassl "
+      "dassl_options "
+      "date "
+      "datenum "
+      "datestr "
+      "datetick "
+      "datevec "
+      "dbclear "
+      "dbcont "
+      "dbdown "
+      "dblquad "
+      "dbnext "
+      "dbquit "
+      "dbstack "
+      "dbstatus "
+      "dbstep "
+      "dbstop "
+      "dbtype "
+      "dbup "
+      "dbwhere "
+      "deal "
+      "deblank "
+      "debug "
+      "debug_on_error "
+      "debug_on_interrupt "
+      "debug_on_warning "
+      "dec2base "
+      "dec2bin "
+      "dec2hex "
+      "deconv "
+      "default_save_options "
+      "del2 "
+      "delaunay "
+      "delaunay3 "
+      "delaunayn "
+      "delete "
+      "dellistener "
+      "demo "
+      "det "
+      "detrend "
+      "diag "
+      "diary "
+      "diff "
+      "diffpara "
+      "diffuse "
+      "dir "
+      "discrete_cdf "
+      "discrete_inv "
+      "discrete_pdf "
+      "discrete_rnd "
+      "disp "
+      "dispatch "
+      "display "
+      "divergence "
+      "dlmread "
+      "dlmwrite "
+      "dmperm "
+      "dmult "
+      "do "
+      "do_braindead_shortcircuit_evaluation "
+      "do_string_escapes "
+      "doc "
+      "doc_cache_file "
+      "dos "
+      "dot "
+      "double "
+      "drawnow "
+      "dsearch "
+      "dsearchn "
+      "dump_prefs "
+      "dup2 "
+      "duplication_matrix "
+      "durbinlevinson "
+      "e "
+      "echo "
+      "echo_executing_commands "
+      "edit "
+      "edit_history "
+      "eig "
+      "eigs "
+      "ellipsoid "
+      "else "
+      "elseif "
+      "empirical_cdf "
+      "empirical_inv "
+      "empirical_pdf "
+      "empirical_rnd "
+      "end "
+      "end_try_catch "
+      "end_unwind_protect "
+      "endfor "
+      "endfunction "
+      "endgrent "
+      "endif "
+      "endpwent "
+      "endswitch "
+      "endwhile "
+      "eomday "
+      "eps "
+      "eq "
+      "erf "
+      "erfc "
+      "erfcx "
+      "erfinv "
+      "errno "
+      "errno_list "
+      "error "
+      "error_text "
+      "errorbar "
+      "etime "
+      "etree "
+      "etreeplot "
+      "eval "
+      "evalin "
+      "example "
+      "exec "
+      "exist "
+      "exit "
+      "exp "
+      "expcdf "
+      "expinv "
+      "expm "
+      "expm1 "
+      "exppdf "
+      "exprnd "
+      "eye "
+      "ezcontour "
+      "ezcontourf "
+      "ezmesh "
+      "ezmeshc "
+      "ezplot "
+      "ezplot3 "
+      "ezpolar "
+      "ezsurf "
+      "ezsurfc "
+      "f_test_regression "
+      "factor "
+      "factorial "
+      "fail "
+      "false "
+      "fcdf "
+      "fclear "
+      "fclose "
+      "fcntl "
+      "fdisp "
+      "feather "
+      "feof "
+      "ferror "
+      "feval "
+      "fflush "
+      "fft "
+      "fft2 "
+      "fftconv "
+      "fftfilt "
+      "fftn "
+      "fftshift "
+      "fftw "
+      "fgetl "
+      "fgets "
+      "fieldnames "
+      "figure "
+      "file_in_loadpath "
+      "file_in_path "
+      "fileattrib "
+      "filemarker "
+      "fileparts "
+      "fileread "
+      "filesep "
+      "fill "
+      "filter "
+      "filter2 "
+      "find "
+      "find_dir_in_path "
+      "findall "
+      "findobj "
+      "findstr "
+      "finite "
+      "finv "
+      "fix "
+      "fixed_point_format "
+      "flag "
+      "flipdim "
+      "fliplr "
+      "flipud "
+      "floor "
+      "fminbnd "
+      "fminunc "
+      "fmod "
+      "fnmatch "
+      "fopen "
+      "for "
+      "fork "
+      "format "
+      "formula "
+      "fpdf "
+      "fplot "
+      "fprintf "
+      "fputs "
+      "fractdiff "
+      "fread "
+      "freport "
+      "freqz "
+      "freqz_plot "
+      "frewind "
+      "frnd "
+      "fscanf "
+      "fseek "
+      "fskipl "
+      "fsolve "
+      "fstat "
+      "ftell "
+      "full "
+      "fullfile "
+      "func2str "
+      "function "
+      "functions "
+      "fwrite "
+      "fzero "
+      "gamcdf "
+      "gaminv "
+      "gamma "
+      "gammai "
+      "gammainc "
+      "gammaln "
+      "gampdf "
+      "gamrnd "
+      "gca "
+      "gcbf "
+      "gcbo "
+      "gcd "
+      "gcf "
+      "ge "
+      "gen_doc_cache "
+      "genpath "
+      "genvarname "
+      "geocdf "
+      "geoinv "
+      "geopdf "
+      "geornd "
+      "get "
+      "get_first_help_sentence "
+      "get_help_text "
+      "get_help_text_from_file "
+      "getappdata "
+      "getegid "
+      "getenv "
+      "geteuid "
+      "getfield "
+      "getgid "
+      "getgrent "
+      "getgrgid "
+      "getgrnam "
+      "gethostname "
+      "getpgrp "
+      "getpid "
+      "getppid "
+      "getpwent "
+      "getpwnam "
+      "getpwuid "
+      "getrusage "
+      "getuid "
+      "ginput "
+      "givens "
+      "glob "
+      "global "
+      "glpk "
+      "glpkmex "
+      "gls "
+      "gmap40 "
+      "gmres "
+      "gmtime "
+      "gnuplot_binary "
+      "gplot "
+      "gradient "
+      "graphics_toolkit "
+      "gray "
+      "gray2ind "
+      "grid "
+      "griddata "
+      "griddata3 "
+      "griddatan "
+      "gt "
+      "gtext "
+      "gunzip "
+      "gzip "
+      "hadamard "
+      "hamming "
+      "hankel "
+      "hanning "
+      "help "
+      "hess "
+      "hex2dec "
+      "hex2num "
+      "hggroup "
+      "hidden "
+      "hilb "
+      "hist "
+      "histc "
+      "history "
+      "history_control "
+      "history_file "
+      "history_size "
+      "history_timestamp_format_string "
+      "hold "
+      "home "
+      "horzcat "
+      "hot "
+      "hotelling_test "
+      "hotelling_test_2 "
+      "housh "
+      "hsv "
+      "hsv2rgb "
+      "hurst "
+      "hygecdf "
+      "hygeinv "
+      "hygepdf "
+      "hygernd "
+      "hypot "
+      "i "
+      "idivide "
+      "if "
+      "ifelse "
+      "ifft "
+      "ifft2 "
+      "ifftn "
+      "ifftshift "
+      "ignore_function_time_stamp "
+      "imag "
+      "image "
+      "imagesc "
+      "imfinfo "
+      "imread "
+      "imshow "
+      "imwrite "
+      "ind2gray "
+      "ind2rgb "
+      "ind2sub "
+      "index "
+      "inf "
+      "inferiorto "
+      "info "
+      "info_file "
+      "info_program "
+      "inline "
+      "inpolygon "
+      "input "
+      "inputname "
+      "int16 "
+      "int2str "
+      "int32 "
+      "int64 "
+      "int8 "
+      "interp1 "
+      "interp1q "
+      "interp2 "
+      "interp3 "
+      "interpft "
+      "interpn "
+      "intersect "
+      "intmax "
+      "intmin "
+      "intwarning "
+      "inv "
+      "inverse "
+      "invhilb "
+      "ipermute "
+      "iqr "
+      "is_absolute_filename "
+      "is_duplicate_entry "
+      "is_global "
+      "is_leap_year "
+      "is_rooted_relative_filename "
+      "is_valid_file_id "
+      "isa "
+      "isalnum "
+      "isalpha "
+      "isappdata "
+      "isargout "
+      "isascii "
+      "isbool "
+      "iscell "
+      "iscellstr "
+      "ischar "
+      "iscntrl "
+      "iscolumn "
+      "iscommand "
+      "iscomplex "
+      "isdebugmode "
+      "isdefinite "
+      "isdeployed "
+      "isdigit "
+      "isdir "
+      "isempty "
+      "isequal "
+      "isequalwithequalnans "
+      "isfield "
+      "isfigure "
+      "isfinite "
+      "isfloat "
+      "isglobal "
+      "isgraph "
+      "ishandle "
+      "ishermitian "
+      "ishghandle "
+      "ishold "
+      "isieee "
+      "isindex "
+      "isinf "
+      "isinteger "
+      "iskeyword "
+      "isletter "
+      "islogical "
+      "islower "
+      "ismac "
+      "ismatrix "
+      "ismember "
+      "ismethod "
+      "isna "
+      "isnan "
+      "isnull "
+      "isnumeric "
+      "isobject "
+      "isocolors "
+      "isonormals "
+      "isosurface "
+      "ispc "
+      "isprime "
+      "isprint "
+      "isprop "
+      "ispunct "
+      "israwcommand "
+      "isreal "
+      "isrow "
+      "isscalar "
+      "issorted "
+      "isspace "
+      "issparse "
+      "issquare "
+      "isstr "
+      "isstrprop "
+      "isstruct "
+      "issymmetric "
+      "isunix "
+      "isupper "
+      "isvarname "
+      "isvector "
+      "isxdigit "
+      "j "
+      "jet "
+      "kbhit "
+      "kendall "
+      "keyboard "
+      "kill "
+      "kolmogorov_smirnov_cdf "
+      "kolmogorov_smirnov_test "
+      "kolmogorov_smirnov_test_2 "
+      "kron "
+      "kruskal_wallis_test "
+      "krylov "
+      "krylovb "
+      "kurtosis "
+      "laplace_cdf "
+      "laplace_inv "
+      "laplace_pdf "
+      "laplace_rnd "
+      "lasterr "
+      "lasterror "
+      "lastwarn "
+      "lchol "
+      "lcm "
+      "ldivide "
+      "le "
+      "legend "
+      "legendre "
+      "length "
+      "lgamma "
+      "license "
+      "lin2mu "
+      "line "
+      "link "
+      "linkprop "
+      "linspace "
+      "list "
+      "list_in_columns "
+      "list_primes "
+      "load "
+      "loadaudio "
+      "loadimage "
+      "loadobj "
+      "localtime "
+      "log "
+      "log10 "
+      "log1p "
+      "log2 "
+      "logical "
+      "logistic_cdf "
+      "logistic_inv "
+      "logistic_pdf "
+      "logistic_regression "
+      "logistic_rnd "
+      "logit "
+      "loglog "
+      "loglogerr "
+      "logm "
+      "logncdf "
+      "logninv "
+      "lognpdf "
+      "lognrnd "
+      "logspace "
+      "lookfor "
+      "lookup "
+      "lower "
+      "ls "
+      "ls_command "
+      "lsode "
+      "lsode_options "
+      "lsqnonneg "
+      "lstat "
+      "lt "
+      "lu "
+      "luinc "
+      "luupdate "
+      "magic "
+      "mahalanobis "
+      "make_absolute_filename "
+      "makeinfo_program "
+      "manova "
+      "mark_as_command "
+      "mark_as_rawcommand "
+      "mat2cell "
+      "mat2str "
+      "matlabroot "
+      "matrix_type "
+      "max "
+      "max_recursion_depth "
+      "mcnemar_test "
+      "md5sum "
+      "mean "
+      "meansq "
+      "median "
+      "menu "
+      "merge "
+      "mesh "
+      "meshc "
+      "meshgrid "
+      "meshz "
+      "methods "
+      "mex "
+      "mexext "
+      "mfilename "
+      "mgorth "
+      "min "
+      "minus "
+      "mislocked "
+      "missing_function_hook "
+      "mist "
+      "mkdir "
+      "mkfifo "
+      "mkoctfile "
+      "mkpp "
+      "mkstemp "
+      "mktime "
+      "mldivide "
+      "mlock "
+      "mod "
+      "mode "
+      "moment "
+      "more "
+      "most "
+      "movefile "
+      "mpoles "
+      "mpower "
+      "mrdivide "
+      "mtimes "
+      "mu2lin "
+      "munlock "
+      "namelengthmax "
+      "nan "
+      "nargchk "
+      "nargin "
+      "nargout "
+      "nargoutchk "
+      "native_float_format "
+      "nbincdf "
+      "nbininv "
+      "nbinpdf "
+      "nbinrnd "
+      "nchoosek "
+      "ndgrid "
+      "ndims "
+      "ne "
+      "newplot "
+      "news "
+      "nextpow2 "
+      "nfields "
+      "nnz "
+      "nonzeros "
+      "norm "
+      "normcdf "
+      "normest "
+      "norminv "
+      "normpdf "
+      "normrnd "
+      "not "
+      "now "
+      "nproc "
+      "nth_element "
+      "nthroot "
+      "ntsc2rgb "
+      "null "
+      "num2cell "
+      "num2hex "
+      "num2str "
+      "numel "
+      "nzmax "
+      "ocean "
+      "octave_config_info "
+      "octave_core_file_limit "
+      "octave_core_file_name "
+      "octave_core_file_options "
+      "octave_tmp_file_name "
+      "ols "
+      "onCleanup "
+      "onenormest "
+      "ones "
+      "optimget "
+      "optimize_subsasgn_calls "
+      "optimset "
+      "or "
+      "orderfields "
+      "orient "
+      "orth "
+      "otherwise "
+      "output_max_field_width "
+      "output_precision "
+      "pack "
+      "page_output_immediately "
+      "page_screen_output "
+      "paren "
+      "pareto "
+      "parseparams "
+      "pascal "
+      "patch "
+      "path "
+      "pathdef "
+      "pathsep "
+      "pause "
+      "pbaspect "
+      "pcg "
+      "pchip "
+      "pclose "
+      "pcolor "
+      "pcr "
+      "peaks "
+      "periodogram "
+      "perl "
+      "perms "
+      "permute "
+      "perror "
+      "persistent "
+      "pi "
+      "pie "
+      "pie3 "
+      "pink "
+      "pinv "
+      "pipe "
+      "pkg "
+      "planerot "
+      "playaudio "
+      "plot "
+      "plot3 "
+      "plotmatrix "
+      "plotyy "
+      "plus "
+      "poisscdf "
+      "poissinv "
+      "poisspdf "
+      "poissrnd "
+      "pol2cart "
+      "polar "
+      "poly "
+      "polyaffine "
+      "polyarea "
+      "polyder "
+      "polyderiv "
+      "polyfit "
+      "polygcd "
+      "polyint "
+      "polyout "
+      "polyreduce "
+      "polyval "
+      "polyvalm "
+      "popen "
+      "popen2 "
+      "postpad "
+      "pow2 "
+      "power "
+      "powerset "
+      "ppder "
+      "ppint "
+      "ppjumps "
+      "ppplot "
+      "ppval "
+      "pqpnonneg "
+      "prctile "
+      "prepad "
+      "primes "
+      "print "
+      "print_empty_dimensions "
+      "print_struct_array_contents "
+      "print_usage "
+      "printf "
+      "prism "
+      "probit "
+      "prod "
+      "program_invocation_name "
+      "program_name "
+      "prop_test_2 "
+      "putenv "
+      "puts "
+      "pwd "
+      "qp "
+      "qqplot "
+      "qr "
+      "qrdelete "
+      "qrinsert "
+      "qrshift "
+      "qrupdate "
+      "quad "
+      "quad_options "
+      "quadcc "
+      "quadgk "
+      "quadl "
+      "quadv "
+      "quantile "
+      "quit "
+      "quiver "
+      "quiver3 "
+      "qz "
+      "qzhess "
+      "rainbow "
+      "rand "
+      "rande "
+      "randg "
+      "randi "
+      "randn "
+      "randp "
+      "randperm "
+      "range "
+      "rank "
+      "ranks "
+      "rat "
+      "rats "
+      "rcond "
+      "rdivide "
+      "re_read_readline_init_file "
+      "read_readline_init_file "
+      "readdir "
+      "readlink "
+      "real "
+      "reallog "
+      "realmax "
+      "realmin "
+      "realpow "
+      "realsqrt "
+      "record "
+      "rectangle "
+      "rectint "
+      "refresh "
+      "refreshdata "
+      "regexp "
+      "regexpi "
+      "regexprep "
+      "regexptranslate "
+      "rehash "
+      "rem "
+      "remove_input_event_hook "
+      "rename "
+      "repelems "
+      "replot "
+      "repmat "
+      "reset "
+      "reshape "
+      "residue "
+      "resize "
+      "restoredefaultpath "
+      "rethrow "
+      "return "
+      "rgb2hsv "
+      "rgb2ind "
+      "rgb2ntsc "
+      "ribbon "
+      "rindex "
+      "rmappdata "
+      "rmdir "
+      "rmfield "
+      "rmpath "
+      "roots "
+      "rose "
+      "rosser "
+      "rot90 "
+      "rotdim "
+      "round "
+      "roundb "
+      "rows "
+      "rref "
+      "rsf2csf "
+      "run "
+      "run_count "
+      "run_history "
+      "run_test "
+      "rundemos "
+      "runlength "
+      "runtests "
+      "save "
+      "save_header_format_string "
+      "save_precision "
+      "saveas "
+      "saveaudio "
+      "saveimage "
+      "saveobj "
+      "savepath "
+      "saving_history "
+      "scanf "
+      "scatter "
+      "scatter3 "
+      "schur "
+      "sec "
+      "secd "
+      "sech "
+      "semicolon "
+      "semilogx "
+      "semilogxerr "
+      "semilogy "
+      "semilogyerr "
+      "set "
+      "setappdata "
+      "setaudio "
+      "setdiff "
+      "setenv "
+      "setfield "
+      "setgrent "
+      "setpwent "
+      "setstr "
+      "setxor "
+      "shading "
+      "shell_cmd "
+      "shg "
+      "shift "
+      "shiftdim "
+      "sighup_dumps_octave_core "
+      "sign "
+      "sign_test "
+      "sigterm_dumps_octave_core "
+      "silent_functions "
+      "sin "
+      "sinc "
+      "sind "
+      "sinetone "
+      "sinewave "
+      "single "
+      "sinh "
+      "size "
+      "size_equal "
+      "sizemax "
+      "sizeof "
+      "skewness "
+      "sleep "
+      "slice "
+      "sombrero "
+      "sort "
+      "sortrows "
+      "source "
+      "spalloc "
+      "sparse "
+      "sparse_auto_mutate "
+      "spatan2 "
+      "spaugment "
+      "spchol "
+      "spchol2inv "
+      "spcholinv "
+      "spconvert "
+      "spcumprod "
+      "spcumsum "
+      "spdet "
+      "spdiag "
+      "spdiags "
+      "spearman "
+      "spectral_adf "
+      "spectral_xdf "
+      "specular "
+      "speed "
+      "spencer "
+      "speye "
+      "spfind "
+      "spfun "
+      "sph2cart "
+      "sphcat "
+      "sphere "
+      "spinmap "
+      "spinv "
+      "spkron "
+      "splchol "
+      "spline "
+      "split "
+      "split_long_rows "
+      "splu "
+      "spmax "
+      "spmin "
+      "spones "
+      "spparms "
+      "spprod "
+      "spqr "
+      "sprand "
+      "sprandn "
+      "sprandsym "
+      "sprank "
+      "spring "
+      "sprintf "
+      "spstats "
+      "spsum "
+      "spsumsq "
+      "spvcat "
+      "spy "
+      "sqp "
+      "sqrt "
+      "sqrtm "
+      "squeeze "
+      "sscanf "
+      "stairs "
+      "stat "
+      "static "
+      "statistics "
+      "std "
+      "stderr "
+      "stdin "
+      "stdnormal_cdf "
+      "stdnormal_inv "
+      "stdnormal_pdf "
+      "stdnormal_rnd "
+      "stdout "
+      "stem "
+      "stem3 "
+      "stft "
+      "str2double "
+      "str2func "
+      "str2mat "
+      "str2num "
+      "strcat "
+      "strchr "
+      "strcmp "
+      "strcmpi "
+      "strerror "
+      "strfind "
+      "strftime "
+      "string_fill_char "
+      "strjust "
+      "strmatch "
+      "strncmp "
+      "strncmpi "
+      "strptime "
+      "strread "
+      "strrep "
+      "strsplit "
+      "strtok "
+      "strtrim "
+      "strtrunc "
+      "struct "
+      "struct2cell "
+      "struct_levels_to_print "
+      "structfun "
+      "strvcat "
+      "studentize "
+      "sub2ind "
+      "subplot "
+      "subsasgn "
+      "subsindex "
+      "subspace "
+      "subsref "
+      "substr "
+      "substruct "
+      "sum "
+      "summer "
+      "sumsq "
+      "superiorto "
+      "suppress_verbose_help_message "
+      "surf "
+      "surface "
+      "surfc "
+      "surfl "
+      "surfnorm "
+      "svd "
+      "svd_driver "
+      "svds "
+      "swapbytes "
+      "switch "
+      "syl "
+      "sylvester_matrix "
+      "symamd "
+      "symbfact "
+      "symlink "
+      "symrcm "
+      "symvar "
+      "synthesis "
+      "system "
+      "t_test "
+      "t_test_2 "
+      "t_test_regression "
+      "table "
+      "tan "
+      "tand "
+      "tanh "
+      "tar "
+      "tcdf "
+      "tempdir "
+      "tempname "
+      "terminal_size "
+      "test "
+      "test2 "
+      "test3 "
+      "text "
+      "textread "
+      "textscan "
+      "tic "
+      "tilde_expand "
+      "time "
+      "times "
+      "tinv "
+      "title "
+      "tmpfile "
+      "tmpnam "
+      "toascii "
+      "toc "
+      "toeplitz "
+      "tolower "
+      "toupper "
+      "tpdf "
+      "trace "
+      "transpose "
+      "trapz "
+      "treelayout "
+      "treeplot "
+      "tril "
+      "trimesh "
+      "triplequad "
+      "triplot "
+      "trisurf "
+      "triu "
+      "trnd "
+      "true "
+      "try "
+      "tsearch "
+      "tsearchn "
+      "type "
+      "typecast "
+      "typeinfo "
+      "u_test "
+      "uigetdir "
+      "uigetfile "
+      "uimenu "
+      "uint16 "
+      "uint32 "
+      "uint64 "
+      "uint8 "
+      "uiputfile "
+      "umask "
+      "uminus "
+      "uname "
+      "undo_string_escapes "
+      "unidcdf "
+      "unidinv "
+      "unidpdf "
+      "unidrnd "
+      "unifcdf "
+      "unifinv "
+      "unifpdf "
+      "unifrnd "
+      "unimplemented "
+      "union "
+      "unique "
+      "unix "
+      "unlink "
+      "unmark_command "
+      "unmark_rawcommand "
+      "unmkpp "
+      "unpack "
+      "untabify "
+      "untar "
+      "until "
+      "unwind_protect "
+      "unwind_protect_cleanup "
+      "unwrap "
+      "unzip "
+      "uplus "
+      "upper "
+      "urlread "
+      "urlwrite "
+      "usage "
+      "usleep "
+      "validatestring "
+      "values "
+      "vander "
+      "var "
+      "var_test "
+      "varargin "
+      "varargout "
+      "vec "
+      "vech "
+      "vectorize "
+      "ver "
+      "version "
+      "vertcat "
+      "view "
+      "voronoi "
+      "voronoin "
+      "waitforbuttonpress "
+      "waitpid "
+      "warning "
+      "warning_ids "
+      "warranty "
+      "wavread "
+      "wavwrite "
+      "wblcdf "
+      "wblinv "
+      "wblpdf "
+      "wblrnd "
+      "weekday "
+      "weibcdf "
+      "weibinv "
+      "weibpdf "
+      "weibrnd "
+      "welch_test "
+      "what "
+      "which "
+      "while "
+      "white "
+      "whitebg "
+      "who "
+      "whos "
+      "whos_line_format "
+      "wienrnd "
+      "wilcoxon_test "
+      "wilkinson "
+      "winter "
+      "xlabel "
+      "xlim "
+      "xor "
+      "yes_or_no "
+      "ylabel "
+      "ylim "
+      "yulewalker "
+      "z_test "
+      "z_test_2 "
+      "zeros "
+      "zip "
+      "zlabel "
+      "zlim ";
+  /*            "break case catch continue do else elseif end end_unwind_protect "
+              "endfor endfunction endif endswitch endwhile for function "
+              "global if otherwise persistent return switch try until "
+              "unwind_protect unwind_protect_cleanup while";
+  */
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/libgui/src/resource-manager.h	Sat Aug 18 18:10:09 2012 -0400
@@ -0,0 +1,106 @@
+/* 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/>.
+ */
+
+#ifndef RESOURCEMANAGER_H
+#define RESOURCEMANAGER_H
+
+#include <QDesktopServices>
+#include <QIcon>
+#include <QMap>
+#include <QSettings>
+
+class resource_manager
+{
+protected:
+
+  resource_manager (void);
+
+public:
+
+  ~resource_manager ();
+
+  static QSettings *get_settings (void)
+  {
+    return instance_ok () ? instance->do_get_settings () : 0;
+  }
+
+  static QString get_home_path (void)
+  {
+    return instance_ok () ? instance->do_get_home_path () : QString ();
+  }
+
+  static void reload_settings (void)
+  {
+    if (instance_ok ())
+      instance->do_reload_settings ();
+  }
+
+  static void set_settings (QString file)
+  {
+    if (instance_ok ())
+      instance->do_set_settings (file);
+  }
+
+  static QString find_translator_file (QString language);
+
+  static void update_network_settings (void)
+  {
+    if (instance_ok ())
+      instance->do_update_network_settings ();
+  }
+
+  static bool is_first_run (void)
+  {
+    return instance_ok () ? instance->do_is_first_run () : true;
+  }
+
+  static const char *octave_keywords (void);
+
+private:
+
+  static resource_manager *instance;
+
+  static void cleanup_instance (void) { delete instance; instance = 0; }
+
+  // No copying!
+
+  resource_manager (const resource_manager&);
+
+  resource_manager& operator = (const resource_manager&);
+
+  static bool instance_ok (void);
+
+  QSettings *settings;
+
+  QString home_path;
+
+  bool first_run;
+
+  QSettings *do_get_settings (void);
+
+  QString do_get_home_path (void);
+
+  void do_reload_settings (void);
+
+  void do_set_settings (QString file);
+
+  void do_update_network_settings (void);
+
+  bool do_is_first_run (void);
+};
+
+#endif // RESOURCEMANAGER_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/libgui/src/resource.qrc	Sat Aug 18 18:10:09 2012 -0400
@@ -0,0 +1,40 @@
+<RCC>
+    <qresource prefix="/actions">
+        <file>icons/artsbuilderexecute.png</file>
+        <file>icons/editcopy.png</file>
+        <file>icons/editcut.png</file>
+        <file>icons/editpaste.png</file>
+        <file>icons/filenew.png</file>
+        <file>icons/fileopen.png</file>
+        <file>icons/filesave.png</file>
+        <file>icons/redo.png</file>
+        <file>icons/search.png</file>
+        <file>icons/undo.png</file>
+        <file>icons/up.png</file>
+        <file>icons/configure.png</file>
+        <file>icons/filesaveas.png</file>
+        <file>icons/redled.png</file>
+        <file>icons/arrow_right.png</file>
+        <file>icons/bookmark.png</file>
+        <file>icons/question.png</file>
+        <file>icons/star.png</file>
+        <file>icons/stop.png</file>
+        <file>icons/zoom-in.png</file>
+        <file>icons/zoom-out.png</file>
+        <file>icons/find.png</file>
+        <file>icons/chat.png</file>
+        <file>icons/help_index.png</file>
+        <file>icons/jabber_protocol.png</file>
+        <file>icons/logo.png</file>
+        <file>icons/terminal.png</file>
+        <file>icons/bp_toggle.png</file>
+        <file>icons/bp_rm_all.png</file>
+        <file>icons/bp_prev.png</file>
+        <file>icons/bp_next.png</file>
+        <file>icons/db_cont.png</file>
+        <file>icons/db_step.png</file>
+        <file>icons/db_step_in.png</file>
+        <file>icons/db_step_out.png</file>
+        <file>icons/db_stop.png</file>
+    </qresource>
+</RCC>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/libgui/src/settings-dialog.cc	Sat Aug 18 18:10:09 2012 -0400
@@ -0,0 +1,121 @@
+/* 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 "resource-manager.h"
+#include "settings-dialog.h"
+#include "ui-settings-dialog.h"
+#include <QSettings>
+
+settings_dialog::settings_dialog (QWidget * parent):
+QDialog (parent), ui (new Ui::settings_dialog)
+{
+  ui->setupUi (this);
+
+  QSettings *settings = resource_manager::get_settings ();
+
+  // FIXME -- what should happen if settings is 0?
+
+  ui->useCustomFileEditor->setChecked (settings->value ("useCustomFileEditor").toBool ());
+  ui->customFileEditor->setText (settings->value ("customFileEditor").toString ());
+  ui->editor_showLineNumbers->setChecked (settings->value ("editor/showLineNumbers",true).toBool () );
+  ui->editor_highlightCurrentLine->setChecked (settings->value ("editor/highlightCurrentLine",true).toBool () );
+  ui->editor_codeCompletion->setChecked (settings->value ("editor/codeCompletion",true).toBool () );
+  ui->editor_fontName->setCurrentFont (QFont (settings->value ("editor/fontName","Courier").toString()) );
+  ui->editor_fontSize->setValue (settings->value ("editor/fontSize",10).toInt ());
+  ui->editor_longWindowTitle->setChecked (settings->value ("editor/longWindowTitle",true).toBool ());
+  ui->terminal_fontName->setCurrentFont (QFont (settings->value ("terminal/fontName","Courier").toString()) );
+  ui->terminal_fontSize->setValue (settings->value ("terminal/fontSize",10).toInt ());
+  ui->showFilenames->setChecked (settings->value ("showFilenames").toBool());
+  ui->showFileSize->setChecked (settings->value ("showFileSize").toBool());
+  ui->showFileType->setChecked (settings->value ("showFileType").toBool());
+  ui->showLastModified->setChecked (settings->value ("showLastModified").toBool());
+  ui->showHiddenFiles->setChecked (settings->value ("showHiddenFiles").toBool());
+  ui->useAlternatingRowColors->setChecked (settings->value ("useAlternatingRowColors").toBool());
+  ui->useProxyServer->setChecked (settings->value ("useProxyServer").toBool ());
+  ui->proxyHostName->setText (settings->value ("proxyHostName").toString ());
+  ui->terminal_cursorBlinking->setChecked (settings->value ("terminal/cursorBlinking").toBool ());
+
+  QString cursorType = settings->value ("terminal/cursorType").toString ();
+
+  QStringList items;
+  items << QString("0") << QString("1") << QString("2");
+  ui->terminal_cursorType->addItems(items);
+  ui->terminal_cursorType->setItemText (0, "IBeam Cursor");
+  ui->terminal_cursorType->setItemText (1, "Block Cursor");
+  ui->terminal_cursorType->setItemText (2, "Underline Cursor");
+
+  if (cursorType == "ibeam")
+    ui->terminal_cursorType->setCurrentIndex (0);
+  else if (cursorType == "block")
+    ui->terminal_cursorType->setCurrentIndex (1);
+  else if (cursorType == "underline")
+    ui->terminal_cursorType->setCurrentIndex (2);
+
+  int currentIndex = 0;
+  QString proxyTypeString = settings->value ("proxyType").toString ();
+  while ( (currentIndex < ui->proxyType->count ()) && (ui->proxyType->currentText () != proxyTypeString))
+    {
+      currentIndex++;
+      ui->proxyType->setCurrentIndex (currentIndex);
+    }
+
+  ui->proxyPort->setText (settings->value ("proxyPort").toString ());
+  ui->proxyUserName->setText (settings->value ("proxyUserName").toString ());
+  ui->proxyPassword->setText (settings->value ("proxyPassword").toString ());
+}
+
+settings_dialog::~settings_dialog ()
+{
+  QSettings *settings = resource_manager::get_settings ();
+
+  // FIXME -- what should happen if settings is 0?
+
+  settings->setValue ("useCustomFileEditor", ui->useCustomFileEditor->isChecked ());
+  settings->setValue ("customFileEditor", ui->customFileEditor->text ());
+  settings->setValue ("editor/showLineNumbers", ui->editor_showLineNumbers->isChecked ());
+  settings->setValue ("editor/highlightCurrentLine", ui->editor_highlightCurrentLine->isChecked ());
+  settings->setValue ("editor/codeCompletion", ui->editor_codeCompletion->isChecked ());
+  settings->setValue ("editor/fontName", ui->editor_fontName->currentFont().family());
+  settings->setValue ("editor/fontSize", ui->editor_fontSize->value());
+  settings->setValue ("editor/longWindowTitle", ui->editor_longWindowTitle->isChecked());
+  settings->setValue ("terminal/fontSize", ui->terminal_fontSize->value());
+  settings->setValue ("terminal/fontName", ui->terminal_fontName->currentFont().family());
+  settings->setValue ("showFilenames", ui->showFilenames->isChecked ());
+  settings->setValue ("showFileSize", ui->showFileSize->isChecked ());
+  settings->setValue ("showFileType", ui->showFileType->isChecked ());
+  settings->setValue ("showLastModified", ui->showLastModified->isChecked ());
+  settings->setValue ("showHiddenFiles", ui->showHiddenFiles->isChecked ());
+  settings->setValue ("useAlternatingRowColors", ui->useAlternatingRowColors->isChecked ());
+  settings->setValue ("useProxyServer", ui->useProxyServer->isChecked ());
+  settings->setValue ("proxyType", ui->proxyType->currentText ());
+  settings->setValue ("proxyHostName", ui->proxyHostName->text ());
+  settings->setValue ("proxyPort", ui->proxyPort->text ());
+  settings->setValue ("proxyUserName", ui->proxyUserName->text ());
+  settings->setValue ("proxyPassword", ui->proxyPassword->text ());
+  settings->setValue ("terminal/cursorBlinking", ui->terminal_cursorBlinking->isChecked ());
+
+  QString cursorType;
+  switch (ui->terminal_cursorType->currentIndex ())
+    {
+    case 0: cursorType = "ibeam"; break;
+    case 1: cursorType = "block"; break;
+    case 2: cursorType = "underline";  break;
+    }
+  settings->setValue ("terminal/cursorType", cursorType);
+  settings->sync ();
+  delete ui;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/libgui/src/settings-dialog.h	Sat Aug 18 18:10:09 2012 -0400
@@ -0,0 +1,39 @@
+/* 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.
+ *md5
+
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef SETTINGSDIALOG_H
+#define SETTINGSDIALOG_H
+
+#include <QDialog>
+
+namespace Ui
+{
+  class settings_dialog;
+}
+
+class settings_dialog:public QDialog
+{
+Q_OBJECT public:
+  explicit settings_dialog (QWidget * parent);
+  ~settings_dialog ();
+
+private:
+  Ui::settings_dialog * ui;
+};
+
+#endif // SETTINGSDIALOG_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/libgui/src/settings-dialog.ui	Sat Aug 18 18:10:09 2012 -0400
@@ -0,0 +1,719 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>settings_dialog</class>
+ <widget class="QDialog" name="settings_dialog">
+  <property name="windowModality">
+   <enum>Qt::ApplicationModal</enum>
+  </property>
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>600</width>
+    <height>400</height>
+   </rect>
+  </property>
+  <property name="minimumSize">
+   <size>
+    <width>600</width>
+    <height>400</height>
+   </size>
+  </property>
+  <property name="maximumSize">
+   <size>
+    <width>600</width>
+    <height>400</height>
+   </size>
+  </property>
+  <property name="windowTitle">
+   <string>Settings</string>
+  </property>
+  <layout class="QVBoxLayout" name="verticalLayout_2">
+   <item>
+    <widget class="QTabWidget" name="tabWidget">
+     <property name="currentIndex">
+      <number>0</number>
+     </property>
+     <widget class="QWidget" name="tab">
+      <attribute name="title">
+       <string>Editor</string>
+      </attribute>
+      <layout class="QVBoxLayout" name="verticalLayout_6">
+       <item>
+        <layout class="QVBoxLayout" name="verticalLayout_5">
+         <item>
+          <layout class="QHBoxLayout" name="horizontalLayout_4">
+           <item>
+            <widget class="QLabel" name="label_8">
+             <property name="text">
+              <string>Font</string>
+             </property>
+            </widget>
+           </item>
+           <item>
+            <widget class="QFontComboBox" name="editor_fontName">
+             <property name="editable">
+              <bool>false</bool>
+             </property>
+             <property name="fontFilters">
+              <set>QFontComboBox::MonospacedFonts</set>
+             </property>
+            </widget>
+           </item>
+           <item>
+            <widget class="QLabel" name="label_9">
+             <property name="text">
+              <string>Font Size</string>
+             </property>
+            </widget>
+           </item>
+           <item>
+            <widget class="QSpinBox" name="editor_fontSize">
+             <property name="minimum">
+              <number>2</number>
+             </property>
+             <property name="maximum">
+              <number>96</number>
+             </property>
+             <property name="value">
+              <number>10</number>
+             </property>
+            </widget>
+           </item>
+           <item>
+            <spacer name="horizontalSpacer_4">
+             <property name="orientation">
+              <enum>Qt::Horizontal</enum>
+             </property>
+             <property name="sizeHint" stdset="0">
+              <size>
+               <width>40</width>
+               <height>20</height>
+              </size>
+             </property>
+            </spacer>
+           </item>
+          </layout>
+         </item>
+         <item>
+          <widget class="QCheckBox" name="editor_showLineNumbers">
+           <property name="enabled">
+            <bool>true</bool>
+           </property>
+           <property name="text">
+            <string>Show line numbers</string>
+           </property>
+           <property name="checked">
+            <bool>false</bool>
+           </property>
+          </widget>
+         </item>
+         <item>
+          <widget class="QCheckBox" name="editor_highlightCurrentLine">
+           <property name="enabled">
+            <bool>true</bool>
+           </property>
+           <property name="text">
+            <string>Highlight current line</string>
+           </property>
+           <property name="checked">
+            <bool>false</bool>
+           </property>
+          </widget>
+         </item>
+         <item>
+          <widget class="QCheckBox" name="editor_codeCompletion">
+           <property name="enabled">
+            <bool>true</bool>
+           </property>
+           <property name="text">
+            <string>Code completion</string>
+           </property>
+           <property name="checked">
+            <bool>false</bool>
+           </property>
+          </widget>
+         </item>
+         <item>
+          <widget class="QCheckBox" name="editor_longWindowTitle">
+           <property name="text">
+            <string>Show complete path in window title</string>
+           </property>
+          </widget>
+         </item>
+        </layout>
+       </item>
+       <item>
+        <spacer name="verticalSpacer">
+         <property name="orientation">
+          <enum>Qt::Vertical</enum>
+         </property>
+         <property name="sizeHint" stdset="0">
+          <size>
+           <width>20</width>
+           <height>40</height>
+          </size>
+         </property>
+        </spacer>
+       </item>
+       <item>
+        <layout class="QHBoxLayout" name="horizontalLayout">
+         <item>
+          <widget class="QCheckBox" name="useCustomFileEditor">
+           <property name="enabled">
+            <bool>true</bool>
+           </property>
+           <property name="text">
+            <string>Use custom file editor:</string>
+           </property>
+          </widget>
+         </item>
+         <item>
+          <widget class="QLineEdit" name="customFileEditor">
+           <property name="enabled">
+            <bool>false</bool>
+           </property>
+           <property name="text">
+            <string>emacs</string>
+           </property>
+          </widget>
+         </item>
+        </layout>
+       </item>
+      </layout>
+     </widget>
+     <widget class="QWidget" name="tab_5">
+      <attribute name="title">
+       <string>Terminal</string>
+      </attribute>
+      <layout class="QVBoxLayout" name="verticalLayout">
+       <item>
+        <layout class="QHBoxLayout" name="horizontalLayout_5">
+         <item>
+          <widget class="QLabel" name="label_11">
+           <property name="text">
+            <string>Font</string>
+           </property>
+          </widget>
+         </item>
+         <item>
+          <widget class="QFontComboBox" name="terminal_fontName">
+           <property name="editable">
+            <bool>false</bool>
+           </property>
+           <property name="fontFilters">
+            <set>QFontComboBox::MonospacedFonts</set>
+           </property>
+          </widget>
+         </item>
+         <item>
+          <widget class="QLabel" name="label_12">
+           <property name="text">
+            <string>Font Size</string>
+           </property>
+          </widget>
+         </item>
+         <item>
+          <widget class="QSpinBox" name="terminal_fontSize">
+           <property name="minimum">
+            <number>2</number>
+           </property>
+           <property name="maximum">
+            <number>96</number>
+           </property>
+           <property name="value">
+            <number>10</number>
+           </property>
+          </widget>
+         </item>
+         <item>
+          <spacer name="horizontalSpacer_5">
+           <property name="orientation">
+            <enum>Qt::Horizontal</enum>
+           </property>
+           <property name="sizeHint" stdset="0">
+            <size>
+             <width>40</width>
+             <height>20</height>
+            </size>
+           </property>
+          </spacer>
+         </item>
+        </layout>
+       </item>
+       <item>
+        <layout class="QHBoxLayout" name="horizontalLayout_3">
+         <item>
+          <widget class="QLabel" name="label">
+           <property name="text">
+            <string>Cursor type:</string>
+           </property>
+          </widget>
+         </item>
+         <item>
+          <widget class="QComboBox" name="terminal_cursorType"/>
+         </item>
+         <item>
+          <spacer name="horizontalSpacer">
+           <property name="orientation">
+            <enum>Qt::Horizontal</enum>
+           </property>
+           <property name="sizeHint" stdset="0">
+            <size>
+             <width>40</width>
+             <height>20</height>
+            </size>
+           </property>
+          </spacer>
+         </item>
+        </layout>
+       </item>
+       <item>
+        <layout class="QHBoxLayout" name="horizontalLayout_2">
+         <item>
+          <widget class="QCheckBox" name="terminal_cursorBlinking">
+           <property name="text">
+            <string>Cursor blinking</string>
+           </property>
+          </widget>
+         </item>
+         <item>
+          <spacer name="horizontalSpacer_2">
+           <property name="orientation">
+            <enum>Qt::Horizontal</enum>
+           </property>
+           <property name="sizeHint" stdset="0">
+            <size>
+             <width>40</width>
+             <height>20</height>
+            </size>
+           </property>
+          </spacer>
+         </item>
+        </layout>
+       </item>
+       <item>
+        <spacer name="verticalSpacer_3">
+         <property name="orientation">
+          <enum>Qt::Vertical</enum>
+         </property>
+         <property name="sizeHint" stdset="0">
+          <size>
+           <width>20</width>
+           <height>321</height>
+          </size>
+         </property>
+        </spacer>
+       </item>
+      </layout>
+     </widget>
+     <widget class="QWidget" name="tab_2">
+      <attribute name="title">
+       <string>File Browser</string>
+      </attribute>
+      <layout class="QVBoxLayout" name="verticalLayout_3">
+       <item>
+        <widget class="QCheckBox" name="showFilenames">
+         <property name="text">
+          <string>Show filenames</string>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="QCheckBox" name="showFileSize">
+         <property name="text">
+          <string>Show file size</string>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="QCheckBox" name="showFileType">
+         <property name="text">
+          <string>Show file type</string>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="QCheckBox" name="showLastModified">
+         <property name="text">
+          <string>Show date of last modification</string>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="QCheckBox" name="showHiddenFiles">
+         <property name="text">
+          <string>Show hidden files</string>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="QCheckBox" name="useAlternatingRowColors">
+         <property name="text">
+          <string>Alternating row colors</string>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <spacer name="verticalSpacer_2">
+         <property name="orientation">
+          <enum>Qt::Vertical</enum>
+         </property>
+         <property name="sizeHint" stdset="0">
+          <size>
+           <width>20</width>
+           <height>360</height>
+          </size>
+         </property>
+        </spacer>
+       </item>
+      </layout>
+     </widget>
+     <widget class="QWidget" name="tab_3">
+      <attribute name="title">
+       <string>Network</string>
+      </attribute>
+      <layout class="QVBoxLayout" name="verticalLayout_4">
+       <item>
+        <widget class="QCheckBox" name="useProxyServer">
+         <property name="text">
+          <string>Use proxy server</string>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <layout class="QFormLayout" name="formLayout">
+         <item row="0" column="0">
+          <widget class="QLabel" name="label_3">
+           <property name="enabled">
+            <bool>false</bool>
+           </property>
+           <property name="text">
+            <string>Proxy Type:</string>
+           </property>
+          </widget>
+         </item>
+         <item row="0" column="1">
+          <widget class="QComboBox" name="proxyType">
+           <property name="enabled">
+            <bool>false</bool>
+           </property>
+           <item>
+            <property name="text">
+             <string>HttpProxy</string>
+            </property>
+           </item>
+           <item>
+            <property name="text">
+             <string>Socks5Proxy</string>
+            </property>
+           </item>
+          </widget>
+         </item>
+         <item row="1" column="0">
+          <widget class="QLabel" name="label_4">
+           <property name="enabled">
+            <bool>false</bool>
+           </property>
+           <property name="text">
+            <string>Hostname:</string>
+           </property>
+          </widget>
+         </item>
+         <item row="1" column="1">
+          <widget class="QLineEdit" name="proxyHostName">
+           <property name="enabled">
+            <bool>false</bool>
+           </property>
+          </widget>
+         </item>
+         <item row="2" column="0">
+          <widget class="QLabel" name="label_5">
+           <property name="enabled">
+            <bool>false</bool>
+           </property>
+           <property name="text">
+            <string>Port:</string>
+           </property>
+          </widget>
+         </item>
+         <item row="2" column="1">
+          <widget class="QLineEdit" name="proxyPort">
+           <property name="enabled">
+            <bool>false</bool>
+           </property>
+          </widget>
+         </item>
+         <item row="3" column="0">
+          <widget class="QLabel" name="label_6">
+           <property name="enabled">
+            <bool>false</bool>
+           </property>
+           <property name="text">
+            <string>Username:</string>
+           </property>
+          </widget>
+         </item>
+         <item row="3" column="1">
+          <widget class="QLineEdit" name="proxyUserName">
+           <property name="enabled">
+            <bool>false</bool>
+           </property>
+          </widget>
+         </item>
+         <item row="4" column="0">
+          <widget class="QLabel" name="label_7">
+           <property name="enabled">
+            <bool>false</bool>
+           </property>
+           <property name="text">
+            <string>Password:</string>
+           </property>
+          </widget>
+         </item>
+         <item row="4" column="1">
+          <widget class="QLineEdit" name="proxyPassword">
+           <property name="enabled">
+            <bool>false</bool>
+           </property>
+           <property name="echoMode">
+            <enum>QLineEdit::Password</enum>
+           </property>
+          </widget>
+         </item>
+        </layout>
+       </item>
+      </layout>
+     </widget>
+    </widget>
+   </item>
+  </layout>
+ </widget>
+ <resources/>
+ <connections>
+  <connection>
+   <sender>useProxyServer</sender>
+   <signal>toggled(bool)</signal>
+   <receiver>label_4</receiver>
+   <slot>setEnabled(bool)</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>249</x>
+     <y>59</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>69</x>
+     <y>122</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>useProxyServer</sender>
+   <signal>toggled(bool)</signal>
+   <receiver>label_3</receiver>
+   <slot>setEnabled(bool)</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>249</x>
+     <y>59</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>59</x>
+     <y>91</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>useProxyServer</sender>
+   <signal>toggled(bool)</signal>
+   <receiver>label_5</receiver>
+   <slot>setEnabled(bool)</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>249</x>
+     <y>59</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>44</x>
+     <y>152</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>useProxyServer</sender>
+   <signal>toggled(bool)</signal>
+   <receiver>proxyType</receiver>
+   <slot>setEnabled(bool)</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>249</x>
+     <y>59</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>291</x>
+     <y>91</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>useProxyServer</sender>
+   <signal>toggled(bool)</signal>
+   <receiver>proxyHostName</receiver>
+   <slot>setEnabled(bool)</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>249</x>
+     <y>59</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>291</x>
+     <y>124</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>useProxyServer</sender>
+   <signal>toggled(bool)</signal>
+   <receiver>proxyPort</receiver>
+   <slot>setEnabled(bool)</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>249</x>
+     <y>59</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>364</x>
+     <y>154</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>useCustomFileEditor</sender>
+   <signal>toggled(bool)</signal>
+   <receiver>customFileEditor</receiver>
+   <slot>setEnabled(bool)</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>111</x>
+     <y>62</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>343</x>
+     <y>63</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>useProxyServer</sender>
+   <signal>toggled(bool)</signal>
+   <receiver>label_7</receiver>
+   <slot>setEnabled(bool)</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>249</x>
+     <y>59</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>67</x>
+     <y>212</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>editor_showLineNumbers</sender>
+   <signal>toggled(bool)</signal>
+   <receiver>editor_showLineNumbers</receiver>
+   <slot>setEnabled(bool)</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>249</x>
+     <y>87</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>249</x>
+     <y>87</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>editor_highlightCurrentLine</sender>
+   <signal>toggled(bool)</signal>
+   <receiver>editor_highlightCurrentLine</receiver>
+   <slot>setEnabled(bool)</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>249</x>
+     <y>112</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>249</x>
+     <y>112</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>useProxyServer</sender>
+   <signal>toggled(bool)</signal>
+   <receiver>proxyUserName</receiver>
+   <slot>setEnabled(bool)</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>249</x>
+     <y>59</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>364</x>
+     <y>184</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>useProxyServer</sender>
+   <signal>toggled(bool)</signal>
+   <receiver>proxyPassword</receiver>
+   <slot>setEnabled(bool)</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>249</x>
+     <y>59</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>364</x>
+     <y>214</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>useProxyServer</sender>
+   <signal>toggled(bool)</signal>
+   <receiver>label_6</receiver>
+   <slot>setEnabled(bool)</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>249</x>
+     <y>59</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>68</x>
+     <y>182</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>editor_codeCompletion</sender>
+   <signal>toggled(bool)</signal>
+   <receiver>editor_codeCompletion</receiver>
+   <slot>setEnabled(bool)</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>249</x>
+     <y>137</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>249</x>
+     <y>137</y>
+    </hint>
+   </hints>
+  </connection>
+ </connections>
+</ui>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/libgui/src/src.pro	Sat Aug 18 18:10:09 2012 -0400
@@ -0,0 +1,139 @@
+# 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/>.
+
+# Basic settings:
+QT                  += core gui webkit network	    # Qt modules
+TEMPLATE            = app                           # Build as application
+TARGET              = octave-gui                    # Name of the target binary
+
+DESTDIR             = ../bin                           # Destination of the output
+
+TRANSLATIONS        += languages/generic.ts \
+                       languages/de-de.ts \
+                       languages/pt-br.ts \
+                       languages/es-es.ts \
+                       languages/ru-ru.ts \
+                       languages/uk-ua.ts           # Available translations
+
+win32-msvc*: include(msvc.pri)
+
+LIBS                += -lreadline -lqscintilla2  \
+                       -L../qterminal/libqterminal/$$LIBDIR_SUFFIX -lqterminal -lm \
+                       -L../../libcruft/.libs -lcruft \
+                       -L../../liboctave/.libs -loctave \
+                       -L../../src/.libs -loctinterp
+
+mac {
+    CONFIG -= app_bundle
+}
+
+# Includepaths and libraries to link against:
+INCLUDEPATH         += . \
+                       octave-adapter \
+                       m-editor \
+                       qtinfo \
+                       ../qterminal/libqterminal \
+                       /usr/include/qt4 \
+                       ../.. \
+                       ../../src \
+                       ../../src/interpfcn \
+                       ../../src/interp-core \
+                       ../../src/octave-value \
+                       ../../src/parse-tree \
+                       ../../src/operators \
+                       ../../liboctave \
+                       ../../libcruft/misc
+
+#QMAKE_LIBDIR        += $$system(octave-config -p OCTLIBDIR)
+#unix {
+#    QMAKE_RPATHDIR += $$system(octave-config -p OCTLIBDIR)
+#}
+
+mac {
+    LFLAGS += -L/opt/local/lib
+}
+
+unix {
+    LIBS += -lutil
+}
+
+win32-g++ {
+    QMAKE_LFLAGS += --enable-auto-import
+}
+
+win32-msvc* {
+    DEFINES += QSCINTILLA_DLL
+    QMAKE_CXXFLAGS += -wd4244
+}
+
+QMAKE_LFLAGS        += $$LFLAGS
+QMAKE_CXXFLAGS      += $$INCFLAGS
+
+# Files associated with the project:
+SOURCES +=\
+    octave-adapter/octave-link.cc \
+    octave-adapter/octave-main-thread.cc \
+    m-editor/lexer-octave-gui.cc \
+    m-editor/file-editor.cc \
+    m-editor/file-editor-tab.cc \
+    m-editor/find-dialog.cc \
+    qtinfo/parser.cc \
+    qtinfo/webinfo.cc \
+    main-window.cc \
+    workspace-view.cc \
+    history-dockwidget.cc \
+    files-dockwidget.cc \
+    settings-dialog.cc \
+    octave-gui.cc \
+    resource-manager.cc \
+    welcome-wizard.cc \
+    workspace-model.cc \
+    terminal-dockwidget.cc \
+    octave-qt-event-listener.cc \
+    documentation-dockwidget.cc
+
+HEADERS += \
+    octave-adapter/octave-link.h \
+    octave-adapter/octave-main-thread.h \
+    octave-adapter/octave-event.h \
+    octave-adapter/octave-event-observer.h \
+    octave-adapter/octave-event-listener.h \
+    m-editor/lexer-octave-gui.h \
+    m-editor/file-editor.h \
+    m-editor/file-editor-interface.h \
+    m-editor/file-editor-tab.h \
+    m-editor/find-dialog.h \
+    qtinfo/parser.h \
+    qtinfo/webinfo.h \
+    symbol-information.h \
+    main-window.h \
+    workspace-view.h \
+    history-dockwidget.h \
+    files-dockwidget.h \
+    settings-dialog.h \
+    resource-manager.h \
+    welcome-wizard.h \
+    workspace-model.h \
+    terminal-dockwidget.h \
+    octave-qt-event-listener.h \
+    documentation-dockwidget.h
+
+FORMS += \
+    settings-dialog.ui \
+    welcome-wizard.ui
+
+RESOURCES += \
+    resource.qrc
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/libgui/src/symbol-information.cc	Sat Aug 18 18:10:09 2012 -0400
@@ -0,0 +1,100 @@
+/* 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 <QString>
+
+#include "ov.h"
+#include "symtab.h"
+
+#include "symbol-information.h"
+
+bool
+symbol_information::from_symbol_record
+  (const symbol_table::symbol_record& symbol_record)
+{
+  if (symbol_record.is_local () && !symbol_record.is_global () && !symbol_record.is_hidden ())
+    _scope = local;
+  else if (symbol_record.is_global ())
+    _scope = global;
+  else if (symbol_record.is_persistent ())
+    _scope = persistent;
+  else if (symbol_record.is_hidden ())
+    _scope = hidden;
+
+  _symbol = QString (symbol_record.name ().c_str ());
+  _type   = QString (symbol_record.varval ().type_name ().c_str ());
+  octave_value ov = symbol_record.varval ();
+
+  // In case we have really large matrices or strings, cut them down
+  // for performance reasons.
+  QString short_value_string;
+  bool use_short_value_string = false;
+  if (ov.is_matrix_type () || ov.is_cell ())
+    {
+      if (ov.rows () * ov.columns () > 10)
+        {
+          use_short_value_string = true;
+          short_value_string
+            = QString ("%1x%2 items").arg (ov.rows ()).arg (ov.columns ());
+        }
+    }
+  else if (ov.is_string ())
+    {
+      if (ov.string_value ().length () > 40)
+        {
+          use_short_value_string = true;
+          short_value_string
+            = QString::fromStdString (ov.string_value ().substr (0, 40));
+        }
+    }
+
+  if (use_short_value_string)
+    {
+      _value = short_value_string;
+    }
+  else
+    {
+      std::stringstream buffer;
+      ov.print (buffer, true);
+      _value  = QString::fromStdString (buffer.str ());
+    }
+  _value.replace("\n", " ");
+
+  if (ov.is_string ())
+    _dimension = QString ("%1").arg (ov.string_value ().length ());
+  else if (ov.is_range ())
+    _dimension =  QString ("%1 : %2 : %3").arg (ov.range_value ().base ())
+      .arg (ov.range_value ().inc ())
+      .arg (ov.range_value ().limit ());
+  else if (ov.is_matrix_type () || ov.is_cell ())
+    _dimension = QString ("%1x%2").arg (ov.rows ())
+      .arg (ov.columns ());
+  else if (ov.is_function_handle ())
+    // See code for func2str for a possible solution
+    _dimension = QString ("func handle");
+  else if (ov.is_inline_function ())
+    // See code for formula for a possible solution
+    _dimension = QString ("inline func");
+  else
+    _dimension = "1";
+
+  return true;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/libgui/src/symbol-information.h	Sat Aug 18 18:10:09 2012 -0400
@@ -0,0 +1,86 @@
+/* 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/>.
+ */
+
+#ifndef SYMBOLINFORMATION_H
+#define SYMBOLINFORMATION_H
+
+// FIXME -- we should not be including config.h in header files.
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include <QString>
+#include <QHash>
+
+#include <sstream>
+
+#include "symtab.h"
+
+/**
+  * \struct symbol_information
+  * \brief Meta-information over a symbol-table entry.
+  * \author Jacob Dawid
+  * This struct is used to store meta information over a symbol entry.
+  * It reduces memory consumption, since it only stores relevant data
+  * about a symbol-table entry that will be used in the model for the
+  * graphical user interface.
+  */
+struct symbol_information
+{
+  enum Scope
+  {
+    local       = 0,
+    global      = 1,
+    persistent  = 2,
+    hidden      = 3
+  };
+
+  QString _symbol;
+  QString _type;
+  QString _value;
+  QString _dimension;
+  Scope   _scope;
+
+  /** Hashes the symbol information for quickly comparing it. */
+  int
+  hash () const
+  {
+    return qHash (_symbol) + qHash (_type) + qHash (_value)
+      + qHash (_dimension) + (int)_scope;
+  }
+
+  /** Compares two symbol information objects. */
+  bool
+  equals (const symbol_information& other) const
+  {
+    if (hash () == other.hash ())
+      {
+        return _symbol == other._symbol
+            && _type   == other._type
+            && _value  == other._value
+            && _scope  == other._scope
+            && _dimension == other._dimension;
+      }
+  }
+
+  /** Extracts meta information from a given symbol record. */
+  bool
+  from_symbol_record (const symbol_table::symbol_record& symbol_record);
+};
+
+#endif // SYMBOLINFORMATION_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/libgui/src/terminal-dockwidget.cc	Sat Aug 18 18:10:09 2012 -0400
@@ -0,0 +1,28 @@
+/* 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 "terminal-dockwidget.h"
+
+terminal_dock_widget::terminal_dock_widget (QTerminal *terminal, QWidget *parent)
+  : QDockWidget (parent)
+{
+  setObjectName ("TerminalDockWidget");
+  setWindowTitle (tr ("Command Window"));
+  setWidget (terminal);
+
+  connect (this, SIGNAL (visibilityChanged (bool)), this, SLOT (handle_visibility_changed (bool)));
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/libgui/src/terminal-dockwidget.h	Sat Aug 18 18:10:09 2012 -0400
@@ -0,0 +1,41 @@
+/* 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/>.
+ */
+
+#ifndef TERMINALDOCKWIDGET_H
+#define TERMINALDOCKWIDGET_H
+
+#include <QDockWidget>
+#include "QTerminal.h"
+
+class terminal_dock_widget : public QDockWidget
+{
+  Q_OBJECT
+public:
+  terminal_dock_widget (QTerminal *terminal, QWidget *parent = 0);
+
+signals:
+    void active_changed (bool active);
+
+public slots:
+    void handle_visibility_changed (bool visible)
+    {
+      if (visible)
+        emit active_changed (true);
+    }
+};
+
+#endif // TERMINALDOCKWIDGET_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/libgui/src/welcome-wizard.cc	Sat Aug 18 18:10:09 2012 -0400
@@ -0,0 +1,53 @@
+/* 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 "welcome-wizard.h"
+#include "ui-welcome-wizard.h"
+
+welcome_wizard::welcome_wizard (QWidget *parent) :
+  QDialog (parent),
+  _ui (new Ui::welcome_wizard)
+{
+  _ui->setupUi (this);
+  connect (_ui->nextButton1, SIGNAL (clicked ()), this, SLOT (next ()));
+  connect (_ui->nextButton2, SIGNAL (clicked ()), this, SLOT (next ()));
+  connect (_ui->nextButton3, SIGNAL (clicked ()), this, SLOT (next ()));
+  connect (_ui->nextButton4, SIGNAL (clicked ()), this, SLOT (next ()));
+
+  connect (_ui->previousButton2, SIGNAL (clicked ()), this, SLOT (previous ()));
+  connect (_ui->previousButton3, SIGNAL (clicked ()), this, SLOT (previous ()));
+  connect (_ui->previousButton4, SIGNAL (clicked ()), this, SLOT (previous ()));
+  connect (_ui->previousButton5, SIGNAL (clicked ()), this, SLOT (previous ()));
+}
+
+welcome_wizard::~welcome_wizard()
+{
+  delete _ui;
+}
+
+void
+welcome_wizard::next ()
+{
+  _ui->stackedWidget->setCurrentIndex (_ui->stackedWidget->currentIndex () + 1);
+}
+
+void
+welcome_wizard::previous ()
+{
+  _ui->stackedWidget->setCurrentIndex (_ui->stackedWidget->currentIndex () - 1);
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/libgui/src/welcome-wizard.h	Sat Aug 18 18:10:09 2012 -0400
@@ -0,0 +1,43 @@
+/* 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/>.
+ */
+
+#ifndef WELCOMEWIZARD_H
+#define WELCOMEWIZARD_H
+
+#include <QDialog>
+
+namespace Ui {
+    class welcome_wizard;
+}
+
+class welcome_wizard : public QDialog
+{
+  Q_OBJECT
+
+public:
+  explicit welcome_wizard (QWidget *parent = 0);
+  ~welcome_wizard ();
+
+public slots:
+  void next ();
+  void previous ();
+
+private:
+  Ui::welcome_wizard *_ui;
+};
+
+#endif // WELCOMEWIZARD_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/libgui/src/welcome-wizard.ui	Sat Aug 18 18:10:09 2012 -0400
@@ -0,0 +1,354 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>welcome_wizard</class>
+ <widget class="QDialog" name="welcome_wizard">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>647</width>
+    <height>400</height>
+   </rect>
+  </property>
+  <property name="minimumSize">
+   <size>
+    <width>647</width>
+    <height>400</height>
+   </size>
+  </property>
+  <property name="maximumSize">
+   <size>
+    <width>647</width>
+    <height>400</height>
+   </size>
+  </property>
+  <property name="windowTitle">
+   <string>Welcome to GNU Octave</string>
+  </property>
+  <layout class="QVBoxLayout" name="verticalLayout_2">
+   <item>
+    <widget class="QStackedWidget" name="stackedWidget">
+     <property name="currentIndex">
+      <number>4</number>
+     </property>
+     <widget class="QWidget" name="page">
+      <layout class="QVBoxLayout" name="verticalLayout">
+       <item>
+        <widget class="QLabel" name="label">
+         <property name="text">
+          <string>It appears that you have launched Octave GUI for the first time on this computer, since no configuration file could be found at '~/.octave-gui'. This wizard will guide you through the essential settings you should make before you can start using Octave GUI. If you want to transfer your settings you have previously made just close this dialog and copy over the settings file to your home folder. The presence of that file will automatically be detected and will skip this wizard. IMPORTANT: This wizard is not fully functional yet. Just click your way to the end and it will create a standard settings file.</string>
+         </property>
+         <property name="alignment">
+          <set>Qt::AlignJustify|Qt::AlignVCenter</set>
+         </property>
+         <property name="wordWrap">
+          <bool>true</bool>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <spacer name="verticalSpacer">
+         <property name="orientation">
+          <enum>Qt::Vertical</enum>
+         </property>
+         <property name="sizeHint" stdset="0">
+          <size>
+           <width>20</width>
+           <height>218</height>
+          </size>
+         </property>
+        </spacer>
+       </item>
+       <item>
+        <layout class="QHBoxLayout" name="horizontalLayout_2">
+         <item>
+          <spacer name="horizontalSpacer">
+           <property name="orientation">
+            <enum>Qt::Horizontal</enum>
+           </property>
+           <property name="sizeHint" stdset="0">
+            <size>
+             <width>40</width>
+             <height>20</height>
+            </size>
+           </property>
+          </spacer>
+         </item>
+         <item>
+          <widget class="QPushButton" name="nextButton1">
+           <property name="text">
+            <string>Next</string>
+           </property>
+          </widget>
+         </item>
+        </layout>
+       </item>
+      </layout>
+     </widget>
+     <widget class="QWidget" name="page_2">
+      <layout class="QVBoxLayout" name="verticalLayout_4">
+       <item>
+        <layout class="QVBoxLayout" name="verticalLayout_3">
+         <item>
+          <spacer name="verticalSpacer_2">
+           <property name="orientation">
+            <enum>Qt::Vertical</enum>
+           </property>
+           <property name="sizeHint" stdset="0">
+            <size>
+             <width>20</width>
+             <height>40</height>
+            </size>
+           </property>
+          </spacer>
+         </item>
+         <item>
+          <layout class="QHBoxLayout" name="horizontalLayout">
+           <item>
+            <widget class="QPushButton" name="previousButton2">
+             <property name="text">
+              <string>Previous</string>
+             </property>
+            </widget>
+           </item>
+           <item>
+            <spacer name="horizontalSpacer_2">
+             <property name="orientation">
+              <enum>Qt::Horizontal</enum>
+             </property>
+             <property name="sizeHint" stdset="0">
+              <size>
+               <width>40</width>
+               <height>20</height>
+              </size>
+             </property>
+            </spacer>
+           </item>
+           <item>
+            <widget class="QPushButton" name="nextButton2">
+             <property name="text">
+              <string>Next</string>
+             </property>
+            </widget>
+           </item>
+          </layout>
+         </item>
+        </layout>
+       </item>
+      </layout>
+     </widget>
+     <widget class="QWidget" name="page_3">
+      <layout class="QHBoxLayout" name="horizontalLayout_4">
+       <item>
+        <layout class="QVBoxLayout" name="verticalLayout_5">
+         <item>
+          <spacer name="verticalSpacer_3">
+           <property name="orientation">
+            <enum>Qt::Vertical</enum>
+           </property>
+           <property name="sizeHint" stdset="0">
+            <size>
+             <width>20</width>
+             <height>40</height>
+            </size>
+           </property>
+          </spacer>
+         </item>
+         <item>
+          <layout class="QHBoxLayout" name="horizontalLayout_3">
+           <item>
+            <widget class="QPushButton" name="previousButton3">
+             <property name="text">
+              <string>Previous</string>
+             </property>
+            </widget>
+           </item>
+           <item>
+            <spacer name="horizontalSpacer_3">
+             <property name="orientation">
+              <enum>Qt::Horizontal</enum>
+             </property>
+             <property name="sizeHint" stdset="0">
+              <size>
+               <width>40</width>
+               <height>20</height>
+              </size>
+             </property>
+            </spacer>
+           </item>
+           <item>
+            <widget class="QPushButton" name="nextButton3">
+             <property name="text">
+              <string>Next</string>
+             </property>
+            </widget>
+           </item>
+          </layout>
+         </item>
+        </layout>
+       </item>
+      </layout>
+     </widget>
+     <widget class="QWidget" name="page_4">
+      <layout class="QHBoxLayout" name="horizontalLayout_6">
+       <item>
+        <layout class="QVBoxLayout" name="verticalLayout_6">
+         <item>
+          <spacer name="verticalSpacer_4">
+           <property name="orientation">
+            <enum>Qt::Vertical</enum>
+           </property>
+           <property name="sizeHint" stdset="0">
+            <size>
+             <width>20</width>
+             <height>40</height>
+            </size>
+           </property>
+          </spacer>
+         </item>
+         <item>
+          <layout class="QHBoxLayout" name="horizontalLayout_5">
+           <item>
+            <widget class="QPushButton" name="previousButton4">
+             <property name="text">
+              <string>Previous</string>
+             </property>
+            </widget>
+           </item>
+           <item>
+            <spacer name="horizontalSpacer_4">
+             <property name="orientation">
+              <enum>Qt::Horizontal</enum>
+             </property>
+             <property name="sizeHint" stdset="0">
+              <size>
+               <width>40</width>
+               <height>20</height>
+              </size>
+             </property>
+            </spacer>
+           </item>
+           <item>
+            <widget class="QPushButton" name="nextButton4">
+             <property name="text">
+              <string>Next</string>
+             </property>
+            </widget>
+           </item>
+          </layout>
+         </item>
+        </layout>
+       </item>
+      </layout>
+     </widget>
+     <widget class="QWidget" name="page_5">
+      <layout class="QHBoxLayout" name="horizontalLayout_8">
+       <item>
+        <layout class="QVBoxLayout" name="verticalLayout_7">
+         <item>
+          <widget class="QLabel" name="label_2">
+           <property name="font">
+            <font>
+             <pointsize>20</pointsize>
+            </font>
+           </property>
+           <property name="text">
+            <string>Welcome to Octave!</string>
+           </property>
+          </widget>
+         </item>
+         <item>
+          <widget class="QLabel" name="label_3">
+           <property name="text">
+            <string>This is the development version of Octave with the first official GUI.</string>
+           </property>
+           <property name="wordWrap">
+            <bool>true</bool>
+           </property>
+          </widget>
+         </item>
+         <item>
+          <widget class="QLabel" name="label_4">
+           <property name="text">
+            <string>You seem to run Octave GUI for the first time on this computer. This assistant will help you to configure this software installation. Click 'Finish' to write a configuration file and launch Octave GUI.</string>
+           </property>
+           <property name="wordWrap">
+            <bool>true</bool>
+           </property>
+          </widget>
+         </item>
+         <item>
+          <spacer name="verticalSpacer_5">
+           <property name="orientation">
+            <enum>Qt::Vertical</enum>
+           </property>
+           <property name="sizeHint" stdset="0">
+            <size>
+             <width>20</width>
+             <height>40</height>
+            </size>
+           </property>
+          </spacer>
+         </item>
+         <item>
+          <layout class="QHBoxLayout" name="horizontalLayout_7">
+           <item>
+            <widget class="QPushButton" name="previousButton5">
+             <property name="enabled">
+              <bool>false</bool>
+             </property>
+             <property name="text">
+              <string>Previous</string>
+             </property>
+            </widget>
+           </item>
+           <item>
+            <spacer name="horizontalSpacer_5">
+             <property name="orientation">
+              <enum>Qt::Horizontal</enum>
+             </property>
+             <property name="sizeHint" stdset="0">
+              <size>
+               <width>40</width>
+               <height>20</height>
+              </size>
+             </property>
+            </spacer>
+           </item>
+           <item>
+            <widget class="QPushButton" name="finishButton">
+             <property name="text">
+              <string>Finish</string>
+             </property>
+            </widget>
+           </item>
+          </layout>
+         </item>
+        </layout>
+       </item>
+      </layout>
+     </widget>
+    </widget>
+   </item>
+  </layout>
+ </widget>
+ <resources/>
+ <connections>
+  <connection>
+   <sender>finishButton</sender>
+   <signal>clicked()</signal>
+   <receiver>welcome_wizard</receiver>
+   <slot>accept()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>577</x>
+     <y>372</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>323</x>
+     <y>199</y>
+    </hint>
+   </hints>
+  </connection>
+ </connections>
+</ui>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/libgui/src/workspace-model.cc	Sat Aug 18 18:10:09 2012 -0400
@@ -0,0 +1,224 @@
+/* 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 <QTreeWidget>
+#include <QTime>
+
+#include <list>
+
+#include <symtab.h>
+
+#include "workspace-model.h"
+#include "octave-link.h"
+
+workspace_model::workspace_model(QObject *parent)
+  : QAbstractItemModel(parent), octave_event_observer ()
+{
+  QList<QVariant> rootData;
+  rootData << tr ("Name") << tr ("Type") << tr("Dimension") << tr ("Value");
+  _rootItem = new tree_item(rootData);
+
+  insert_top_level_item(0, new tree_item ("Local"));
+  insert_top_level_item(1, new tree_item ("Global"));
+  insert_top_level_item(2, new tree_item ("Persistent"));
+  insert_top_level_item(3, new tree_item ("Hidden"));
+
+  connect(&_update_workspace_model_timer,
+          SIGNAL (timeout ()),
+          this,
+          SLOT (request_update_workspace()));
+
+  _update_workspace_model_timer.setInterval (500);
+  _update_workspace_model_timer.setSingleShot (true);
+  _update_workspace_model_timer.start ();
+}
+
+workspace_model::~workspace_model()
+{
+  delete _rootItem;
+}
+
+void
+workspace_model::request_update_workspace ()
+{
+  octave_link::instance ()
+      ->post_event (new octave_update_workspace_event (*this));
+}
+
+void
+workspace_model::event_accepted (octave_event *e)
+{
+  if (dynamic_cast <octave_update_workspace_event*> (e))
+    {
+      std::list < symbol_table::symbol_record > symbolTable = symbol_table::all_variables ();
+
+      _symbol_information.clear ();
+      for (std::list < symbol_table::symbol_record > ::iterator iterator = symbolTable.begin ();
+         iterator != symbolTable.end (); iterator++)
+      {
+        symbol_information symbolInformation;
+        symbolInformation.from_symbol_record (*iterator);
+        _symbol_information.push_back (symbolInformation);
+      }
+
+      beginResetModel();
+      top_level_item (0)->delete_child_items ();
+      top_level_item (1)->delete_child_items ();
+      top_level_item (2)->delete_child_items ();
+      top_level_item (3)->delete_child_items ();
+
+      foreach (const symbol_information& s, _symbol_information)
+        {
+          tree_item *child = new tree_item ();
+
+          child->set_data (0, s._symbol);
+          child->set_data (1, s._type);
+          child->set_data (2, s._dimension);
+          child->set_data (3, s._value);
+
+          switch (s._scope)
+            {
+              case symbol_information::local:       top_level_item (0)->add_child (child); break;
+              case symbol_information::global:      top_level_item (1)->add_child (child); break;
+              case symbol_information::persistent:  top_level_item (2)->add_child (child); break;
+              case symbol_information::hidden:      top_level_item (3)->add_child (child); break;
+            }
+        }
+
+      endResetModel();
+      emit model_changed();
+    }
+
+  // Post a new event in a given time.
+  // This prevents flooding the event queue when no events are being processed.
+  _update_workspace_model_timer.start ();
+  delete e;
+}
+
+void
+workspace_model::event_reject (octave_event *e)
+{
+  delete e;
+}
+
+QModelIndex
+workspace_model::index(int row, int column, const QModelIndex &parent) const
+{
+  if (!hasIndex(row, column, parent))
+    return QModelIndex();
+
+  tree_item *parentItem;
+
+  if (!parent.isValid())
+    parentItem = _rootItem;
+  else
+    parentItem = static_cast<tree_item*>(parent.internalPointer());
+
+  tree_item *childItem = parentItem->child(row);
+  if (childItem)
+    return createIndex(row, column, childItem);
+  else
+    return QModelIndex();
+}
+
+QModelIndex
+workspace_model::parent(const QModelIndex &index) const
+{
+  if (!index.isValid())
+    return QModelIndex();
+
+  tree_item *childItem = static_cast<tree_item*>(index.internalPointer());
+  tree_item *parentItem = childItem->parent();
+
+  if (parentItem == _rootItem)
+    return QModelIndex();
+
+  return createIndex(parentItem->row(), 0, parentItem);
+}
+
+int
+workspace_model::rowCount(const QModelIndex &parent) const
+{
+  tree_item *parentItem;
+  if (parent.column() > 0)
+    return 0;
+
+  if (!parent.isValid())
+    parentItem = _rootItem;
+  else
+    parentItem = static_cast<tree_item*>(parent.internalPointer());
+
+  return parentItem->child_count();
+}
+
+int
+workspace_model::columnCount(const QModelIndex &parent) const
+{
+  if (parent.isValid())
+    return static_cast<tree_item*>(parent.internalPointer())->column_count();
+  else
+    return _rootItem->column_count();
+}
+
+void
+workspace_model::insert_top_level_item(int at, tree_item *treeItem)
+{
+  _rootItem->insert_child_item(at, treeItem);
+}
+
+tree_item *
+workspace_model::top_level_item (int at)
+{
+  return _rootItem->child(at);
+}
+
+Qt::ItemFlags
+workspace_model::flags(const QModelIndex &index) const
+{
+  if (!index.isValid())
+    return 0;
+
+  return Qt::ItemIsEnabled | Qt::ItemIsSelectable;
+}
+
+QVariant
+workspace_model::headerData(int section, Qt::Orientation orientation, int role) const
+{
+  if (orientation == Qt::Horizontal && role == Qt::DisplayRole)
+    return _rootItem->data(section);
+
+  return QVariant();
+}
+
+QVariant
+workspace_model::data(const QModelIndex &index, int role) const
+{
+  if (!index.isValid())
+    return QVariant();
+
+  if (role != Qt::DisplayRole)
+    return QVariant();
+
+  tree_item *item = static_cast<tree_item*>(index.internalPointer());
+
+  return item->data(index.column());
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/libgui/src/workspace-model.h	Sat Aug 18 18:10:09 2012 -0400
@@ -0,0 +1,150 @@
+/* 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/>.
+ */
+
+#ifndef WORKSPACEMODEL_H
+#define WORKSPACEMODEL_H
+
+// Qt includes
+#include <QAbstractItemModel>
+#include <QVector>
+#include <QSemaphore>
+#include <QTimer>
+
+#include "symbol-information.h"
+#include "octave-event-observer.h"
+
+class tree_item
+{
+public:
+  tree_item (const QList<QVariant> &data, tree_item *parent = 0) {
+    _parent_item = parent;
+    _item_data = data;
+  }
+
+  tree_item (QVariant data = QVariant(), tree_item *parent = 0) {
+    QList<QVariant> variantList;
+    variantList << data << QVariant () << QVariant () << QVariant ();
+    _parent_item = parent;
+    _item_data = variantList;
+  }
+
+  ~tree_item () {
+     qDeleteAll (_child_items);
+  }
+
+  void insert_child_item (int at, tree_item *item) {
+    item->_parent_item = this;
+    _child_items.insert (at, item);
+  }
+
+  void add_child (tree_item *item) {
+    item->_parent_item = this;
+    _child_items.append (item);
+  }
+
+  void delete_child_items () {
+      qDeleteAll (_child_items);
+      _child_items.clear ();
+  }
+
+  void remove_child (tree_item *item) {
+    _child_items.removeAll (item);
+  }
+
+  QVariant data (int column) const
+  {
+    return _item_data[column];
+  }
+
+  void set_data (int column, QVariant data)
+  {
+    _item_data[column] = data;
+  }
+
+  tree_item *child (int row) {
+    return _child_items[row];
+  }
+
+  int child_count () const {
+    return _child_items.count();
+  }
+
+  int column_count () const
+  {
+    return _item_data.count();
+  }
+
+  int row () const {
+    if (_parent_item)
+      return _parent_item->_child_items.indexOf (const_cast<tree_item*>(this));
+
+    return 0;
+  }
+
+  tree_item *parent ()
+  {
+    return _parent_item;
+  }
+
+private:
+  QList<tree_item*> _child_items;
+  QList<QVariant> _item_data;
+  tree_item *_parent_item;
+};
+
+class workspace_model
+    : public QAbstractItemModel, public octave_event_observer
+{
+  Q_OBJECT
+
+public:
+  workspace_model (QObject *parent = 0);
+  ~workspace_model ();
+
+  void event_accepted (octave_event *e);
+  void event_reject (octave_event *e);
+
+  QVariant data (const QModelIndex &index, int role) const;
+  Qt::ItemFlags flags (const QModelIndex &index) const;
+  QVariant headerData (int section, Qt::Orientation orientation,
+                       int role = Qt::DisplayRole) const;
+  QModelIndex index (int row, int column,
+                    const QModelIndex &parent = QModelIndex ()) const;
+  QModelIndex parent (const QModelIndex &index) const;
+  int rowCount (const QModelIndex &parent = QModelIndex ()) const;
+  int columnCount (const QModelIndex &parent = QModelIndex ()) const;
+
+  void insert_top_level_item (int at, tree_item *treeItem);
+  tree_item *top_level_item (int at);
+
+public slots:
+  void request_update_workspace ();
+
+signals:
+  void model_changed ();
+
+private:
+  /** Timer for periodically updating the workspace model from the current
+    * symbol information. */
+  QTimer _update_workspace_model_timer;
+
+  /** Stores the current symbol information. */
+  QList <symbol_information> _symbol_information;
+  tree_item *_rootItem;
+};
+
+#endif // WORKSPACEMODEL_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/libgui/src/workspace-view.cc	Sat Aug 18 18:10:09 2012 -0400
@@ -0,0 +1,216 @@
+/* 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 "workspace-view.h"
+#include "resource-manager.h"
+#include <QHBoxLayout>
+#include <QVBoxLayout>
+#include <QPushButton>
+
+workspace_view::workspace_view (QWidget * parent) : QDockWidget
+  (parent)
+{
+  setObjectName ("WorkspaceView");
+  setWindowTitle (tr ("Workspace"));
+
+  // Create a new workspace model.
+  _workspace_model = new workspace_model ();
+
+  _workspace_tree_view = new QTreeView (this);            // Create a new tree view.
+  _workspace_tree_view->setHeaderHidden (false);          // Do not show header columns.
+  _workspace_tree_view->setAlternatingRowColors (true);   // Activate alternating row colors.
+  _workspace_tree_view->setAnimated (false);              // Deactivate animations because of strange glitches.
+  _workspace_tree_view->setTextElideMode (Qt::ElideRight);// Elide text to the right side of the cells.
+  _workspace_tree_view->setWordWrap (false);              // No wordwrapping in cells.
+  _workspace_tree_view->setModel (_workspace_model);      // Assign model.
+
+  // Set an empty widget, so we can assign a layout to it.
+  setWidget (new QWidget (this));
+
+  // Create a new layout and add widgets to it.
+  QVBoxLayout *layout = new QVBoxLayout ();
+  layout->addWidget (_workspace_tree_view);
+  layout->setMargin (2);
+
+  // Set the empty widget to have our layout.
+  widget ()->setLayout (layout);
+
+  // Initialize collapse/expand state of the workspace subcategories.
+
+  QSettings *settings = resource_manager::get_settings ();
+
+  // FIXME -- what should happen if settings is 0?
+
+  _explicit_collapse.local      = settings->value ("workspaceview/local_collapsed", false).toBool ();
+  _explicit_collapse.global     = settings->value ("workspaceview/global_collapsed", false).toBool ();;
+  _explicit_collapse.persistent = settings->value ("workspaceview/persistent_collapsed", false).toBool ();;
+  _explicit_collapse.hidden     = settings->value ("workspaceview/hidden_collapsed", false).toBool ();;
+
+  // Connect signals and slots.
+  connect (this, SIGNAL (visibilityChanged (bool)),
+           this, SLOT(handle_visibility_changed (bool)));
+
+  connect (_workspace_model, SIGNAL (model_changed ()),
+           this, SLOT (model_changed ()));
+
+  connect (_workspace_tree_view, SIGNAL (collapsed (QModelIndex)),
+           this, SLOT (collapse_requested (QModelIndex)));
+  connect (_workspace_tree_view, SIGNAL (expanded (QModelIndex)),
+           this, SLOT (expand_requested (QModelIndex)));
+
+  connect (_workspace_tree_view, SIGNAL (doubleClicked (QModelIndex)),
+           this, SLOT (item_double_clicked (QModelIndex)));
+
+}
+
+workspace_view::~workspace_view ()
+{
+  QSettings *settings = resource_manager::get_settings ();
+
+  // FIXME -- what should happen if settings is 0?
+
+  settings->setValue("workspaceview/local_collapsed", _explicit_collapse.local);
+  settings->setValue("workspaceview/global_collapsed", _explicit_collapse.global);
+  settings->setValue("workspaceview/persistent_collapsed", _explicit_collapse.persistent);
+  settings->setValue("workspaceview/hidden_collapsed", _explicit_collapse.hidden);
+}
+
+void
+workspace_view::handle_visibility_changed (bool visible)
+{
+  if (visible)
+    emit active_changed (true);
+}
+
+void
+workspace_view::model_changed ()
+{
+  // This code is very quirky and requires some explanation.
+  // Usually, we should not deal with collapsing or expanding ourselves,
+  // because the view itself determines (based on the model) whether it
+  // is appropriate to collapse or expand items.
+  //
+  // Now, the logic requires that we update our model item by item, which
+  // would make it work correctly, but this is extremely slow and scales
+  // very bad (O(n^2)). That's why we throw away our model and rebuild it
+  // completely from scratch (O(n)), which is why the view renders all
+  // displayed data as invalid.
+  //
+  // In order to make collapsing/expanding work again, we need to set
+  // flags ourselves here.
+
+  QModelIndex local_model_index = _workspace_model->index (0, 0);
+  QModelIndex global_model_index = _workspace_model->index (1, 0);
+  QModelIndex persistent_model_index = _workspace_model->index (2, 0);
+  QModelIndex hidden_model_index = _workspace_model->index (3, 0);
+
+  if (_explicit_collapse.local) {
+    _workspace_tree_view->collapse (local_model_index);
+  } else {
+    _workspace_tree_view->expand (local_model_index);
+  }
+
+  if (_explicit_collapse.global) {
+    _workspace_tree_view->collapse (global_model_index);
+  } else {
+    _workspace_tree_view->expand (global_model_index);
+  }
+
+  if (_explicit_collapse.persistent) {
+    _workspace_tree_view->collapse (persistent_model_index);
+  } else {
+    _workspace_tree_view->expand (persistent_model_index);
+  }
+
+  if (_explicit_collapse.hidden) {
+    _workspace_tree_view->collapse (hidden_model_index);
+  } else {
+    _workspace_tree_view->expand (hidden_model_index);
+  }
+}
+
+void
+workspace_view::collapse_requested (QModelIndex index)
+{
+  // This code is very quirky and requires some explanation.
+  // Usually, we should not deal with collapsing or expanding ourselves,
+  // because the view itself determines (based on the model) whether it
+  // is appropriate to collapse or expand items.
+  //
+  // Now, the logic requires that we update our model item by item, which
+  // would make it work correctly, but this is extremely slow and scales
+  // very bad (O(n^2)). That's why we throw away our model and rebuild it
+  // completely from scratch (O(n)), which is why the view renders all
+  // displayed data as invalid.
+  //
+  // In order to make collapsing/expanding work again, we need to set
+  // flags ourselves here.
+  QMap<int, QVariant> item_data
+      = _workspace_model->itemData (index);
+
+  if (item_data[0] == "Local")
+    _explicit_collapse.local = true;
+  if (item_data[0] == "Global")
+    _explicit_collapse.global = true;
+  if (item_data[0] == "Persistent")
+    _explicit_collapse.persistent = true;
+  if (item_data[0] == "Hidden")
+    _explicit_collapse.hidden = true;
+}
+
+void
+workspace_view::expand_requested (QModelIndex index)
+{
+  // This code is very quirky and requires some explanation.
+  // Usually, we should not deal with collapsing or expanding ourselves,
+  // because the view itself determines (based on the model) whether it
+  // is appropriate to collapse or expand items.
+  //
+  // Now, the logic requires that we update our model item by item, which
+  // would make it work correctly, but this is extremely slow and scales
+  // very bad (O(n^2)). That's why we throw away our model and rebuild it
+  // completely from scratch (O(n)), which is why the view renders all
+  // displayed data as invalid.
+  //
+  // In order to make collapsing/expanding work again, we need to do set
+  // flags ourselves here.
+  QMap<int, QVariant> item_data
+      = _workspace_model->itemData (index);
+
+  if (item_data[0] == "Local")
+    _explicit_collapse.local = false;
+  if (item_data[0] == "Global")
+    _explicit_collapse.global = false;
+  if (item_data[0] == "Persistent")
+    _explicit_collapse.persistent = false;
+  if (item_data[0] == "Hidden")
+    _explicit_collapse.hidden = false;
+}
+
+void
+workspace_view::item_double_clicked (QModelIndex index)
+{
+  Q_UNUSED (index);
+  // TODO: Implement opening a dialog that allows the user to change a variable in the workspace.
+}
+
+void
+workspace_view::closeEvent (QCloseEvent *event)
+{
+  emit active_changed (false);
+  QDockWidget::closeEvent (event);
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/libgui/src/workspace-view.h	Sat Aug 18 18:10:09 2012 -0400
@@ -0,0 +1,65 @@
+/* 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/>.
+ */
+
+#ifndef WORKSPACEVIEW_H
+#define WORKSPACEVIEW_H
+
+#include <QDockWidget>
+#include <QTreeView>
+#include <QSemaphore>
+#include "octave-link.h"
+#include "workspace-model.h"
+
+class workspace_view : public QDockWidget
+{
+  Q_OBJECT
+public:
+  workspace_view (QWidget * parent = 0);
+  ~workspace_view ();
+
+public slots:
+  void handle_visibility_changed (bool visible);
+  void model_changed ();
+
+signals:
+  /** Custom signal that tells if a user has clicke away that dock widget. */
+  void active_changed (bool active);
+
+protected:
+  void closeEvent (QCloseEvent *event);
+
+protected slots:
+  void collapse_requested (QModelIndex index);
+  void expand_requested (QModelIndex index);
+  void item_double_clicked (QModelIndex index);
+
+private:
+  QTreeView *_workspace_tree_view;
+
+  /** Stores the current workspace model. */
+  workspace_model *_workspace_model;
+
+  struct
+  {
+    bool local;
+    bool global;
+    bool persistent;
+    bool hidden;
+  } _explicit_collapse;
+};
+
+#endif // WORKSPACEVIEW_H
--- a/src/Makefile.am	Sat Aug 18 16:23:39 2012 -0400
+++ b/src/Makefile.am	Sat Aug 18 18:10:09 2012 -0400
@@ -78,8 +78,8 @@
 
 if AMCOND_BUILD_GUI
   octave_SOURCES = main.cc
-  OCTAVE_GUI_LIBS = ../gui/src/liboctgui.la
-  OCTAVE_GUI_CPPFLAGS = -I$(top_srcdir)/gui/src
+  OCTAVE_GUI_LIBS = ../libgui/src/liboctgui.la
+  OCTAVE_GUI_CPPFLAGS = -I$(top_srcdir)/libgui/src
 else
   octave_SOURCES = main-cli.cc
   OCTAVE_GUI_LIBS =
@@ -144,4 +144,4 @@
 .PHONY: make-version-links remove-version-links
 
 CLEANFILES = \
-  $(bin_SCRIPTS) \
+  $(bin_SCRIPTS)
--- a/test/fntests.m	Sat Aug 18 16:23:39 2012 -0400
+++ b/test/fntests.m	Sat Aug 18 18:10:09 2012 -0400
@@ -41,7 +41,7 @@
   testdirs = {currdir, srcdir};
 endif
 
-src_tree = canonicalize_file_name (fullfile (topsrcdir, "src"));
+src_tree = canonicalize_file_name (fullfile (topsrcdir, "libinterp"));
 liboctave_tree = canonicalize_file_name (fullfile (topsrcdir, "liboctave"));
 script_tree = canonicalize_file_name (fullfile (topsrcdir, "scripts"));
 local_script_tree = canonicalize_file_name (fullfile (currdir, "../scripts"));