Added source navigation function for Python 2, Python 3 and Ruby sources.

Mon, 03 Oct 2011 18:52:38 +0200

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Mon, 03 Oct 2011 18:52:38 +0200
changeset 1358
c1622c708cd9
parent 1357
68fb0a7677ff
child 1360
16d8232fc0fa

Added source navigation function for Python 2, Python 3 and Ruby sources.

APIs/Python3/eric5.api file | annotate | diff | comparison | revisions
APIs/Python3/eric5.bas file | annotate | diff | comparison | revisions
Documentation/Help/source.qch file | annotate | diff | comparison | revisions
Documentation/Help/source.qhp file | annotate | diff | comparison | revisions
Documentation/Source/eric5.Plugins.ViewManagerPlugins.Listspace.Listspace.html file | annotate | diff | comparison | revisions
Documentation/Source/eric5.Plugins.ViewManagerPlugins.Tabview.Tabview.html file | annotate | diff | comparison | revisions
Documentation/Source/eric5.Utilities.ModuleParser.html file | annotate | diff | comparison | revisions
Documentation/Source/index-eric5.Plugins.ViewManagerPlugins.html file | annotate | diff | comparison | revisions
Documentation/Source/index-eric5.Plugins.html file | annotate | diff | comparison | revisions
Documentation/Source/index-eric5.QScintilla.html file | annotate | diff | comparison | revisions
Plugins/ViewManagerPlugins/Listspace/Listspace.py file | annotate | diff | comparison | revisions
Plugins/ViewManagerPlugins/Tabview/Tabview.py file | annotate | diff | comparison | revisions
QScintilla/EditorAssembly.py file | annotate | diff | comparison | revisions
Utilities/ModuleParser.py file | annotate | diff | comparison | revisions
ViewManager/ViewManager.py file | annotate | diff | comparison | revisions
changelog file | annotate | diff | comparison | revisions
eric5.e4p file | annotate | diff | comparison | revisions
diff -r 68fb0a7677ff -r c1622c708cd9 APIs/Python3/eric5.api
--- a/APIs/Python3/eric5.api	Mon Oct 03 16:08:32 2011 +0200
+++ b/APIs/Python3/eric5.api	Mon Oct 03 18:52:38 2011 +0200
@@ -3081,24 +3081,6 @@
 eric5.Plugins.PluginVmListspace.pyqtApi?7
 eric5.Plugins.PluginVmListspace.shortDescription?7
 eric5.Plugins.PluginVmListspace.version?7
-eric5.Plugins.PluginVmMdiArea.VmMdiAreaPlugin.activate?4()
-eric5.Plugins.PluginVmMdiArea.VmMdiAreaPlugin.deactivate?4()
-eric5.Plugins.PluginVmMdiArea.VmMdiAreaPlugin?1(ui)
-eric5.Plugins.PluginVmMdiArea.author?7
-eric5.Plugins.PluginVmMdiArea.autoactivate?7
-eric5.Plugins.PluginVmMdiArea.className?7
-eric5.Plugins.PluginVmMdiArea.deactivateable?7
-eric5.Plugins.PluginVmMdiArea.displayString?7
-eric5.Plugins.PluginVmMdiArea.error?7
-eric5.Plugins.PluginVmMdiArea.longDescription?7
-eric5.Plugins.PluginVmMdiArea.name?7
-eric5.Plugins.PluginVmMdiArea.packageName?7
-eric5.Plugins.PluginVmMdiArea.pluginType?7
-eric5.Plugins.PluginVmMdiArea.pluginTypename?7
-eric5.Plugins.PluginVmMdiArea.previewPix?4()
-eric5.Plugins.PluginVmMdiArea.pyqtApi?7
-eric5.Plugins.PluginVmMdiArea.shortDescription?7
-eric5.Plugins.PluginVmMdiArea.version?7
 eric5.Plugins.PluginVmTabview.VmTabviewPlugin.activate?4()
 eric5.Plugins.PluginVmTabview.VmTabviewPlugin.deactivate?4()
 eric5.Plugins.PluginVmTabview.VmTabviewPlugin?1(ui)
@@ -4252,6 +4234,7 @@
 eric5.Plugins.ViewManagerPlugins.Listspace.Listspace.Listspace.tile?4()
 eric5.Plugins.ViewManagerPlugins.Listspace.Listspace.Listspace?1(parent)
 eric5.Plugins.ViewManagerPlugins.Listspace.Listspace.StackedWidget.addWidget?4(editor)
+eric5.Plugins.ViewManagerPlugins.Listspace.Listspace.StackedWidget.currentWidget?4()
 eric5.Plugins.ViewManagerPlugins.Listspace.Listspace.StackedWidget.firstEditor?4()
 eric5.Plugins.ViewManagerPlugins.Listspace.Listspace.StackedWidget.hasEditor?4(editor)
 eric5.Plugins.ViewManagerPlugins.Listspace.Listspace.StackedWidget.nextTab?4()
@@ -4260,36 +4243,6 @@
 eric5.Plugins.ViewManagerPlugins.Listspace.Listspace.StackedWidget.setCurrentIndex?4(index)
 eric5.Plugins.ViewManagerPlugins.Listspace.Listspace.StackedWidget.setCurrentWidget?4(widget)
 eric5.Plugins.ViewManagerPlugins.Listspace.Listspace.StackedWidget?1(parent)
-eric5.Plugins.ViewManagerPlugins.MdiArea.MdiArea.MdiArea._addView?5(win, fn=None, noName="")
-eric5.Plugins.ViewManagerPlugins.MdiArea.MdiArea.MdiArea._initWindowActions?5()
-eric5.Plugins.ViewManagerPlugins.MdiArea.MdiArea.MdiArea._modificationStatusChanged?5(m, editor)
-eric5.Plugins.ViewManagerPlugins.MdiArea.MdiArea.MdiArea._removeAllViews?5()
-eric5.Plugins.ViewManagerPlugins.MdiArea.MdiArea.MdiArea._removeView?5(win)
-eric5.Plugins.ViewManagerPlugins.MdiArea.MdiArea.MdiArea._showView?5(win, fn=None)
-eric5.Plugins.ViewManagerPlugins.MdiArea.MdiArea.MdiArea._syntaxErrorToggled?5(editor)
-eric5.Plugins.ViewManagerPlugins.MdiArea.MdiArea.MdiArea.activeWindow?4()
-eric5.Plugins.ViewManagerPlugins.MdiArea.MdiArea.MdiArea.bookmarkToggled?7
-eric5.Plugins.ViewManagerPlugins.MdiArea.MdiArea.MdiArea.breakpointToggled?7
-eric5.Plugins.ViewManagerPlugins.MdiArea.MdiArea.MdiArea.canCascade?4()
-eric5.Plugins.ViewManagerPlugins.MdiArea.MdiArea.MdiArea.canSplit?4()
-eric5.Plugins.ViewManagerPlugins.MdiArea.MdiArea.MdiArea.canTile?4()
-eric5.Plugins.ViewManagerPlugins.MdiArea.MdiArea.MdiArea.cascade?4()
-eric5.Plugins.ViewManagerPlugins.MdiArea.MdiArea.MdiArea.changeCaption?7
-eric5.Plugins.ViewManagerPlugins.MdiArea.MdiArea.MdiArea.checkActions?7
-eric5.Plugins.ViewManagerPlugins.MdiArea.MdiArea.MdiArea.cursorChanged?7
-eric5.Plugins.ViewManagerPlugins.MdiArea.MdiArea.MdiArea.editorChanged?7
-eric5.Plugins.ViewManagerPlugins.MdiArea.MdiArea.MdiArea.editorClosed?7
-eric5.Plugins.ViewManagerPlugins.MdiArea.MdiArea.MdiArea.editorClosedEd?7
-eric5.Plugins.ViewManagerPlugins.MdiArea.MdiArea.MdiArea.editorOpened?7
-eric5.Plugins.ViewManagerPlugins.MdiArea.MdiArea.MdiArea.editorOpenedEd?7
-eric5.Plugins.ViewManagerPlugins.MdiArea.MdiArea.MdiArea.editorSaved?7
-eric5.Plugins.ViewManagerPlugins.MdiArea.MdiArea.MdiArea.eventFilter?4(watched, event)
-eric5.Plugins.ViewManagerPlugins.MdiArea.MdiArea.MdiArea.lastEditorClosed?7
-eric5.Plugins.ViewManagerPlugins.MdiArea.MdiArea.MdiArea.setEditorName?4(editor, newName)
-eric5.Plugins.ViewManagerPlugins.MdiArea.MdiArea.MdiArea.showWindowMenu?4(windowMenu)
-eric5.Plugins.ViewManagerPlugins.MdiArea.MdiArea.MdiArea.syntaxerrorToggled?7
-eric5.Plugins.ViewManagerPlugins.MdiArea.MdiArea.MdiArea.tile?4()
-eric5.Plugins.ViewManagerPlugins.MdiArea.MdiArea.MdiArea?1(parent)
 eric5.Plugins.ViewManagerPlugins.Tabview.Tabview.TabBar.dragEnterEvent?4(event)
 eric5.Plugins.ViewManagerPlugins.Tabview.Tabview.TabBar.dropEvent?4(event)
 eric5.Plugins.ViewManagerPlugins.Tabview.Tabview.TabBar.mouseMoveEvent?4(event)
