From 01f04d02a156d046649f0aec215d352bf3dbf706 Mon Sep 17 00:00:00 2001 From: Supreeeme Date: Sun, 13 Jun 2021 16:47:47 -0400 Subject: [PATCH 1/6] Gedit 40 update --- README.markdown | 8 ++++---- screenshot.png | Bin 23066 -> 97292 bytes sourcecodebrowser.plugin | 2 +- sourcecodebrowser/__init__.py | 4 ++-- sourcecodebrowser/ctags.py | 10 ++++++++-- sourcecodebrowser/plugin.py | 20 ++++++++++++-------- 6 files changed, 27 insertions(+), 17 deletions(-) diff --git a/README.markdown b/README.markdown index 4137cac..1eec6e8 100644 --- a/README.markdown +++ b/README.markdown @@ -1,9 +1,9 @@ Gedit Source Code Browser ========================= -![No Longer Maintained](https://img.shields.io/badge/maintained-no-red.svg) +![Currently Maintained](https://img.shields.io/badge/maintained-yes-brightgreen.svg) -A source code class and function browser plugin for Gedit 3. +A source code class and function browser plugin for Gedit 40. This plugin will add a new tab to the side pane in the Gedit text editor which shows symbols (functions, classes, variables, etc.) for the active document. @@ -17,7 +17,7 @@ for a list of the 41 programming languages supported by this plugin. Requirements ------------ -This plugins is for Gedit 3 and is **not compatible with Gedit 2.x**. +This plugins is for Gedit 40. The Gedit Source Code Browser plugin uses [Exuberant Ctags](http://ctags.sourceforge.net/) to parse symbols @@ -36,7 +36,7 @@ Installation 1. Download this repository by clicking the Downloads button at the top of the github page or issue the following command in a terminal: - git clone git://github.com/MicahCarrick/gedit-source-code-browser.git + git clone git://github.com/Supreeeme/gedit-source-code-browser.git 2. Copy the file `sourcecodebrowser.plugin` and the folder `sourcecodebrowser` to `~/.local/share/gedit/plugins/`. diff --git a/screenshot.png b/screenshot.png index c4e54a2ae60d2479f3d4fbbf31d42f1ebed9b64c..2384babf4db2d189d27c322932b3820714d1a1d3 100644 GIT binary patch literal 97292 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
-2)%nF^<2z`)p+RL^t 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 V>A6Jja6rIAQcUh?fr!5E{{tU#?N$H) literal 23066 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 diff --git a/sourcecodebrowser.plugin b/sourcecodebrowser.plugin index c929aca..f3945c1 100644 --- a/sourcecodebrowser.plugin +++ b/sourcecodebrowser.plugin @@ -1,5 +1,5 @@ [Plugin] -Loader=python +Loader=python3 Module=sourcecodebrowser IAge=3 Name=Source Code Browser diff --git a/sourcecodebrowser/__init__.py b/sourcecodebrowser/__init__.py index b302f1f..7698b20 100644 --- a/sourcecodebrowser/__init__.py +++ b/sourcecodebrowser/__init__.py @@ -1,3 +1,3 @@ -import plugin -from plugin import SourceCodeBrowserPlugin +from . import plugin +from .plugin import SourceCodeBrowserPlugin diff --git a/sourcecodebrowser/ctags.py b/sourcecodebrowser/ctags.py index 7e978c6..d22cb8f 100644 --- a/sourcecodebrowser/ctags.py +++ b/sourcecodebrowser/ctags.py @@ -95,12 +95,15 @@ def _parse_text(self, text): Parses ctags text which may have come from a TAG file or from raw output from a ctags command. """ + #print(str(text, 'utf-8')) for line in text.splitlines(): name = None file = None ex_command = None kind = None - for i, field in enumerate(line.split("\t")): + for i, f in enumerate(line.split(b'\t')): + # print(i, f) + field = str(f, 'utf-8') if i == 0: tag = Tag(field) elif i == 1: tag.file = field elif i == 2: tag.ex_command = field @@ -146,4 +149,7 @@ def get_tree(self): return tree """ - + +if __name__ == "__main__": + the_parser = Parser() + the_parser.parse("ctags -nu --fields=fiKlmnsSzt -f - ctags.py", "ctags") diff --git a/sourcecodebrowser/plugin.py b/sourcecodebrowser/plugin.py index 19123fc..f0d1e47 100644 --- a/sourcecodebrowser/plugin.py +++ b/sourcecodebrowser/plugin.py @@ -2,9 +2,13 @@ import sys import logging import tempfile -import ctags +from . import ctags from gi.repository import GObject, GdkPixbuf, Gedit, Gtk, PeasGtk, Gio +import gi +gi.require_version('Tepl', '6') +from gi.repository import Tepl + logging.basicConfig() LOG_LEVEL = logging.WARN SETTINGS_SCHEMA = "org.gnome.gedit.plugins.sourcecodebrowser" @@ -330,7 +334,7 @@ def do_activate(self): self._sourcetree.expand_rows = self.expand_rows self._sourcetree.sort_list = self.sort_list panel = self.window.get_side_panel() - panel.add_item(self._sourcetree, "SymbolBrowserPlugin", "Source Code", self.icon) + panel.add_titled(self._sourcetree, "SymbolBrowserPlugin", "Source Code") self._handlers = [] hid = self._sourcetree.connect("focus", self.on_sourcetree_focus) self._handlers.append((self._sourcetree, hid)) @@ -353,7 +357,7 @@ def do_deactivate(self): obj.disconnect(hid) self._handlers = None pane = self.window.get_side_panel() - pane.remove_item(self._sourcetree) + pane.remove(self._sourcetree) self._sourcetree = None def _has_settings_schema(self): @@ -393,12 +397,12 @@ def _load_active_document_symbols(self): self._is_loaded = False # do not load if not the active tab in the panel panel = self.window.get_side_panel() - if not panel.item_is_active(self._sourcetree): + if panel.get_visible_child() != self._sourcetree: return document = self.window.get_active_document() if document: - location = document.get_location() + location = document.get_file().get_location() if location: uri = location.get_uri() self._log.debug("Loading %s...", uri) @@ -470,8 +474,8 @@ def on_tag_activated(self, sourcetree, location, data=None): document = self.window.get_active_document() view = self.window.get_active_view() line = int(line) - 1 # lines start from 0 - document.goto_line(line) - view.scroll_to_cursor() + + Tepl.View.goto_line(view, line) def _version_check(self): """ Make sure the exhuberant ctags is installed. """ @@ -481,4 +485,4 @@ def _version_check(self): (self.ctags_executable)) - + From b2eaa14ab92c149340b6c2a257b67aa6518b9407 Mon Sep 17 00:00:00 2001 From: Supreeeme Date: Sun, 13 Jun 2021 17:08:09 -0400 Subject: [PATCH 2/6] Rename README.markdown to README.md --- README.markdown | 107 ------------------------------------------------ 1 file changed, 107 deletions(-) delete mode 100644 README.markdown diff --git a/README.markdown b/README.markdown deleted file mode 100644 index 1eec6e8..0000000 --- a/README.markdown +++ /dev/null @@ -1,107 +0,0 @@ -Gedit Source Code Browser -========================= - -![Currently Maintained](https://img.shields.io/badge/maintained-yes-brightgreen.svg) - -A source code class and function browser plugin for Gedit 40. - -This plugin will add a new tab to the side pane in the Gedit text editor which -shows symbols (functions, classes, variables, etc.) for the active document. -Clicking a symbol in the list wil jump to the line on which that symbol is -defined. - -See the [ctags supported languages](http://ctags.sourceforge.net/languages.html) -for a list of the 41 programming languages supported by this plugin. - - -Requirements ------------- - -This plugins is for Gedit 40. - -The Gedit Source Code Browser plugin uses -[Exuberant Ctags](http://ctags.sourceforge.net/) to parse symbols -out of source code. Exuberant Ctags is avaialable in the software repository for -many distributions. To make sure you have ctags correctly installed, issue -the following command: - - ctags --version - -Make sure that you see *Exuberant* Ctags in the version output. - - -Installation ------------- - -1. Download this repository by clicking the Downloads button at the top of the - github page or issue the following command in a terminal: - - git clone git://github.com/Supreeeme/gedit-source-code-browser.git - -2. Copy the file `sourcecodebrowser.plugin` and the folder `sourcecodebrowser` to - `~/.local/share/gedit/plugins/`. - -3. Restart Gedit. - -4. Activate the plugin in Gedit by choosing 'Edit > Preferences', the selecting - the 'Plugins' tab, and checking the box next to 'Soucre Code Browser'. - -5. (Optional) If you want to enable the configuration dialog you need to compile - the settings schema. You must do this as root. - - cd /home/<YOUR USER NAME>/.local/share/gedit/plugins/sourcecodebrowser/data/ - - cp org.gnome.gedit.plugins.sourcecodebrowser.gschema.xml /usr/share/glib-2.0/schemas/ - - glib-compile-schemas /usr/share/glib-2.0/schemas/ - -Screenshots ------------ - -![Python code in Source Code Browser](screenshot.png) - - -Known Issues ------------- - -* CSS is not supported. This issue is about ctags and not this plugin. You can - [extend ctags](http://ctags.sourceforge.net/EXTENDING.html) to add support for - any language you like. Many people have provided their fixes to on internet - such as this [patch for CSS support](http://scie.nti.st/2006/12/22/how-to-add-css-support-to-ctags). - -* PHP is supported, however, PHP5 classes are not well supported. This is again - an issue with ctags. There are numerous fixes to be found onn the internet - such as these - [patches for better PHP5 support](http://www.jejik.com/articles/2008/11/patching_exuberant-ctags_for_better_php5_support_in_vim/). - - -License -------- - -Copyright (c) 2011, Micah Carrick -All rights reserved. - -Redistribution and use in source and binary forms, with or without modification, -are permitted provided that the following conditions are met: - -* Redistributions of source code must retain the above copyright notice, this -list of conditions and the following disclaimer. - -* Redistributions in binary form must reproduce the above copyright notice, -this list of conditions and the following disclaimer in the documentation -and/or other materials provided with the distribution. - -* Neither the name of Micah Carrick nor the names of its -contributors may be used to endorse or promote products derived from this -software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR -ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON -ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. From 7fbd7e07f98217b8ea4ba518803c1788fc6c161a Mon Sep 17 00:00:00 2001 From: Supreeeme Date: Sun, 13 Jun 2021 17:09:36 -0400 Subject: [PATCH 3/6] Actually add the readme --- README.md | 107 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 107 insertions(+) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 0000000..1eec6e8 --- /dev/null +++ b/README.md @@ -0,0 +1,107 @@ +Gedit Source Code Browser +========================= + +![Currently Maintained](https://img.shields.io/badge/maintained-yes-brightgreen.svg) + +A source code class and function browser plugin for Gedit 40. + +This plugin will add a new tab to the side pane in the Gedit text editor which +shows symbols (functions, classes, variables, etc.) for the active document. +Clicking a symbol in the list wil jump to the line on which that symbol is +defined. + +See the [ctags supported languages](http://ctags.sourceforge.net/languages.html) +for a list of the 41 programming languages supported by this plugin. + + +Requirements +------------ + +This plugins is for Gedit 40. + +The Gedit Source Code Browser plugin uses +[Exuberant Ctags](http://ctags.sourceforge.net/) to parse symbols +out of source code. Exuberant Ctags is avaialable in the software repository for +many distributions. To make sure you have ctags correctly installed, issue +the following command: + + ctags --version + +Make sure that you see *Exuberant* Ctags in the version output. + + +Installation +------------ + +1. Download this repository by clicking the Downloads button at the top of the + github page or issue the following command in a terminal: + + git clone git://github.com/Supreeeme/gedit-source-code-browser.git + +2. Copy the file `sourcecodebrowser.plugin` and the folder `sourcecodebrowser` to + `~/.local/share/gedit/plugins/`. + +3. Restart Gedit. + +4. Activate the plugin in Gedit by choosing 'Edit > Preferences', the selecting + the 'Plugins' tab, and checking the box next to 'Soucre Code Browser'. + +5. (Optional) If you want to enable the configuration dialog you need to compile + the settings schema. You must do this as root. + + cd /home/<YOUR USER NAME>/.local/share/gedit/plugins/sourcecodebrowser/data/ + + cp org.gnome.gedit.plugins.sourcecodebrowser.gschema.xml /usr/share/glib-2.0/schemas/ + + glib-compile-schemas /usr/share/glib-2.0/schemas/ + +Screenshots +----------- + +![Python code in Source Code Browser](screenshot.png) + + +Known Issues +------------ + +* CSS is not supported. This issue is about ctags and not this plugin. You can + [extend ctags](http://ctags.sourceforge.net/EXTENDING.html) to add support for + any language you like. Many people have provided their fixes to on internet + such as this [patch for CSS support](http://scie.nti.st/2006/12/22/how-to-add-css-support-to-ctags). + +* PHP is supported, however, PHP5 classes are not well supported. This is again + an issue with ctags. There are numerous fixes to be found onn the internet + such as these + [patches for better PHP5 support](http://www.jejik.com/articles/2008/11/patching_exuberant-ctags_for_better_php5_support_in_vim/). + + +License +------- + +Copyright (c) 2011, Micah Carrick +All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + +* Redistributions of source code must retain the above copyright notice, this +list of conditions and the following disclaimer. + +* Redistributions in binary form must reproduce the above copyright notice, +this list of conditions and the following disclaimer in the documentation +and/or other materials provided with the distribution. + +* Neither the name of Micah Carrick nor the names of its +contributors may be used to endorse or promote products derived from this +software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. From 081e575e48ac0dc1cf5dc11326c522bc3cbb1fb0 Mon Sep 17 00:00:00 2001 From: lotharla Date: Wed, 27 Jul 2022 00:05:56 +0200 Subject: [PATCH 4/6] use-bottom-panel --- sourcecodebrowser/data/configure_dialog.ui | 19 +++++ ...edit.plugins.sourcecodebrowser.gschema.xml | 5 ++ sourcecodebrowser/plugin.py | 70 +++++++++++++++---- 3 files changed, 81 insertions(+), 13 deletions(-) diff --git a/sourcecodebrowser/data/configure_dialog.ui b/sourcecodebrowser/data/configure_dialog.ui index a1f46e3..784be0a 100644 --- a/sourcecodebrowser/data/configure_dialog.ui +++ b/sourcecodebrowser/data/configure_dialog.ui @@ -45,6 +45,25 @@ True False vertical + + + Use _bottom panel + True + True + False + False + True + 0 + True + + + + False + True + 6 + 0 + + Show _line numbers in tree diff --git a/sourcecodebrowser/data/org.gnome.gedit.plugins.sourcecodebrowser.gschema.xml b/sourcecodebrowser/data/org.gnome.gedit.plugins.sourcecodebrowser.gschema.xml index c7313f2..f8fd62f 100644 --- a/sourcecodebrowser/data/org.gnome.gedit.plugins.sourcecodebrowser.gschema.xml +++ b/sourcecodebrowser/data/org.gnome.gedit.plugins.sourcecodebrowser.gschema.xml @@ -1,6 +1,11 @@ + + true + Use bottom panel + Use the bottom panel for the source tree. + false Show Line Numbers diff --git a/sourcecodebrowser/plugin.py b/sourcecodebrowser/plugin.py index f0d1e47..245ab06 100644 --- a/sourcecodebrowser/plugin.py +++ b/sourcecodebrowser/plugin.py @@ -5,10 +5,13 @@ from . import ctags from gi.repository import GObject, GdkPixbuf, Gedit, Gtk, PeasGtk, Gio -import gi -gi.require_version('Tepl', '6') -from gi.repository import Tepl - +try: + import gi + gi.require_version('Tepl', '6') + from gi.repository import Tepl +except: + Tepl = None + logging.basicConfig() LOG_LEVEL = logging.WARN SETTINGS_SCHEMA = "org.gnome.gedit.plugins.sourcecodebrowser" @@ -36,6 +39,7 @@ def __init__(self): # preferences (should be set by plugin) self.show_line_numbers = True + self.use_bottom_panel = False self.ctags_executable = 'ctags' self.expand_rows = True self.sort_list = True @@ -267,6 +271,9 @@ def get_widget(self, has_schema): builder.get_object("show_line_numbers").set_active( self._settings.get_boolean('show-line-numbers') ) + builder.get_object("use_bottom_panel").set_active( + self._settings.get_boolean('use-bottom-panel') + ) builder.get_object("expand_rows").set_active( self._settings.get_boolean('expand-rows') ) @@ -285,6 +292,9 @@ def get_widget(self, has_schema): def on_show_line_numbers_toggled(self, button, data=None): self._settings.set_boolean('show-line-numbers', button.get_active()) + def on_use_bottom_panel_toggled(self, button, data=None): + self._settings.set_boolean('use-bottom-panel', button.get_active()) + def on_expand_rows_toggled(self, button, data=None): self._settings.set_boolean('expand-rows', button.get_active()) @@ -331,12 +341,12 @@ def do_activate(self): self._sourcetree = SourceTree() self._sourcetree.ctags_executable = self.ctags_executable self._sourcetree.show_line_numbers = self.show_line_numbers + self._sourcetree.use_bottom_panel = self.use_bottom_panel self._sourcetree.expand_rows = self.expand_rows self._sourcetree.sort_list = self.sort_list - panel = self.window.get_side_panel() - panel.add_titled(self._sourcetree, "SymbolBrowserPlugin", "Source Code") + self._insert_sourcetree_pane() self._handlers = [] - hid = self._sourcetree.connect("focus", self.on_sourcetree_focus) + hid = self._sourcetree.connect("focus" if Tepl else "draw", self.on_sourcetree_focus) self._handlers.append((self._sourcetree, hid)) if self.ctags_version is not None: hid = self._sourcetree.connect('tag-activated', self.on_tag_activated) @@ -349,15 +359,33 @@ def do_activate(self): self._handlers.append((self.window, hid)) else: self._sourcetree.set_sensitive(False) - + + def _insert_sourcetree_pane(self): + if self._sourcetree.use_bottom_panel: + panel = self.window.get_bottom_panel() + panel.add_titled(self._sourcetree, "SymbolBrowserPlugin", "Source Tags") + panel.show() + self._sourcetree.show_all() + panel.set_visible_child(self._sourcetree) + else: + panel = self.window.get_side_panel() + panel.add_titled(self._sourcetree, "SymbolBrowserPlugin", "Source Code") + + def _remove_sourcetree_pane(self): + if self._sourcetree.use_bottom_panel: + panel = self.window.get_bottom_panel() + panel.remove(self._sourcetree) + else: + panel = self.window.get_side_panel() + panel.remove(self._sourcetree) + def do_deactivate(self): """ Deactivate the plugin """ self._log.debug("Deactivating plugin") for obj, hid in self._handlers: obj.disconnect(hid) self._handlers = None - pane = self.window.get_side_panel() - pane.remove(self._sourcetree) + self._remove_sourcetree_pane() self._sourcetree = None def _has_settings_schema(self): @@ -373,11 +401,13 @@ def _init_settings(self): settings = Gio.Settings.new(SETTINGS_SCHEMA) self.load_remote_files = settings.get_boolean("load-remote-files") self.show_line_numbers = settings.get_boolean("show-line-numbers") + self.use_bottom_panel = settings.get_boolean("use-bottom-panel") self.expand_rows = settings.get_boolean("expand-rows") self.sort_list = settings.get_boolean("sort-list") self.ctags_executable = settings.get_string("ctags-executable") settings.connect("changed::load-remote-files", self.on_setting_changed) settings.connect("changed::show-line-numbers", self.on_setting_changed) + settings.connect("changed::use-bottom-panel", self.on_setting_changed) settings.connect("changed::expand-rows", self.on_setting_changed) settings.connect("changed::sort-list", self.on_setting_changed) settings.connect("changed::ctags-executable", self.on_setting_changed) @@ -387,6 +417,7 @@ def _init_settings(self): self._settings = None self.load_remote_files = True self.show_line_numbers = False + self.use_bottom_panel = False self.expand_rows = True self.sort_list = True self.ctags_executable = 'ctags' @@ -396,7 +427,11 @@ def _load_active_document_symbols(self): self._sourcetree.clear() self._is_loaded = False # do not load if not the active tab in the panel - panel = self.window.get_side_panel() + if self._sourcetree.use_bottom_panel: + panel = self.window.get_bottom_panel() + panel.props.visible_child = self._sourcetree + else: + panel = self.window.get_side_panel() if panel.get_visible_child() != self._sourcetree: return @@ -433,6 +468,7 @@ def on_setting_changed(self, settings, key, data=None): """ self.load_remote_files = True self.show_line_numbers = False + self.use_bottom_panel = False self.expand_rows = True self.ctags_executable = 'ctags' """ @@ -440,6 +476,8 @@ def on_setting_changed(self, settings, key, data=None): self.load_remote_files = self._settings.get_boolean(key) elif key == 'show-line-numbers': self.show_line_numbers = self._settings.get_boolean(key) + elif key == 'use-bottom-panel': + self.use_bottom_panel = self._settings.get_boolean(key) elif key == 'expand-rows': self.expand_rows = self._settings.get_boolean(key) elif key == 'sort-list': @@ -450,6 +488,9 @@ def on_setting_changed(self, settings, key, data=None): if self._sourcetree is not None: self._sourcetree.ctags_executable = self.ctags_executable self._sourcetree.show_line_numbers = self.show_line_numbers + self._remove_sourcetree_pane() + self._sourcetree.use_bottom_panel = self.use_bottom_panel + self._insert_sourcetree_pane() self._sourcetree.expand_rows = self.expand_rows self._sourcetree.sort_list = self.sort_list self._sourcetree.expanded_rows = {} @@ -474,8 +515,11 @@ def on_tag_activated(self, sourcetree, location, data=None): document = self.window.get_active_document() view = self.window.get_active_view() line = int(line) - 1 # lines start from 0 - - Tepl.View.goto_line(view, line) + if Tepl: + Tepl.View.goto_line(view, line) + else: + document.goto_line(line) + view.scroll_to_cursor() def _version_check(self): """ Make sure the exhuberant ctags is installed. """ From e77762e3ac5ca925f2aa5102c3667ab2f0378758 Mon Sep 17 00:00:00 2001 From: lotharla Date: Sat, 30 Jul 2022 20:22:25 +0200 Subject: [PATCH 5/6] improvements --- sourcecodebrowser/ctags.py | 2 +- sourcecodebrowser/data/configure_dialog.ui | 54 ++++++++---- ...edit.plugins.sourcecodebrowser.gschema.xml | 5 ++ sourcecodebrowser/plugin.py | 84 ++++++++++++++----- 4 files changed, 110 insertions(+), 35 deletions(-) diff --git a/sourcecodebrowser/ctags.py b/sourcecodebrowser/ctags.py index d22cb8f..36176ea 100644 --- a/sourcecodebrowser/ctags.py +++ b/sourcecodebrowser/ctags.py @@ -135,7 +135,7 @@ def get_tree(self): if not p in node: node[p] = {'tag':None, 'children':{}} node = node[p] - print node + print(node) node['tag'] = tag else: if not parent in self.tree: diff --git a/sourcecodebrowser/data/configure_dialog.ui b/sourcecodebrowser/data/configure_dialog.ui index a1f46e3..18c6ac2 100644 --- a/sourcecodebrowser/data/configure_dialog.ui +++ b/sourcecodebrowser/data/configure_dialog.ui @@ -1,6 +1,7 @@ + - + False 5 @@ -8,6 +9,9 @@ dialog True True + + + False @@ -20,10 +24,10 @@ gtk-close + False True True True - False True @@ -45,13 +49,32 @@ True False vertical + + + Use _bottom panel + False + True + True + False + True + 0 + True + + + + False + True + 6 + 0 + + Show _line numbers in tree + False True True False - False True 0 True @@ -67,10 +90,10 @@ Load symbols from _remote files + False True True False - False True 0 True @@ -86,10 +109,10 @@ Start with rows _expanded + False True True False - False True 0 True @@ -105,10 +128,10 @@ _Sort list alphabetically + False True True False - False True 0 True @@ -124,13 +147,15 @@ True - False + True + True True - False - 0 + True + 5 ctags executable + 0 False @@ -139,18 +164,16 @@ - + True True - - ctags - True - + True + + False True - 6 1 @@ -159,6 +182,7 @@ False True 6 + end 4 diff --git a/sourcecodebrowser/data/org.gnome.gedit.plugins.sourcecodebrowser.gschema.xml b/sourcecodebrowser/data/org.gnome.gedit.plugins.sourcecodebrowser.gschema.xml index c7313f2..f8fd62f 100644 --- a/sourcecodebrowser/data/org.gnome.gedit.plugins.sourcecodebrowser.gschema.xml +++ b/sourcecodebrowser/data/org.gnome.gedit.plugins.sourcecodebrowser.gschema.xml @@ -1,6 +1,11 @@ + + true + Use bottom panel + Use the bottom panel for the source tree. + false Show Line Numbers diff --git a/sourcecodebrowser/plugin.py b/sourcecodebrowser/plugin.py index f0d1e47..876c5ca 100644 --- a/sourcecodebrowser/plugin.py +++ b/sourcecodebrowser/plugin.py @@ -5,10 +5,12 @@ from . import ctags from gi.repository import GObject, GdkPixbuf, Gedit, Gtk, PeasGtk, Gio -import gi -gi.require_version('Tepl', '6') -from gi.repository import Tepl - +try: + gi.require_version('Tepl', '6') + from gi.repository import Tepl +except: + Tepl = None + logging.basicConfig() LOG_LEVEL = logging.WARN SETTINGS_SCHEMA = "org.gnome.gedit.plugins.sourcecodebrowser" @@ -19,7 +21,7 @@ class SourceTree(Gtk.VBox): """ Source Tree Widget - A treeview storing the heirarchy of source code symbols within a particular + A treeview storing the hierarchy of source code symbols within a particular document. Requries exhuberant-ctags. """ __gsignals__ = { @@ -36,6 +38,7 @@ def __init__(self): # preferences (should be set by plugin) self.show_line_numbers = True + self.use_bottom_panel = False self.ctags_executable = 'ctags' self.expand_rows = True self.sort_list = True @@ -78,7 +81,7 @@ def clear(self): self._store.clear() def create_ui(self): - """ Craete the main user interface and pack into box. """ + """ Create the main user interface and pack into box. """ self._store = Gtk.TreeStore(GdkPixbuf.Pixbuf, # icon GObject.TYPE_STRING, # name GObject.TYPE_STRING, # kind @@ -119,7 +122,7 @@ def _get_tag_iter(self, tag, parent_iter=None): def _get_kind_iter(self, kind, uri, parent_iter=None): """ Get the iter for the specified kind. Creates a new node if the iter - is not found under the specirfied parent_iter. + is not found under the specified parent_iter. """ kind_iter = self._store.iter_children(parent_iter) while kind_iter: @@ -267,6 +270,9 @@ def get_widget(self, has_schema): builder.get_object("show_line_numbers").set_active( self._settings.get_boolean('show-line-numbers') ) + builder.get_object("use_bottom_panel").set_active( + self._settings.get_boolean('use-bottom-panel') + ) builder.get_object("expand_rows").set_active( self._settings.get_boolean('expand-rows') ) @@ -276,7 +282,7 @@ def get_widget(self, has_schema): builder.get_object("sort_list").set_active( self._settings.get_boolean('sort-list') ) - builder.get_object("ctags_executable").set_text( + builder.get_object("ctags_executable").set_filename( self._settings.get_string('ctags-executable') ) builder.connect_signals(self) @@ -285,6 +291,9 @@ def get_widget(self, has_schema): def on_show_line_numbers_toggled(self, button, data=None): self._settings.set_boolean('show-line-numbers', button.get_active()) + def on_use_bottom_panel_toggled(self, button, data=None): + self._settings.set_boolean('use-bottom-panel', button.get_active()) + def on_expand_rows_toggled(self, button, data=None): self._settings.set_boolean('expand-rows', button.get_active()) @@ -294,8 +303,8 @@ def on_load_remote_files_toggled(self, button, data=None): def on_sort_list_toggled(self, button, data=None): self._settings.set_boolean('sort-list', button.get_active()) - def on_ctags_executable_changed(self, editable, data=None): - self._settings.set_string('ctags-executable', editable.get_text()) + def on_ctags_executable_changed(self, button, data=None): + self._settings.set_string('ctags-executable', button.get_filename()) class SourceCodeBrowserPlugin(GObject.Object, Gedit.WindowActivatable, PeasGtk.Configurable): @@ -331,12 +340,12 @@ def do_activate(self): self._sourcetree = SourceTree() self._sourcetree.ctags_executable = self.ctags_executable self._sourcetree.show_line_numbers = self.show_line_numbers + self._sourcetree.use_bottom_panel = self.use_bottom_panel self._sourcetree.expand_rows = self.expand_rows self._sourcetree.sort_list = self.sort_list - panel = self.window.get_side_panel() - panel.add_titled(self._sourcetree, "SymbolBrowserPlugin", "Source Code") + self._insert_sourcetree_pane() self._handlers = [] - hid = self._sourcetree.connect("focus", self.on_sourcetree_focus) + hid = self._sourcetree.connect("focus" if Tepl else "draw", self.on_sourcetree_focus) self._handlers.append((self._sourcetree, hid)) if self.ctags_version is not None: hid = self._sourcetree.connect('tag-activated', self.on_tag_activated) @@ -349,15 +358,33 @@ def do_activate(self): self._handlers.append((self.window, hid)) else: self._sourcetree.set_sensitive(False) - + + def _insert_sourcetree_pane(self): + if self._sourcetree.use_bottom_panel: + panel = self.window.get_bottom_panel() + panel.add_titled(self._sourcetree, "SymbolBrowserPlugin", "Source Tags") + panel.show() + self._sourcetree.show_all() + panel.set_visible_child(self._sourcetree) + else: + panel = self.window.get_side_panel() + panel.add_titled(self._sourcetree, "SymbolBrowserPlugin", "Source Code") + + def _remove_sourcetree_pane(self): + if self._sourcetree.use_bottom_panel: + panel = self.window.get_bottom_panel() + panel.remove(self._sourcetree) + else: + panel = self.window.get_side_panel() + panel.remove(self._sourcetree) + def do_deactivate(self): """ Deactivate the plugin """ self._log.debug("Deactivating plugin") for obj, hid in self._handlers: obj.disconnect(hid) self._handlers = None - pane = self.window.get_side_panel() - pane.remove(self._sourcetree) + self._remove_sourcetree_pane() self._sourcetree = None def _has_settings_schema(self): @@ -373,11 +400,13 @@ def _init_settings(self): settings = Gio.Settings.new(SETTINGS_SCHEMA) self.load_remote_files = settings.get_boolean("load-remote-files") self.show_line_numbers = settings.get_boolean("show-line-numbers") + self.use_bottom_panel = settings.get_boolean("use-bottom-panel") self.expand_rows = settings.get_boolean("expand-rows") self.sort_list = settings.get_boolean("sort-list") self.ctags_executable = settings.get_string("ctags-executable") settings.connect("changed::load-remote-files", self.on_setting_changed) settings.connect("changed::show-line-numbers", self.on_setting_changed) + settings.connect("changed::use-bottom-panel", self.on_setting_changed) settings.connect("changed::expand-rows", self.on_setting_changed) settings.connect("changed::sort-list", self.on_setting_changed) settings.connect("changed::ctags-executable", self.on_setting_changed) @@ -387,6 +416,7 @@ def _init_settings(self): self._settings = None self.load_remote_files = True self.show_line_numbers = False + self.use_bottom_panel = False self.expand_rows = True self.sort_list = True self.ctags_executable = 'ctags' @@ -396,7 +426,12 @@ def _load_active_document_symbols(self): self._sourcetree.clear() self._is_loaded = False # do not load if not the active tab in the panel - panel = self.window.get_side_panel() + if self._sourcetree.use_bottom_panel: + panel = self.window.get_bottom_panel() + visible_child = panel.get_visible_child() + panel.props.visible_child = self._sourcetree + else: + panel = self.window.get_side_panel() if panel.get_visible_child() != self._sourcetree: return @@ -425,6 +460,8 @@ def _load_active_document_symbols(self): os.unlink(filename) self._loaded_document = document self._is_loaded = True + if self._sourcetree.use_bottom_panel and visible_child != self._sourcetree: + panel.props.visible_child = visible_child def on_active_tab_changed(self, window, tab, data=None): self._load_active_document_symbols() @@ -433,6 +470,7 @@ def on_setting_changed(self, settings, key, data=None): """ self.load_remote_files = True self.show_line_numbers = False + self.use_bottom_panel = False self.expand_rows = True self.ctags_executable = 'ctags' """ @@ -440,6 +478,8 @@ def on_setting_changed(self, settings, key, data=None): self.load_remote_files = self._settings.get_boolean(key) elif key == 'show-line-numbers': self.show_line_numbers = self._settings.get_boolean(key) + elif key == 'use-bottom-panel': + self.use_bottom_panel = self._settings.get_boolean(key) elif key == 'expand-rows': self.expand_rows = self._settings.get_boolean(key) elif key == 'sort-list': @@ -450,6 +490,9 @@ def on_setting_changed(self, settings, key, data=None): if self._sourcetree is not None: self._sourcetree.ctags_executable = self.ctags_executable self._sourcetree.show_line_numbers = self.show_line_numbers + self._remove_sourcetree_pane() + self._sourcetree.use_bottom_panel = self.use_bottom_panel + self._insert_sourcetree_pane() self._sourcetree.expand_rows = self.expand_rows self._sourcetree.sort_list = self.sort_list self._sourcetree.expanded_rows = {} @@ -474,8 +517,11 @@ def on_tag_activated(self, sourcetree, location, data=None): document = self.window.get_active_document() view = self.window.get_active_view() line = int(line) - 1 # lines start from 0 - - Tepl.View.goto_line(view, line) + if Tepl: + Tepl.View.goto_line(view, line) + else: + document.goto_line(line) + view.scroll_to_cursor() def _version_check(self): """ Make sure the exhuberant ctags is installed. """ From ab3e3fb808385ae854050a7ee3a7a5a8ce9e88df Mon Sep 17 00:00:00 2001 From: Ildar Mulyukov Date: Mon, 1 May 2023 19:37:35 +0600 Subject: [PATCH 6/6] plugin.py: tiny fix so that it works with newer gEdit --- sourcecodebrowser/plugin.py | 1 + 1 file changed, 1 insertion(+) diff --git a/sourcecodebrowser/plugin.py b/sourcecodebrowser/plugin.py index 876c5ca..a3614c6 100644 --- a/sourcecodebrowser/plugin.py +++ b/sourcecodebrowser/plugin.py @@ -3,6 +3,7 @@ import logging import tempfile from . import ctags +import gi from gi.repository import GObject, GdkPixbuf, Gedit, Gtk, PeasGtk, Gio try: