From a57bfd94fcffde61f1cdb6d5e5a1196748081baa Mon Sep 17 00:00:00 2001 From: itdominator <1itdominator@gmail.com> Date: Sun, 11 Jan 2026 18:30:51 -0600 Subject: [PATCH] Created helpers file for commands to reduce duplication --- src/core/widgets/code/command_helpers.py | 27 +++++++++++++++++++ src/core/widgets/code/commands/close_file.py | 3 ++- .../code/commands/dnd_load_file_to_buffer.py | 5 ++-- src/core/widgets/code/commands/load_file.py | 8 ++---- src/core/widgets/code/commands/new_file.py | 12 +++------ src/core/widgets/code/commands/open_files.py | 3 ++- src/core/widgets/code/commands/save_file.py | 6 ++--- .../widgets/code/commands/save_file_as.py | 8 +++--- src/core/widgets/code/commands/set_buffer.py | 5 ++-- 9 files changed, 45 insertions(+), 32 deletions(-) create mode 100644 src/core/widgets/code/command_helpers.py diff --git a/src/core/widgets/code/command_helpers.py b/src/core/widgets/code/command_helpers.py new file mode 100644 index 0000000..c947082 --- /dev/null +++ b/src/core/widgets/code/command_helpers.py @@ -0,0 +1,27 @@ +# Python imports + +# Lib imports +from gi.repository import GtkSource + +# Application imports + + + +def set_language_and_style(view, file): + language = view.language_manager.guess_language(file.fname, None) + file.ftype = language + file.buffer.set_language(language) + file.buffer.set_style_scheme(view.syntax_theme) + + return language + +def update_info_bar_if_focused(command_system, view: GtkSource): + has_focus = command_system.exec("has_focus") + if has_focus: + command_system.exec("update_info_bar") + +def get_file_and_buffer(view: GtkSource): + file = view.command.get_file(view) + buffer = file.buffer + + return file, buffer \ No newline at end of file diff --git a/src/core/widgets/code/commands/close_file.py b/src/core/widgets/code/commands/close_file.py index c5876c3..6ac8b35 100644 --- a/src/core/widgets/code/commands/close_file.py +++ b/src/core/widgets/code/commands/close_file.py @@ -8,6 +8,7 @@ gi.require_version('GtkSource', '4') from gi.repository import GtkSource # Application imports +from ..command_helpers import update_info_bar_if_focused @@ -16,4 +17,4 @@ def execute( ): logger.debug("Command: Close File") view.command.remove_file() - view.command.exec("update_info_bar") + update_info_bar_if_focused(view.command, view) diff --git a/src/core/widgets/code/commands/dnd_load_file_to_buffer.py b/src/core/widgets/code/commands/dnd_load_file_to_buffer.py index da10e34..713f7a3 100644 --- a/src/core/widgets/code/commands/dnd_load_file_to_buffer.py +++ b/src/core/widgets/code/commands/dnd_load_file_to_buffer.py @@ -9,6 +9,7 @@ from gi.repository import GtkSource from gi.repository import Gio # Application imports +from ..command_helpers import update_info_bar_if_focused @@ -30,6 +31,4 @@ def execute( (view, gfile, file) ) - has_focus = view.command.exec("has_focus") - if has_focus: - view.command.exec("update_info_bar") + update_info_bar_if_focused(view.command, view) diff --git a/src/core/widgets/code/commands/load_file.py b/src/core/widgets/code/commands/load_file.py index 2532061..78c8dbe 100644 --- a/src/core/widgets/code/commands/load_file.py +++ b/src/core/widgets/code/commands/load_file.py @@ -10,6 +10,7 @@ from gi.repository import Gio # Application imports from ..source_file import SourceFile +from ..command_helpers import set_language_and_style @@ -24,9 +25,4 @@ def execute( file.load_path(gfile) - language = view.language_manager \ - .guess_language(file.fname, None) - file.ftype = language - - file.buffer.set_language(language) - file.buffer.set_style_scheme(view.syntax_theme) + set_language_and_style(view, file) diff --git a/src/core/widgets/code/commands/new_file.py b/src/core/widgets/code/commands/new_file.py index c7e85e5..8360b16 100644 --- a/src/core/widgets/code/commands/new_file.py +++ b/src/core/widgets/code/commands/new_file.py @@ -9,6 +9,7 @@ gi.require_version('GtkSource', '4') from gi.repository import GtkSource # Application imports +from ..command_helpers import set_language_and_style, update_info_bar_if_focused @@ -18,16 +19,9 @@ def execute( logger.debug("Command: New File") file = view.command.new_file(view) - language = view.language_manager \ - .guess_language("file.txt", None) - - file.buffer.set_language(language) - file.buffer.set_style_scheme(view.syntax_theme) + set_language_and_style(view, file) view.set_buffer(file.buffer) - has_focus = view.command.exec("has_focus") - if not has_focus: return file - - view.command.exec("update_info_bar") + update_info_bar_if_focused(view.command, view) return file diff --git a/src/core/widgets/code/commands/open_files.py b/src/core/widgets/code/commands/open_files.py index e890116..3ce87e8 100644 --- a/src/core/widgets/code/commands/open_files.py +++ b/src/core/widgets/code/commands/open_files.py @@ -8,6 +8,7 @@ gi.require_version('GtkSource', '4') from gi.repository import GtkSource # Application imports +from ..command_helpers import update_info_bar_if_focused @@ -23,7 +24,7 @@ def execute( gfile = gfiles.pop() view.command.exec_with_args("load_file", (view, gfile, file)) view.set_buffer(file.buffer) - view.command.exec("update_info_bar") + update_info_bar_if_focused(view.command, view) for i, gfile in enumerate(gfiles): view.command.exec_with_args("load_file", (view, gfile)) diff --git a/src/core/widgets/code/commands/save_file.py b/src/core/widgets/code/commands/save_file.py index 22f4795..2dedbaf 100644 --- a/src/core/widgets/code/commands/save_file.py +++ b/src/core/widgets/code/commands/save_file.py @@ -8,6 +8,7 @@ gi.require_version('GtkSource', '4') from gi.repository import GtkSource # Application imports +from ..command_helpers import set_language_and_style @@ -20,10 +21,7 @@ def execute( if file.ftype == "buffer": file.save_as() - language = view.language_manager \ - .guess_language(file.fname, None) - file.ftype = language - file.buffer.set_language(language) + set_language_and_style(view, file) return file.save() diff --git a/src/core/widgets/code/commands/save_file_as.py b/src/core/widgets/code/commands/save_file_as.py index 88bbe1e..b493841 100644 --- a/src/core/widgets/code/commands/save_file_as.py +++ b/src/core/widgets/code/commands/save_file_as.py @@ -8,6 +8,7 @@ gi.require_version('GtkSource', '4') from gi.repository import GtkSource # Application imports +from ..command_helpers import set_language_and_style, update_info_bar_if_focused @@ -20,9 +21,6 @@ def execute( file.save_as() - language = view.language_manager \ - .guess_language(file.fname, None) - file.ftype = language - file.buffer.set_language(language) + set_language_and_style(view, file) - view.command.exec("update_info_bar") + update_info_bar_if_focused(view.command, view) diff --git a/src/core/widgets/code/commands/set_buffer.py b/src/core/widgets/code/commands/set_buffer.py index 6e75b25..2c7d085 100644 --- a/src/core/widgets/code/commands/set_buffer.py +++ b/src/core/widgets/code/commands/set_buffer.py @@ -10,6 +10,7 @@ from gi.repository import GtkSource # Application imports from ..source_file import SourceFile +from ..command_helpers import update_info_bar_if_focused @@ -25,7 +26,5 @@ def execute( view.set_buffer(file.buffer) - has_focus = view.command.exec("has_focus") - if has_focus: - view.command.exec("update_info_bar") + update_info_bar_if_focused(view.command, view)