@@ -4304,10 +4257,12 @@
 eric5.Plugins.ViewManagerPlugins.Tabview.Tabview.TabWidget.currentWidget?4()
 eric5.Plugins.ViewManagerPlugins.Tabview.Tabview.TabWidget.hasEditor?4(editor)
 eric5.Plugins.ViewManagerPlugins.Tabview.Tabview.TabWidget.hasEditors?4()
+eric5.Plugins.ViewManagerPlugins.Tabview.Tabview.TabWidget.indexOf?4(object)
 eric5.Plugins.ViewManagerPlugins.Tabview.Tabview.TabWidget.insertWidget?4(index, editor, title)
 eric5.Plugins.ViewManagerPlugins.Tabview.Tabview.TabWidget.mouseDoubleClickEvent?4(event)
 eric5.Plugins.ViewManagerPlugins.Tabview.Tabview.TabWidget.relocateTab?4(sourceId, sourceIndex, targetIndex)
 eric5.Plugins.ViewManagerPlugins.Tabview.Tabview.TabWidget.removeWidget?4(object)
+eric5.Plugins.ViewManagerPlugins.Tabview.Tabview.TabWidget.setCurrentWidget?4(editor)
 eric5.Plugins.ViewManagerPlugins.Tabview.Tabview.TabWidget.showIndicator?4(on)
 eric5.Plugins.ViewManagerPlugins.Tabview.Tabview.TabWidget?1(vm)
 eric5.Plugins.ViewManagerPlugins.Tabview.Tabview.Tabview._addView?5(win, fn=None, noName="")
@@ -5615,6 +5570,8 @@
 eric5.QScintilla.Editor.Editor?1(dbs, fn=None, vm=None, filetype="", editor=None, tv=None)
 eric5.QScintilla.Editor.EditorAutoCompletionListID?7
 eric5.QScintilla.Editor.TemplateCompletionListID?7
+eric5.QScintilla.EditorAssembly.EditorAssembly.getEditor?4()
+eric5.QScintilla.EditorAssembly.EditorAssembly?1(dbs, fn=None, vm=None, filetype="", editor=None, tv=None)
 eric5.QScintilla.Exporters.ExporterBase.ExporterBase._getFileName?5(filter)
 eric5.QScintilla.Exporters.ExporterBase.ExporterBase.exportSource?4()
 eric5.QScintilla.Exporters.ExporterBase.ExporterBase?1(editor, parent=None)
@@ -6693,12 +6650,14 @@
 eric5.Utilities.ModuleParser.Module.getType?4()
 eric5.Utilities.ModuleParser.Module.scan?4(src)
 eric5.Utilities.ModuleParser.Module?1(name, file=None, type=None)
+eric5.Utilities.ModuleParser.PARSEABLE_TYPES?7
 eric5.Utilities.ModuleParser.PTL_SOURCE?7
 eric5.Utilities.ModuleParser.RB_SOURCE?7
 eric5.Utilities.ModuleParser.RbModule.addClass?4(name, _class)
 eric5.Utilities.ModuleParser.RbModule?1(module, name, file, lineno)
 eric5.Utilities.ModuleParser.SUPPORTED_TYPES?7
 eric5.Utilities.ModuleParser.TABWIDTH?7
+eric5.Utilities.ModuleParser.TYPE_MAPPING?7
 eric5.Utilities.ModuleParser.VisibilityBase.isPrivate?4()
 eric5.Utilities.ModuleParser.VisibilityBase.isProtected?4()
 eric5.Utilities.ModuleParser.VisibilityBase.isPublic?4()
@@ -6712,6 +6671,7 @@
 eric5.Utilities.ModuleParser._py_getnext?8
 eric5.Utilities.ModuleParser._rb_getnext?8
 eric5.Utilities.ModuleParser.find_module?4(name, path, extensions)
+eric5.Utilities.ModuleParser.getTypeFromTypeName?4(name)
 eric5.Utilities.ModuleParser.readModule?4(module, path=[], inpackage=False, basename="", extensions=None, caching=True)
 eric5.Utilities.ModuleParser.resetParsedModule?4(module, basename="")
 eric5.Utilities.ModuleParser.resetParsedModules?4()
diff -r 68fb0a7677ff -r c1622c708cd9 APIs/Python3/eric5.bas
--- a/APIs/Python3/eric5.bas	Mon Oct 03 16:08:32 2011 +0200
+++ b/APIs/Python3/eric5.bas	Mon Oct 03 18:52:38 2011 +0200
@@ -155,6 +155,7 @@
 EditWatchpointDialog QDialog Ui_EditWatchpointDialog
 Editor QsciScintillaCompat
 EditorAPIsPage ConfigurationPageBase Ui_EditorAPIsPage
+EditorAssembly QWidget
 EditorAutocompletionPage ConfigurationPageBase Ui_EditorAutocompletionPage
 EditorAutocompletionQScintillaPage ConfigurationPageBase Ui_EditorAutocompletionQScintillaPage
 EditorCalltipsPage ConfigurationPageBase Ui_EditorCalltipsPage
@@ -344,7 +345,6 @@
 Listspace QSplitter ViewManager
 LogViewer QTextEdit
 MasterPasswordEntryDialog QDialog Ui_MasterPasswordEntryDialog
-MdiArea QMdiArea ViewManager
 MercurialPage ConfigurationPageBase Ui_MercurialPage
 MessageBoxWizard QObject
 MessageBoxWizardDialog QDialog Ui_MessageBoxWizardDialog
@@ -616,7 +616,6 @@
 VirusTotalAPI QObject
 VisibilityMixin ClbrBaseClasses.ClbrVisibilityMixinBase
 VmListspacePlugin QObject
-VmMdiAreaPlugin QObject
 VmTabviewPlugin QObject
 WatchPointModel QAbstractItemModel
 WatchPointViewer QTreeView
diff -r 68fb0a7677ff -r c1622c708cd9 Documentation/Help/source.qch
Binary file Documentation/Help/source.qch has changed
diff -r 68fb0a7677ff -r c1622c708cd9 Documentation/Help/source.qhp
--- a/Documentation/Help/source.qhp	Mon Oct 03 16:08:32 2011 +0200
+++ b/Documentation/Help/source.qhp	Mon Oct 03 18:52:38 2011 +0200
@@ -519,9 +519,6 @@
               <section title="eric5.Plugins.ViewManagerPlugins.Listspace" ref="index-eric5.Plugins.ViewManagerPlugins.Listspace.html">
                 <section title="eric5.Plugins.ViewManagerPlugins.Listspace.Listspace" ref="eric5.Plugins.ViewManagerPlugins.Listspace.Listspace.html" />
               </section>
-              <section title="eric5.Plugins.ViewManagerPlugins.MdiArea" ref="index-eric5.Plugins.ViewManagerPlugins.MdiArea.html">
-                <section title="eric5.Plugins.ViewManagerPlugins.MdiArea.MdiArea" ref="eric5.Plugins.ViewManagerPlugins.MdiArea.MdiArea.html" />
-              </section>
               <section title="eric5.Plugins.ViewManagerPlugins.Tabview" ref="index-eric5.Plugins.ViewManagerPlugins.Tabview.html">
                 <section title="eric5.Plugins.ViewManagerPlugins.Tabview.Tabview" ref="eric5.Plugins.ViewManagerPlugins.Tabview.Tabview.html" />
               </section>
@@ -566,7 +563,6 @@
             <section title="eric5.Plugins.PluginVcsPySvn" ref="eric5.Plugins.PluginVcsPySvn.html" />
             <section title="eric5.Plugins.PluginVcsSubversion" ref="eric5.Plugins.PluginVcsSubversion.html" />
             <section title="eric5.Plugins.PluginVmListspace" ref="eric5.Plugins.PluginVmListspace.html" />
-            <section title="eric5.Plugins.PluginVmMdiArea" ref="eric5.Plugins.PluginVmMdiArea.html" />
             <section title="eric5.Plugins.PluginVmTabview" ref="eric5.Plugins.PluginVmTabview.html" />
             <section title="eric5.Plugins.PluginWizardE5MessageBox" ref="eric5.Plugins.PluginWizardE5MessageBox.html" />
             <section title="eric5.Plugins.PluginWizardPyRegExp" ref="eric5.Plugins.PluginWizardPyRegExp.html" />
@@ -730,6 +726,7 @@
             </section>
             <section title="eric5.QScintilla.APIsManager" ref="eric5.QScintilla.APIsManager.html" />
             <section title="eric5.QScintilla.Editor" ref="eric5.QScintilla.Editor.html" />
+            <section title="eric5.QScintilla.EditorAssembly" ref="eric5.QScintilla.EditorAssembly.html" />
             <section title="eric5.QScintilla.GotoDialog" ref="eric5.QScintilla.GotoDialog.html" />
             <section title="eric5.QScintilla.MiniEditor" ref="eric5.QScintilla.MiniEditor.html" />
             <section title="eric5.QScintilla.Printer" ref="eric5.QScintilla.Printer.html" />
@@ -2527,6 +2524,7 @@
       <keyword name="VisibilityBase" id="VisibilityBase" ref="eric5.Utilities.ModuleParser.html#VisibilityBase" />
       <keyword name="_indent" id="_indent" ref="eric5.Utilities.ModuleParser.html#_indent" />
       <keyword name="find_module" id="find_module" ref="eric5.Utilities.ModuleParser.html#find_module" />
+      <keyword name="getTypeFromTypeName" id="getTypeFromTypeName" ref="eric5.Utilities.ModuleParser.html#getTypeFromTypeName" />
       <keyword name="readModule" id="readModule" ref="eric5.Utilities.ModuleParser.html#readModule" />
       <keyword name="resetParsedModule" id="resetParsedModule" ref="eric5.Utilities.ModuleParser.html#resetParsedModule" />
       <keyword name="resetParsedModules" id="resetParsedModules" ref="eric5.Utilities.ModuleParser.html#resetParsedModules" />
@@ -5314,12 +5312,6 @@
       <keyword name="EricdocPlugin.__projectShowMenu" id="EricdocPlugin.__projectShowMenu" ref="eric5.Plugins.PluginEricdoc.html#EricdocPlugin.__projectShowMenu" />
       <keyword name="EricdocPlugin.activate" id="EricdocPlugin.activate" ref="eric5.Plugins.PluginEricdoc.html#EricdocPlugin.activate" />
       <keyword name="EricdocPlugin.deactivate" id="EricdocPlugin.deactivate" ref="eric5.Plugins.PluginEricdoc.html#EricdocPlugin.deactivate" />
-      <keyword name="PluginVmMdiArea (Module)" id="PluginVmMdiArea (Module)" ref="eric5.Plugins.PluginVmMdiArea.html" />
-      <keyword name="VmMdiAreaPlugin" id="VmMdiAreaPlugin" ref="eric5.Plugins.PluginVmMdiArea.html#VmMdiAreaPlugin" />
-      <keyword name="previewPix" id="previewPix" ref="eric5.Plugins.PluginVmMdiArea.html#previewPix" />
-      <keyword name="VmMdiAreaPlugin (Constructor)" id="VmMdiAreaPlugin (Constructor)" ref="eric5.Plugins.PluginVmMdiArea.html#VmMdiAreaPlugin.__init__" />
-      <keyword name="VmMdiAreaPlugin.activate" id="VmMdiAreaPlugin.activate" ref="eric5.Plugins.PluginVmMdiArea.html#VmMdiAreaPlugin.activate" />
-      <keyword name="VmMdiAreaPlugin.deactivate" id="VmMdiAreaPlugin.deactivate" ref="eric5.Plugins.PluginVmMdiArea.html#VmMdiAreaPlugin.deactivate" />
       <keyword name="PluginVcsMercurial (Module)" id="PluginVcsMercurial (Module)" ref="eric5.Plugins.PluginVcsMercurial.html" />
       <keyword name="VcsMercurialPlugin" id="VcsMercurialPlugin" ref="eric5.Plugins.PluginVcsMercurial.html#VcsMercurialPlugin" />
       <keyword name="createConfigurationPage" id="createConfigurationPage" ref="eric5.Plugins.PluginVcsMercurial.html#createConfigurationPage" />
@@ -6326,6 +6318,14 @@
       <keyword name="Printer" id="Printer" ref="eric5.QScintilla.Printer.html#Printer" />
       <keyword name="Printer (Constructor)" id="Printer (Constructor)" ref="eric5.QScintilla.Printer.html#Printer.__init__" />
       <keyword name="Printer.formatPage" id="Printer.formatPage" ref="eric5.QScintilla.Printer.html#Printer.formatPage" />
+      <keyword name="EditorAssembly (Module)" id="EditorAssembly (Module)" ref="eric5.QScintilla.EditorAssembly.html" />
+      <keyword name="EditorAssembly" id="EditorAssembly" ref="eric5.QScintilla.EditorAssembly.html#EditorAssembly" />
+      <keyword name="EditorAssembly (Constructor)" id="EditorAssembly (Constructor)" ref="eric5.QScintilla.EditorAssembly.html#EditorAssembly.__init__" />
+      <keyword name="EditorAssembly.__globalsActivated" id="EditorAssembly.__globalsActivated" ref="eric5.QScintilla.EditorAssembly.html#EditorAssembly.__globalsActivated" />
+      <keyword name="EditorAssembly.__membersActivated" id="EditorAssembly.__membersActivated" ref="eric5.QScintilla.EditorAssembly.html#EditorAssembly.__membersActivated" />
+      <keyword name="EditorAssembly.__parseEditor" id="EditorAssembly.__parseEditor" ref="eric5.QScintilla.EditorAssembly.html#EditorAssembly.__parseEditor" />
+      <keyword name="EditorAssembly.__resetParseTimer" id="EditorAssembly.__resetParseTimer" ref="eric5.QScintilla.EditorAssembly.html#EditorAssembly.__resetParseTimer" />
+      <keyword name="EditorAssembly.getEditor" id="EditorAssembly.getEditor" ref="eric5.QScintilla.EditorAssembly.html#EditorAssembly.getEditor" />
       <keyword name="ZoomDialog (Module)" id="ZoomDialog (Module)" ref="eric5.QScintilla.ZoomDialog.html" />
       <keyword name="ZoomDialog" id="ZoomDialog" ref="eric5.QScintilla.ZoomDialog.html#ZoomDialog" />
       <keyword name="ZoomDialog (Constructor)" id="ZoomDialog (Constructor)" ref="eric5.QScintilla.ZoomDialog.html#ZoomDialog.__init__" />
@@ -10433,6 +10433,7 @@
       <keyword name="Listspace.tile" id="Listspace.tile" ref="eric5.Plugins.ViewManagerPlugins.Listspace.Listspace.html#Listspace.tile" />
       <keyword name="StackedWidget (Constructor)" id="StackedWidget (Constructor)" ref="eric5.Plugins.ViewManagerPlugins.Listspace.Listspace.html#StackedWidget.__init__" />
       <keyword name="StackedWidget.addWidget" id="StackedWidget.addWidget" ref="eric5.Plugins.ViewManagerPlugins.Listspace.Listspace.html#StackedWidget.addWidget" />
+      <keyword name="StackedWidget.currentWidget" id="StackedWidget.currentWidget" ref="eric5.Plugins.ViewManagerPlugins.Listspace.Listspace.html#StackedWidget.currentWidget" />
       <keyword name="StackedWidget.firstEditor" id="StackedWidget.firstEditor" ref="eric5.Plugins.ViewManagerPlugins.Listspace.Listspace.html#StackedWidget.firstEditor" />
       <keyword name="StackedWidget.hasEditor" id="StackedWidget.hasEditor" ref="eric5.Plugins.ViewManagerPlugins.Listspace.Listspace.html#StackedWidget.hasEditor" />
       <keyword name="StackedWidget.nextTab" id="StackedWidget.nextTab" ref="eric5.Plugins.ViewManagerPlugins.Listspace.Listspace.html#StackedWidget.nextTab" />
@@ -10477,10 +10478,12 @@
       <keyword name="TabWidget.currentWidget" id="TabWidget.currentWidget" ref="eric5.Plugins.ViewManagerPlugins.Tabview.Tabview.html#TabWidget.currentWidget" />
       <keyword name="TabWidget.hasEditor" id="TabWidget.hasEditor" ref="eric5.Plugins.ViewManagerPlugins.Tabview.Tabview.html#TabWidget.hasEditor" />
       <keyword name="TabWidget.hasEditors" id="TabWidget.hasEditors" ref="eric5.Plugins.ViewManagerPlugins.Tabview.Tabview.html#TabWidget.hasEditors" />
+      <keyword name="TabWidget.indexOf" id="TabWidget.indexOf" ref="eric5.Plugins.ViewManagerPlugins.Tabview.Tabview.html#TabWidget.indexOf" />
       <keyword name="TabWidget.insertWidget" id="TabWidget.insertWidget" ref="eric5.Plugins.ViewManagerPlugins.Tabview.Tabview.html#TabWidget.insertWidget" />
       <keyword name="TabWidget.mouseDoubleClickEvent" id="TabWidget.mouseDoubleClickEvent" ref="eric5.Plugins.ViewManagerPlugins.Tabview.Tabview.html#TabWidget.mouseDoubleClickEvent" />
       <keyword name="TabWidget.relocateTab" id="TabWidget.relocateTab" ref="eric5.Plugins.ViewManagerPlugins.Tabview.Tabview.html#TabWidget.relocateTab" />
       <keyword name="TabWidget.removeWidget" id="TabWidget.removeWidget" ref="eric5.Plugins.ViewManagerPlugins.Tabview.Tabview.html#TabWidget.removeWidget" />
+      <keyword name="TabWidget.setCurrentWidget" id="TabWidget.setCurrentWidget" ref="eric5.Plugins.ViewManagerPlugins.Tabview.Tabview.html#TabWidget.setCurrentWidget" />
       <keyword name="TabWidget.showIndicator" id="TabWidget.showIndicator" ref="eric5.Plugins.ViewManagerPlugins.Tabview.Tabview.html#TabWidget.showIndicator" />
       <keyword name="Tabview (Constructor)" id="Tabview (Constructor)" ref="eric5.Plugins.ViewManagerPlugins.Tabview.Tabview.html#Tabview.__init__" />
       <keyword name="Tabview.__currentChanged" id="Tabview.__currentChanged" ref="eric5.Plugins.ViewManagerPlugins.Tabview.Tabview.html#Tabview.__currentChanged" />
@@ -10508,31 +10511,6 @@
       <keyword name="Tabview.setSplitOrientation" id="Tabview.setSplitOrientation" ref="eric5.Plugins.ViewManagerPlugins.Tabview.Tabview.html#Tabview.setSplitOrientation" />
       <keyword name="Tabview.showWindowMenu" id="Tabview.showWindowMenu" ref="eric5.Plugins.ViewManagerPlugins.Tabview.Tabview.html#Tabview.showWindowMenu" />
       <keyword name="Tabview.tile" id="Tabview.tile" ref="eric5.Plugins.ViewManagerPlugins.Tabview.Tabview.html#Tabview.tile" />
-      <keyword name="MdiArea (Package)" id="MdiArea (Package)" ref="index-eric5.Plugins.ViewManagerPlugins.MdiArea.html" />
-      <keyword name="MdiArea (Module)" id="MdiArea (Module)" ref="eric5.Plugins.ViewManagerPlugins.MdiArea.MdiArea.html" />
-      <keyword name="MdiArea" id="MdiArea" ref="eric5.Plugins.ViewManagerPlugins.MdiArea.MdiArea.html#MdiArea" />
-      <keyword name="MdiArea (Constructor)" id="MdiArea (Constructor)" ref="eric5.Plugins.ViewManagerPlugins.MdiArea.MdiArea.html#MdiArea.__init__" />
-      <keyword name="MdiArea.__iconizeAllWindows" id="MdiArea.__iconizeAllWindows" ref="eric5.Plugins.ViewManagerPlugins.MdiArea.MdiArea.html#MdiArea.__iconizeAllWindows" />
-      <keyword name="MdiArea.__mapped" id="MdiArea.__mapped" ref="eric5.Plugins.ViewManagerPlugins.MdiArea.MdiArea.html#MdiArea.__mapped" />
-      <keyword name="MdiArea.__restoreAllWindows" id="MdiArea.__restoreAllWindows" ref="eric5.Plugins.ViewManagerPlugins.MdiArea.MdiArea.html#MdiArea.__restoreAllWindows" />
-      <keyword name="MdiArea.__setSubWindowIcon" id="MdiArea.__setSubWindowIcon" ref="eric5.Plugins.ViewManagerPlugins.MdiArea.MdiArea.html#MdiArea.__setSubWindowIcon" />
-      <keyword name="MdiArea.__subWindowActivated" id="MdiArea.__subWindowActivated" ref="eric5.Plugins.ViewManagerPlugins.MdiArea.MdiArea.html#MdiArea.__subWindowActivated" />
-      <keyword name="MdiArea._addView" id="MdiArea._addView" ref="eric5.Plugins.ViewManagerPlugins.MdiArea.MdiArea.html#MdiArea._addView" />
-      <keyword name="MdiArea._initWindowActions" id="MdiArea._initWindowActions" ref="eric5.Plugins.ViewManagerPlugins.MdiArea.MdiArea.html#MdiArea._initWindowActions" />
-      <keyword name="MdiArea._modificationStatusChanged" id="MdiArea._modificationStatusChanged" ref="eric5.Plugins.ViewManagerPlugins.MdiArea.MdiArea.html#MdiArea._modificationStatusChanged" />
-      <keyword name="MdiArea._removeAllViews" id="MdiArea._removeAllViews" ref="eric5.Plugins.ViewManagerPlugins.MdiArea.MdiArea.html#MdiArea._removeAllViews" />
-      <keyword name="MdiArea._removeView" id="MdiArea._removeView" ref="eric5.Plugins.ViewManagerPlugins.MdiArea.MdiArea.html#MdiArea._removeView" />
-      <keyword name="MdiArea._showView" id="MdiArea._showView" ref="eric5.Plugins.ViewManagerPlugins.MdiArea.MdiArea.html#MdiArea._showView" />
-      <keyword name="MdiArea._syntaxErrorToggled" id="MdiArea._syntaxErrorToggled" ref="eric5.Plugins.ViewManagerPlugins.MdiArea.MdiArea.html#MdiArea._syntaxErrorToggled" />
-      <keyword name="MdiArea.activeWindow" id="MdiArea.activeWindow" ref="eric5.Plugins.ViewManagerPlugins.MdiArea.MdiArea.html#MdiArea.activeWindow" />
-      <keyword name="MdiArea.canCascade" id="MdiArea.canCascade" ref="eric5.Plugins.ViewManagerPlugins.MdiArea.MdiArea.html#MdiArea.canCascade" />
-      <keyword name="MdiArea.canSplit" id="MdiArea.canSplit" ref="eric5.Plugins.ViewManagerPlugins.MdiArea.MdiArea.html#MdiArea.canSplit" />
-      <keyword name="MdiArea.canTile" id="MdiArea.canTile" ref="eric5.Plugins.ViewManagerPlugins.MdiArea.MdiArea.html#MdiArea.canTile" />
-      <keyword name="MdiArea.cascade" id="MdiArea.cascade" ref="eric5.Plugins.ViewManagerPlugins.MdiArea.MdiArea.html#MdiArea.cascade" />
-      <keyword name="MdiArea.eventFilter" id="MdiArea.eventFilter" ref="eric5.Plugins.ViewManagerPlugins.MdiArea.MdiArea.html#MdiArea.eventFilter" />
-      <keyword name="MdiArea.setEditorName" id="MdiArea.setEditorName" ref="eric5.Plugins.ViewManagerPlugins.MdiArea.MdiArea.html#MdiArea.setEditorName" />
-      <keyword name="MdiArea.showWindowMenu" id="MdiArea.showWindowMenu" ref="eric5.Plugins.ViewManagerPlugins.MdiArea.MdiArea.html#MdiArea.showWindowMenu" />
-      <keyword name="MdiArea.tile" id="MdiArea.tile" ref="eric5.Plugins.ViewManagerPlugins.MdiArea.MdiArea.html#MdiArea.tile" />
       <keyword name="QRegExpWizard (Package)" id="QRegExpWizard (Package)" ref="index-eric5.Plugins.WizardPlugins.QRegExpWizard.html" />
       <keyword name="QRegExpWizardCharactersDialog (Module)" id="QRegExpWizardCharactersDialog (Module)" ref="eric5.Plugins.WizardPlugins.QRegExpWizard.QRegExpWizardCharactersDialog.html" />
       <keyword name="QRegExpWizardCharactersDialog" id="QRegExpWizardCharactersDialog" ref="eric5.Plugins.WizardPlugins.QRegExpWizard.QRegExpWizardCharactersDialog.html#QRegExpWizardCharactersDialog" />
@@ -11410,7 +11388,6 @@
       <file>eric5.Plugins.PluginVcsPySvn.html</file>
       <file>eric5.Plugins.PluginVcsSubversion.html</file>
       <file>eric5.Plugins.PluginVmListspace.html</file>
-      <file>eric5.Plugins.PluginVmMdiArea.html</file>
       <file>eric5.Plugins.PluginVmTabview.html</file>
       <file>eric5.Plugins.PluginWizardE5MessageBox.html</file>
       <file>eric5.Plugins.PluginWizardPyRegExp.html</file>
@@ -11549,7 +11526,6 @@
       <file>eric5.Plugins.VcsPlugins.vcsSubversion.SvnUtilities.html</file>
       <file>eric5.Plugins.VcsPlugins.vcsSubversion.subversion.html</file>
       <file>eric5.Plugins.ViewManagerPlugins.Listspace.Listspace.html</file>
-      <file>eric5.Plugins.ViewManagerPlugins.MdiArea.MdiArea.html</file>
       <file>eric5.Plugins.ViewManagerPlugins.Tabview.Tabview.html</file>
       <file>eric5.Plugins.WizardPlugins.ColorDialogWizard.ColorDialogWizardDialog.html</file>
       <file>eric5.Plugins.WizardPlugins.E5MessageBoxWizard.E5MessageBoxWizardDialog.html</file>
@@ -11655,6 +11631,7 @@
       <file>eric5.PyUnit.UnittestDialog.html</file>
       <file>eric5.QScintilla.APIsManager.html</file>
       <file>eric5.QScintilla.Editor.html</file>
+      <file>eric5.QScintilla.EditorAssembly.html</file>
       <file>eric5.QScintilla.Exporters.ExporterBase.html</file>
       <file>eric5.QScintilla.Exporters.ExporterHTML.html</file>
       <file>eric5.QScintilla.Exporters.ExporterODT.html</file>
@@ -11860,7 +11837,6 @@
       <file>index-eric5.Plugins.VcsPlugins.vcsSubversion.ConfigurationPage.html</file>
       <file>index-eric5.Plugins.VcsPlugins.vcsSubversion.html</file>
       <file>index-eric5.Plugins.ViewManagerPlugins.Listspace.html</file>
-      <file>index-eric5.Plugins.ViewManagerPlugins.MdiArea.html</file>
       <file>index-eric5.Plugins.ViewManagerPlugins.Tabview.html</file>
       <file>index-eric5.Plugins.ViewManagerPlugins.html</file>
       <file>index-eric5.Plugins.WizardPlugins.ColorDialogWizard.html</file>
diff -r 68fb0a7677ff -r c1622c708cd9 Documentation/Source/eric5.Plugins.ViewManagerPlugins.Listspace.Listspace.html
--- a/Documentation/Source/eric5.Plugins.ViewManagerPlugins.Listspace.Listspace.html	Mon Oct 03 16:08:32 2011 +0200
+++ b/Documentation/Source/eric5.Plugins.ViewManagerPlugins.Listspace.Listspace.html	Mon Oct 03 18:52:38 2011 +0200
@@ -539,6 +539,9 @@
 <td><a href="#StackedWidget.addWidget">addWidget</a></td>
 <td>Overwritten method to add a new widget.</td>
 </tr><tr>
+<td><a href="#StackedWidget.currentWidget">currentWidget</a></td>
+<td>Public method to get a reference to the current editor.</td>
+</tr><tr>
 <td><a href="#StackedWidget.firstEditor">firstEditor</a></td>
 <td>Public method to retrieve the first editor in the list of managed editors.</td>
 </tr><tr>
@@ -585,6 +588,16 @@
 <dd>
 the editor object to be added (QScintilla.Editor.Editor)
 </dd>
+</dl><a NAME="StackedWidget.currentWidget" ID="StackedWidget.currentWidget"></a>
+<h4>StackedWidget.currentWidget</h4>
+<b>currentWidget</b>(<i></i>)
+<p>
+        Public method to get a reference to the current editor.
+</p><dl>
+<dt>Returns:</dt>
+<dd>
+reference to the current editor (Editor)
+</dd>
 </dl><a NAME="StackedWidget.firstEditor" ID="StackedWidget.firstEditor"></a>
 <h4>StackedWidget.firstEditor</h4>
 <b>firstEditor</b>(<i></i>)
diff -r 68fb0a7677ff -r c1622c708cd9 Documentation/Source/eric5.Plugins.ViewManagerPlugins.Tabview.Tabview.html
--- a/Documentation/Source/eric5.Plugins.ViewManagerPlugins.Tabview.Tabview.html	Mon Oct 03 16:08:32 2011 +0200
+++ b/Documentation/Source/eric5.Plugins.ViewManagerPlugins.Tabview.Tabview.html	Mon Oct 03 18:52:38 2011 +0200
@@ -257,6 +257,9 @@
 <td><a href="#TabWidget.hasEditors">hasEditors</a></td>
 <td>Public method to test, if any editor is managed.</td>
 </tr><tr>
+<td><a href="#TabWidget.indexOf">indexOf</a></td>
+<td>Public method to get the tab index of the given editor.</td>
+</tr><tr>
 <td><a href="#TabWidget.insertWidget">insertWidget</a></td>
 <td>Overwritten method to insert a new tab.</td>
 </tr><tr>
@@ -269,6 +272,9 @@
 <td><a href="#TabWidget.removeWidget">removeWidget</a></td>
 <td>Public method to remove a widget.</td>
 </tr><tr>
+<td><a href="#TabWidget.setCurrentWidget">setCurrentWidget</a></td>
+<td>Public method to set the current tab by the given editor.</td>
+</tr><tr>
 <td><a href="#TabWidget.showIndicator">showIndicator</a></td>
 <td>Public slot to set the indicator on or off.</td>
 </tr>
@@ -465,7 +471,7 @@
 </p><dl>
 <dt>Returns:</dt>
 <dd>
-reference to the current page (QWidget)
+reference to the current page (Editor)
 </dd>
 </dl><a NAME="TabWidget.hasEditor" ID="TabWidget.hasEditor"></a>
 <h4>TabWidget.hasEditor</h4>
@@ -493,6 +499,21 @@
 <dd>
 flag indicating editors are managed
 </dd>
+</dl><a NAME="TabWidget.indexOf" ID="TabWidget.indexOf"></a>
+<h4>TabWidget.indexOf</h4>
+<b>indexOf</b>(<i>object</i>)
+<p>
+        Public method to get the tab index of the given editor.
+</p><dl>
+<dt><i>object</i></dt>
+<dd>
+object to get the index for (QLabel or Editor)
+</dd>
+</dl><dl>
+<dt>Returns:</dt>
+<dd>
+tab index of the editor (integer)
+</dd>
 </dl><a NAME="TabWidget.insertWidget" ID="TabWidget.insertWidget"></a>
 <h4>TabWidget.insertWidget</h4>
 <b>insertWidget</b>(<i>index, editor, title</i>)
@@ -550,6 +571,16 @@
 <dd>
 object to be removed (QWidget)
 </dd>
+</dl><a NAME="TabWidget.setCurrentWidget" ID="TabWidget.setCurrentWidget"></a>
+<h4>TabWidget.setCurrentWidget</h4>
+<b>setCurrentWidget</b>(<i>editor</i>)
+<p>
+        Public method to set the current tab by the given editor.
+</p><dl>
+<dt><i>editor</i></dt>
+<dd>
+editor to determine current tab from (Editor)
+</dd>
 </dl><a NAME="TabWidget.showIndicator" ID="TabWidget.showIndicator"></a>
 <h4>TabWidget.showIndicator</h4>
 <b>showIndicator</b>(<i>on</i>)
diff -r 68fb0a7677ff -r c1622c708cd9 Documentation/Source/eric5.Utilities.ModuleParser.html
--- a/Documentation/Source/eric5.Utilities.ModuleParser.html	Mon Oct 03 16:08:32 2011 +0200
+++ b/Documentation/Source/eric5.Utilities.ModuleParser.html	Mon Oct 03 18:52:38 2011 +0200
@@ -35,7 +35,7 @@
 </p>
 <h3>Global Attributes</h3>
 <table>
-<tr><td>PTL_SOURCE</td></tr><tr><td>RB_SOURCE</td></tr><tr><td>SUPPORTED_TYPES</td></tr><tr><td>TABWIDTH</td></tr><tr><td>__all__</td></tr><tr><td>_commentsub</td></tr><tr><td>_hashsub</td></tr><tr><td>_modules</td></tr><tr><td>_py_getnext</td></tr><tr><td>_rb_getnext</td></tr>
+<tr><td>PARSEABLE_TYPES</td></tr><tr><td>PTL_SOURCE</td></tr><tr><td>RB_SOURCE</td></tr><tr><td>SUPPORTED_TYPES</td></tr><tr><td>TABWIDTH</td></tr><tr><td>TYPE_MAPPING</td></tr><tr><td>__all__</td></tr><tr><td>_commentsub</td></tr><tr><td>_hashsub</td></tr><tr><td>_modules</td></tr><tr><td>_py_getnext</td></tr><tr><td>_rb_getnext</td></tr>
 </table>
 <h3>Classes</h3>
 <table>
@@ -68,6 +68,9 @@
 <td><a href="#find_module">find_module</a></td>
 <td>Module function to extend the Python module finding mechanism.</td>
 </tr><tr>
+<td><a href="#getTypeFromTypeName">getTypeFromTypeName</a></td>
+<td>Module function to determine the module type given the module type name.</td>
+</tr><tr>
 <td><a href="#readModule">readModule</a></td>
 <td>Function to read a module file and parse it.</td>
 </tr><tr>
@@ -858,6 +861,24 @@
 </dl>
 <div align="right"><a href="#top">Up</a></div>
 <hr /><hr />
+<a NAME="getTypeFromTypeName" ID="getTypeFromTypeName"></a>
+<h2>getTypeFromTypeName</h2>
+<b>getTypeFromTypeName</b>(<i>name</i>)
+<p>
+    Module function to determine the module type given the module type name.
+</p><dl>
+<dt><i>name</i></dt>
+<dd>
+module type name (string)
+</dd>
+</dl><dl>
+<dt>Returns:</dt>
+<dd>
+module type or -1 for failure (integer)
+</dd>
+</dl>
+<div align="right"><a href="#top">Up</a></div>
+<hr /><hr />
 <a NAME="readModule" ID="readModule"></a>
 <h2>readModule</h2>
 <b>readModule</b>(<i>module, path=[], inpackage=False, basename="", extensions=None, caching=True</i>)
diff -r 68fb0a7677ff -r c1622c708cd9 Documentation/Source/index-eric5.Plugins.ViewManagerPlugins.html
--- a/Documentation/Source/index-eric5.Plugins.ViewManagerPlugins.html	Mon Oct 03 16:08:32 2011 +0200
+++ b/Documentation/Source/index-eric5.Plugins.ViewManagerPlugins.html	Mon Oct 03 18:52:38 2011 +0200
@@ -31,9 +31,6 @@
 <td><a href="index-eric5.Plugins.ViewManagerPlugins.Listspace.html">Listspace</a></td>
 <td>Package containing the listspace view manager plugin.</td>
 </tr><tr>
-<td><a href="index-eric5.Plugins.ViewManagerPlugins.MdiArea.html">MdiArea</a></td>
-<td>Package containing the mdi area view manager plugin.</td>
-</tr><tr>
 <td><a href="index-eric5.Plugins.ViewManagerPlugins.Tabview.html">Tabview</a></td>
 <td>Package containing the tabview view manager plugin.</td>
 </tr>
diff -r 68fb0a7677ff -r c1622c708cd9 Documentation/Source/index-eric5.Plugins.html
--- a/Documentation/Source/index-eric5.Plugins.html	Mon Oct 03 16:08:32 2011 +0200
+++ b/Documentation/Source/index-eric5.Plugins.html	Mon Oct 03 18:52:38 2011 +0200
@@ -81,9 +81,6 @@
 <td><a href="eric5.Plugins.PluginVmListspace.html">PluginVmListspace</a></td>
 <td>Module implementing the Tabview view manager plugin.</td>
 </tr><tr>
-<td><a href="eric5.Plugins.PluginVmMdiArea.html">PluginVmMdiArea</a></td>
-<td>Module implementing the mdi area view manager plugin.</td>
-</tr><tr>
 <td><a href="eric5.Plugins.PluginVmTabview.html">PluginVmTabview</a></td>
 <td>Module implementing the Tabview view manager plugin.</td>
 </tr><tr>
diff -r 68fb0a7677ff -r c1622c708cd9 Documentation/Source/index-eric5.QScintilla.html
--- a/Documentation/Source/index-eric5.QScintilla.html	Mon Oct 03 16:08:32 2011 +0200
+++ b/Documentation/Source/index-eric5.QScintilla.html	Mon Oct 03 18:52:38 2011 +0200
@@ -57,6 +57,9 @@
 <td><a href="eric5.QScintilla.Editor.html">Editor</a></td>
 <td>Module implementing the editor component of the eric5 IDE.</td>
 </tr><tr>
+<td><a href="eric5.QScintilla.EditorAssembly.html">EditorAssembly</a></td>
+<td>Module implementing the editor assembly widget containing the navigation combos and the editor widget.</td>
+</tr><tr>
 <td><a href="eric5.QScintilla.GotoDialog.html">GotoDialog</a></td>
 <td>Module implementing the Goto dialog.</td>
 </tr><tr>
diff -r 68fb0a7677ff -r c1622c708cd9 Plugins/ViewManagerPlugins/Listspace/Listspace.py
--- a/Plugins/ViewManagerPlugins/Listspace/Listspace.py	Mon Oct 03 16:08:32 2011 +0200
+++ b/Plugins/ViewManagerPlugins/Listspace/Listspace.py	Mon Oct 03 18:52:38 2011 +0200
@@ -42,7 +42,7 @@
         
         @param editor the editor object to be added (QScintilla.Editor.Editor)
         """
-        super().addWidget(editor)
+        super().addWidget(editor.parent())
         if not editor in self.editors:
             self.editors.append(editor)
         
@@ -52,9 +52,21 @@
         
         @param widget widget to be removed (QWidget)
         """
-        super().removeWidget(widget)
         if isinstance(widget, QScintilla.Editor.Editor):
             self.editors.remove(widget)
+            widget = widget.parent()
+        super().removeWidget(widget)
+        
+    def currentWidget(self):
+        """
+        Public method to get a reference to the current editor.
+        
+        @return reference to the current editor (Editor)
+        """
+        widget = super().currentWidget()
+        if widget is not None:
+            widget = widget.getEditor()
+        return widget
         
     def setCurrentWidget(self, widget):
         """
@@ -65,6 +77,7 @@
         if isinstance(widget, QScintilla.Editor.Editor):
             self.editors.remove(widget)
             self.editors.insert(0, widget)
+            widget = widget.parent()
         super().setCurrentWidget(widget)
         
     def setCurrentIndex(self, index):
diff -r 68fb0a7677ff -r c1622c708cd9 Plugins/ViewManagerPlugins/Tabview/Tabview.py
--- a/Plugins/ViewManagerPlugins/Tabview/Tabview.py	Mon Oct 03 16:08:32 2011 +0200
+++ b/Plugins/ViewManagerPlugins/Tabview/Tabview.py	Mon Oct 03 18:52:38 2011 +0200
@@ -56,7 +56,7 @@
         
         @param parent reference to the parent widget (QWidget)
         """
-        E5WheelTabBar.__init__(self, parent)
+        super().__init__(parent)
         self.setAcceptDrops(True)
         
         self.__dragStartPos = QPoint()
@@ -69,7 +69,7 @@
         """
         if event.button() == Qt.LeftButton:
             self.__dragStartPos = QPoint(event.pos())
-        E5WheelTabBar.mousePressEvent(self, event)
+        super().mousePressEvent(event)
     
     def mouseMoveEvent(self, event):
         """
@@ -94,7 +94,7 @@
                 drag.exec_(Qt.DropActions(Qt.CopyAction))
             elif event.modifiers() == Qt.KeyboardModifiers(Qt.NoModifier):
                 drag.exec_(Qt.DropActions(Qt.MoveAction))
-        E5WheelTabBar.mouseMoveEvent(self, event)
+        super().mouseMoveEvent(event)
     
     def dragEnterEvent(self, event):
         """
@@ -110,7 +110,7 @@
            "source-index" in formats and \
            "tabwidget-id" in formats:
             event.acceptProposedAction()
-        E5WheelTabBar.dragEnterEvent(self, event)
+        super().dragEnterEvent(event)
     
     def dropEvent(self, event):
         """
@@ -138,7 +138,7 @@
                 elif event.proposedAction() == Qt.CopyAction:
                     self.tabCopyRequested.emit(fromIndex, toIndex)
                     event.acceptProposedAction()
-        E5WheelTabBar.dropEvent(self, event)
+        super().dropEvent(event)
 
 
 class TabWidget(E5TabWidget):
@@ -151,7 +151,7 @@
         
         @param vm view manager widget (Tabview)
         """
-        E5TabWidget.__init__(self)
+        super().__init__()
         self.setAttribute(Qt.WA_DeleteOnClose, True)
         
         self.__tabBar = TabBar(self)
@@ -210,7 +210,7 @@
         self.emptyLabel = QLabel()
         self.emptyLabel.setPixmap(ericPic)
         self.emptyLabel.setAlignment(Qt.AlignVCenter | Qt.AlignHCenter)
-        E5TabWidget.addTab(self, self.emptyLabel, UI.PixmapCache.getIcon("empty.png"), "")
+        super().addTab(self.emptyLabel, UI.PixmapCache.getIcon("empty.png"), "")
         
     def __initMenu(self):
         """
@@ -263,7 +263,7 @@
         @param index index of the tab the menu is requested for (integer)
         """
         if self.editors:
-            self.contextMenuEditor = self.widget(index)
+            self.contextMenuEditor = self.widget(index).getEditor()
             if self.contextMenuEditor:
                 self.saveMenuAct.setEnabled(self.contextMenuEditor.isModified())
                 fileName = self.contextMenuEditor.getFileName()
@@ -323,7 +323,8 @@
         @param editor the editor object to be added (QScintilla.Editor.Editor)
         @param title title for the new tab (string)
         """
-        E5TabWidget.addTab(self, editor, UI.PixmapCache.getIcon("empty.png"), title)
+        assembly = editor.parent()
+        super().addTab(assembly, UI.PixmapCache.getIcon("empty.png"), title)
         if self.closeButton:
             self.closeButton.setEnabled(True)
         else:
@@ -347,9 +348,10 @@
         @param title title for the new tab (string)
         @return index of the inserted tab (integer)
         """
-        newIndex = E5TabWidget.insertTab(self, index, editor,
-                                         UI.PixmapCache.getIcon("empty.png"),
-                                         title)
+        assembly = editor.parent()
+        newIndex = super().insertTab(index, assembly,
+                                     UI.PixmapCache.getIcon("empty.png"),
+                                     title)
         if self.closeButton:
             self.closeButton.setEnabled(True)
         else:
@@ -388,7 +390,8 @@
             if editor.isReadOnly():
                 txt = self.trUtf8("{0} (ro)").format(txt)
             
-            index = self.indexOf(editor)
+            assembly = editor.parent()
+            index = self.indexOf(assembly)
             if index > -1:
                 self.setTabText(index, txt)
                 self.setTabToolTip(index, fn)
@@ -399,17 +402,17 @@
         
         @param object object to be removed (QWidget)
         """
-        index = self.indexOf(object)
+        if isinstance(object, QScintilla.Editor.Editor):
+            object.captionChanged.disconnect(self.__captionChange)
+            self.editors.remove(object)
+            index = self.indexOf(object.parent())
+        else:
+            index = self.indexOf(object)
         if index > -1:
             self.removeTab(index)
         
-        if isinstance(object, QScintilla.Editor.Editor):
-            object.captionChanged.disconnect(self.__captionChange)
-            self.editors.remove(object)
-        
         if not self.editors:
-            E5TabWidget.addTab(self, self.emptyLabel,
-                UI.PixmapCache.getIcon("empty.png"), "")
+            super().addTab(self.emptyLabel, UI.PixmapCache.getIcon("empty.png"), "")
             self.emptyLabel.show()
             if self.closeButton:
                 self.closeButton.setEnabled(False)
@@ -432,7 +435,7 @@
             text = tw.tabText(sourceIndex)
             icon = tw.tabIcon(sourceIndex)
             whatsThis = tw.tabWhatsThis(sourceIndex)
-            editor = tw.widget(sourceIndex)
+            editor = tw.widget(sourceIndex).getEditor()
             
             # step 2: relocate the tab
             tw.removeWidget(editor)
@@ -456,7 +459,7 @@
         """
         tw = self.vm.getTabWidgetById(sourceId)
         if tw is not None:
-            editor = tw.widget(sourceIndex)
+            editor = tw.widget(sourceIndex).getEditor()
             newEditor = self.vm.cloneEditor(editor, editor.getFileType(),
                                             editor.getFileName())
             self.vm.insertView(newEditor, self, targetIndex,
@@ -469,7 +472,7 @@
         @param sourceIndex index of the tab (integer)
         @param targetIndex index position to place it to (integer)
         """
-        editor = self.widget(sourceIndex)
+        editor = self.widget(sourceIndex).getEditor()
         newEditor = self.vm.cloneEditor(editor, editor.getFileType(),
                                         editor.getFileName())
         self.vm.insertView(newEditor, self, targetIndex,
@@ -479,12 +482,34 @@
         """
         Overridden method to return a reference to the current page.
         
-        @return reference to the current page (QWidget)
+        @return reference to the current page (Editor)
         """
         if not self.editors:
             return None
         else:
-            return E5TabWidget.currentWidget(self)
+            try:
+                return super().currentWidget().getEditor()
+            except AttributeError:
+                return super().currentWidget()
+        
+    def setCurrentWidget(self, editor):
+        """
+        Public method to set the current tab by the given editor.
+        
+        @param editor editor to determine current tab from (Editor)
+        """
+        super().setCurrentWidget(editor.parent())
+        
+    def indexOf(self, object):
+        """
+        Public method to get the tab index of the given editor.
+        
+        @param object object to get the index for (QLabel or Editor)
+        @return tab index of the editor (integer)
+        """
+        if isinstance(object, QScintilla.Editor.Editor):
+            object = object.parent()
+        return super().indexOf(object)
         
     def hasEditor(self, editor):
         """
@@ -518,7 +543,7 @@
         index = self.contextMenuIndex
         for i in list(range(self.count() - 1, index, -1)) + \
                  list(range(index - 1, -1, -1)):
-            editor = self.widget(i)
+            editor = self.widget(i).getEditor()
             self.vm.closeEditorWindow(editor)
         
     def __contextMenuCloseAll(self):
@@ -605,7 +630,7 @@
         """
         Private method to handle the press of the close button.
         """
-        self.vm.closeEditorWindow(self.currentWidget())
+        self.vm.closeEditorWindow(self.currentWidget().getEditor())
         
     def __closeRequested(self, index):
         """
@@ -614,7 +639,7 @@
         @param index index of the tab (integer)
         """
         if index >= 0:
-            self.vm.closeEditorWindow(self.widget(index))
+            self.vm.closeEditorWindow(self.widget(index).getEditor())
         
     def mouseDoubleClickEvent(self, event):
         """
diff -r 68fb0a7677ff -r c1622c708cd9 QScintilla/EditorAssembly.py
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/QScintilla/EditorAssembly.py	Mon Oct 03 18:52:38 2011 +0200
@@ -0,0 +1,207 @@
+# -*- coding: utf-8 -*-
+
+# Copyright (c) 2011 Detlev Offenbach <detlev@die-offenbachs.de>
+#
+
+"""
+Module implementing the editor assembly widget containing the navigation combos and
+the editor widget.
+"""
+
+from PyQt4.QtCore import QTimer
+from PyQt4.QtGui import QWidget, QGridLayout, QComboBox
+
+from .Editor import Editor
+
+from Utilities.ModuleParser import Module, Function, getTypeFromTypeName
+
+import UI.PixmapCache
+
+
+class EditorAssembly(QWidget):
+    """
+    Class implementing the editor assembly widget containing the navigation combos and
+    the editor widget.
+    """
+    def __init__(self, dbs, fn=None, vm=None, filetype="", editor=None, tv=None):
+        """
+        Constructor
+        
+        @param dbs reference to the debug server object
+        @param fn name of the file to be opened (string). If it is None,
+                a new (empty) editor is opened
+        @param vm reference to the view manager object (ViewManager.ViewManager)
+        @param filetype type of the source file (string)
+        @param editor reference to an Editor object, if this is a cloned view
+        @param tv reference to the task viewer object
+        """
+        super().__init__()
+        
+        self.__layout = QGridLayout(self)
+        self.__layout.setContentsMargins(0, 0, 0, 0)
+        self.__layout.setSpacing(1)
+        
+        self.__globalsCombo = QComboBox()
+        self.__membersCombo = QComboBox()
+        self.__editor = Editor(dbs, fn, vm, filetype, editor, tv)
+        
+        self.__layout.addWidget(self.__globalsCombo, 0, 0)
+        self.__layout.addWidget(self.__membersCombo, 0, 1)
+        self.__layout.addWidget(self.__editor, 1, 0, 1, -1)
+        
+        self.__module = None
+        
+        self.__globalsCombo.activated[int].connect(self.__globalsActivated)
+        self.__membersCombo.activated[int].connect(self.__membersActivated)
+        
+        self.__parseTimer = QTimer(self)
+        self.__parseTimer.setSingleShot(True)
+        self.__parseTimer.setInterval(5 * 1000)
+        self.__parseTimer.timeout.connect(self.__parseEditor)
+        self.__editor.textChanged.connect(self.__resetParseTimer)
+        
+        QTimer.singleShot(0, self.__parseEditor)
+    
+    def getEditor(self):
+        """
+        Public method to get the reference to the editor widget.
+        
+        @return reference to the editor widget (Editor)
+        """
+        return self.__editor
+    
+    def __globalsActivated(self, index):
+        """
+        Private method to jump to the line of the selected global entry and to populate
+        the members combo box.
+        
+        @param index index of the selected entry (integer)
+        """
+        # step 1: go to the line of the selected entry
+        lineno = self.__globalsCombo.itemData(index)
+        txt = self.__editor.text(lineno - 1).rstrip()
+        pos = len(txt.replace(txt.strip(), ""))
+        self.__editor.gotoLine(lineno, pos if pos == 0 else pos +1)
+        self.__editor.setFocus()
+        
+        # step 2: populate the members combo, if the entry is a class
+        self.__membersCombo.clear()
+        entryName = self.__globalsCombo.itemText(index)
+        if self.__module and entryName in self.__module.classes:
+            cl = self.__module.classes[entryName]
+            
+            # step 2.1: add class methods
+            items = []
+            for meth in cl.methods.values():
+                if meth.modifier == Function.Static:
+                    icon = UI.PixmapCache.getIcon("method_static.png")
+                elif meth.modifier == Function.Class:
+                    icon = UI.PixmapCache.getIcon("method_class.png")
+                elif meth.isPrivate():
+                    icon = UI.PixmapCache.getIcon("method_private.png")
+                elif meth.isProtected():
+                    icon = UI.PixmapCache.getIcon("method_protected.png")
+                else:
+                    icon = UI.PixmapCache.getIcon("method.png")
+                items.append((meth.name, icon, meth.lineno))
+            for itm in sorted(items):
+                self.__membersCombo.addItem(itm[1], itm[0], itm[2])
+            
+            # step 2.2: add class instance attributes
+            items = []
+            for attr in cl.attributes.values():
+                if attr.isPrivate():
+                    icon = UI.PixmapCache.getIcon("attribute_private.png")
+                elif attr.isProtected():
+                    icon = UI.PixmapCache.getIcon("attribute_protected.png")
+                else:
+                    icon = UI.PixmapCache.getIcon("attribute.png")
+                items.append((attr.name, icon, attr.lineno))
+            for itm in sorted(items):
+                self.__membersCombo.addItem(itm[1], itm[0], itm[2])
+            
+            # step 2.3: add class attributes
+            items = []
+            icon = UI.PixmapCache.getIcon("attribute_class.png")
+            for glob in cl.globals.values():
+                items.append((glob.name, icon, glob.lineno))
+            for itm in sorted(items):
+                self.__membersCombo.addItem(itm[1], itm[0], itm[2])
+    
+    def __membersActivated(self, index):
+        """
+        Private method to jump to the line of the selected members entry.
+        
+        @param index index of the selected entry (integer)
+        """
+        lineno = self.__membersCombo.itemData(index)
+        txt = self.__editor.text(lineno - 1).rstrip()
+        pos = len(txt.replace(txt.strip(), ""))
+        self.__editor.gotoLine(lineno, pos if pos == 0 else pos +1)
+        self.__editor.setFocus()
+    
+    def __resetParseTimer(self):
+        """
+        Private slot to reset the parse timer.
+        """
+        self.__parseTimer.stop()
+        self.__parseTimer.start()
+    
+    def __parseEditor(self):
+        """
+        Private method to parse the editor source and repopulate the globals combo.
+        """
+        self.__module = None
+        sourceType = getTypeFromTypeName(self.__editor.determineFileType())
+        if sourceType != -1:
+            src = self.__editor.text()
+            if src:
+                fn = self.__editor.getFileName()
+                if fn is None:
+                    fn = ""
+                self.__module = Module("", fn, sourceType)
+                self.__module.scan(src)
+                
+                self.__globalsCombo.clear()
+                self.__membersCombo.clear()
+                
+                self.__globalsCombo.addItem("")
+                
+                # step 1: add classes
+                items = []
+                for cl in self.__module.classes.values():
+                    if cl.isPrivate():
+                        icon = UI.PixmapCache.getIcon("class_private.png")
+                    elif cl.isProtected():
+                        icon = UI.PixmapCache.getIcon("class_protected.png")
+                    else:
+                        icon = UI.PixmapCache.getIcon("class.png")
+                    items.append((cl.name, icon, cl.lineno))
+                for itm in sorted(items):
+                    self.__globalsCombo.addItem(itm[1], itm[0], itm[2])
+                
+                # step 2: add functions
+                items = []
+                for func in self.__module.functions.values():
+                    if func.isPrivate():
+                        icon = UI.PixmapCache.getIcon("method_private.png")
+                    elif func.isProtected():
+                        icon = UI.PixmapCache.getIcon("method_protected.png")
+                    else:
+                        icon = UI.PixmapCache.getIcon("method.png")
+                    items.append((func.name, icon, func.lineno))
+                for itm in sorted(items):
+                    self.__globalsCombo.addItem(itm[1], itm[0], itm[2])
+                
+                # step 3: add attributes
+                items = []
+                for glob in self.__module.globals.values():
+                    if glob.isPrivate():
+                        icon = UI.PixmapCache.getIcon("attribute_private.png")
+                    elif glob.isProtected():
+                        icon = UI.PixmapCache.getIcon("attribute_protected.png")
+                    else:
+                        icon = UI.PixmapCache.getIcon("attribute.png")
+                    items.append((glob.name, icon, glob.lineno))
+                for itm in sorted(items):
+                    self.__globalsCombo.addItem(itm[1], itm[0], itm[2])
diff -r 68fb0a7677ff -r c1622c708cd9 Utilities/ModuleParser.py
--- a/Utilities/ModuleParser.py	Mon Oct 03 16:08:32 2011 +0200
+++ b/Utilities/ModuleParser.py	Mon Oct 03 18:52:38 2011 +0200
@@ -25,7 +25,8 @@
 from functools import reduce
 import Preferences
 
-__all__ = ["Module", "Class", "Function", "RbModule", "readModule"]
+__all__ = ["Module", "Class", "Function", "Attribute", "RbModule", "readModule",
+           "getTypeFromTypeName"]
 
 TABWIDTH = 4
 
@@ -33,6 +34,27 @@
 RB_SOURCE = 129
 
 SUPPORTED_TYPES = [imp.PY_SOURCE, PTL_SOURCE, RB_SOURCE]
+PARSEABLE_TYPES = ["Python", "Python2", "Python3", "Ruby"]
+TYPE_MAPPING = {
+    "Python": imp.PY_SOURCE,
+    "Python2": imp.PY_SOURCE,
+    "Python3": imp.PY_SOURCE,
+    "Ruby": RB_SOURCE,
+}
+
+
+def getTypeFromTypeName(name):
+    """
+    Module function to determine the module type given the module type name.
+    
+    @param name module type name (string)
+    @return module type or -1 for failure (integer)
+    """
+    if name in TYPE_MAPPING:
+        return TYPE_MAPPING[name]
+    else:
+        return -1
+
 
 _py_getnext = re.compile(r"""
     (?P<String>
diff -r 68fb0a7677ff -r c1622c708cd9 ViewManager/ViewManager.py
--- a/ViewManager/ViewManager.py	Mon Oct 03 16:08:32 2011 +0200
+++ b/ViewManager/ViewManager.py	Mon Oct 03 18:52:38 2011 +0200
@@ -25,6 +25,7 @@
 from .BookmarkedFilesDialog import BookmarkedFilesDialog
 
 from QScintilla.Editor import Editor
+from QScintilla.EditorAssembly import EditorAssembly
 from QScintilla.GotoDialog import GotoDialog
 from QScintilla.SearchReplaceWidget import SearchReplaceWidget
 from QScintilla.ZoomDialog import ZoomDialog
@@ -3256,8 +3257,9 @@
         @param fn filename of this view
         @return reference to the new editor object (Editor.Editor)
         """
-        editor = Editor(self.dbs, fn, self, filetype=filetype, editor=caller,
-                        tv=e5App().getObject("TaskViewer"))
+        assembly = EditorAssembly(self.dbs, fn, self, filetype=filetype, editor=caller,
+                                  tv=e5App().getObject("TaskViewer"))
+        editor = assembly.getEditor()
         self.editors.append(editor)
         self.__connectEditor(editor)
         self.__editorOpened()
@@ -3409,8 +3411,9 @@
                 if Utilities.samepath(fn, editor.getFileName()):
                     break
             else:
-                editor = Editor(self.dbs, fn, self, filetype=filetype,
-                                tv=e5App().getObject("TaskViewer"))
+                assembly = EditorAssembly(self.dbs, fn, self, filetype=filetype,
+                                          tv=e5App().getObject("TaskViewer"))
+                editor = assembly.getEditor()
                 self.editors.append(editor)
                 self.__connectEditor(editor)
                 self.__editorOpened()
@@ -3583,7 +3586,9 @@
         """
         Public slot to generate a new empty editor.
         """
-        editor = Editor(self.dbs, None, self, tv=e5App().getObject("TaskViewer"))
+        assembly = EditorAssembly(self.dbs, None, self,
+                                  tv=e5App().getObject("TaskViewer"))
+        editor = assembly.getEditor()
         self.editors.append(editor)
         self.__connectEditor(editor)
         self._addView(editor, None)
diff -r 68fb0a7677ff -r c1622c708cd9 changelog
--- a/changelog	Mon Oct 03 16:08:32 2011 +0200
+++ b/changelog	Mon Oct 03 18:52:38 2011 +0200
@@ -14,6 +14,7 @@
      view managers to open an associated 'rejections' file (i.e. same file name
      with '.rej' appended)
   -- added a syntax check while typing function
+  -- added source navigation function for Python 2, Python 3 and Ruby sources
 - enhancements of the cooperation functions
   -- added code to the cooperation functions to support IPv6
 - enhancements of the source browser
diff -r 68fb0a7677ff -r c1622c708cd9 eric5.e4p
--- a/eric5.e4p	Mon Oct 03 16:08:32 2011 +0200
+++ b/eric5.e4p	Mon Oct 03 18:52:38 2011 +0200
@@ -401,9 +401,6 @@
     <Source>MultiProject/AddProjectDialog.py</Source>
     <Source>MultiProject/MultiProjectBrowser.py</Source>
     <Source>Preferences/ConfigurationPages/MultiProjectPage.py</Source>
-    <Source>Plugins/ViewManagerPlugins/MdiArea/__init__.py</Source>
-    <Source>Plugins/ViewManagerPlugins/MdiArea/MdiArea.py</Source>
-    <Source>Plugins/PluginVmMdiArea.py</Source>
     <Source>QScintilla/Lexers/LexerTCL.py</Source>
     <Source>Graphics/SvgDiagram.py</Source>
     <Source>Project/ProjectBrowserFlags.py</Source>
@@ -933,6 +930,7 @@
     <Source>Plugins/VcsPlugins/vcsMercurial/HgExportDialog.py</Source>
     <Source>Plugins/VcsPlugins/vcsMercurial/HgClientPromptDialog.py</Source>
     <Source>Preferences/ConfigurationPages/EditorSyntaxPage.py</Source>
+    <Source>QScintilla/EditorAssembly.py</Source>
   </Sources>
   <Forms>
     <Form>PyUnit/UnittestDialog.ui</Form>
@@ -1244,7 +1242,6 @@
     <Other>CodeTemplates</Other>
     <Other>Plugins/ViewManagerPlugins/Listspace/preview.png</Other>
     <Other>Plugins/ViewManagerPlugins/Tabview/preview.png</Other>
-    <Other>Plugins/ViewManagerPlugins/MdiArea/preview.png</Other>
     <Other>Plugins/VcsPlugins/vcsPySvn/icons/pysvn.png</Other>
     <Other>Plugins/VcsPlugins/vcsSubversion/icons/subversion.png</Other>
     <Other>Plugins/VcsPlugins/vcsPySvn/icons/preferences-subversion.png</Other>

eric ide

mercurial