diff --git a/src/core/controller.py b/src/core/controller.py index d46cc37..5ca1ec9 100644 --- a/src/core/controller.py +++ b/src/core/controller.py @@ -12,13 +12,14 @@ from gi.repository import GLib # Application imports from utils.launcher import Launcher -from .mixins.signals_mixins import SignalsMixins from .controller_data import ControllerData +from .mixins.signals_mixins import SignalsMixins from .query_controller import QueryController + from .widgets.create_notebook_widget import CreateNotebookWidget +from .widgets.sections.sections_widget import Sections from .widgets.dialogs.message_widget import MessageWidget from .widgets.dialogs.section_header_updater_widget import SectionHeaderUpdater -from .widgets.sections.sections_widget import Sections diff --git a/src/core/widgets/io_widget.py b/src/core/widgets/io_widget.py index c0bcce1..6b65b44 100644 --- a/src/core/widgets/io_widget.py +++ b/src/core/widgets/io_widget.py @@ -73,6 +73,8 @@ class IOWidget(Gtk.Box): status = self._file.move_finish(task) if self._action == "copy": status = self._file.copy_finish(task) + if self._action == "delete": + status = self._file.delete_finish(task) if status: self.delete_self() diff --git a/src/core/widgets/__init__.py b/src/core/widgets/page_body/__init__.py similarity index 100% rename from src/core/widgets/__init__.py rename to src/core/widgets/page_body/__init__.py diff --git a/src/core/widgets/drag_area_widget.py b/src/core/widgets/page_body/drag_area_widget.py similarity index 99% rename from src/core/widgets/drag_area_widget.py rename to src/core/widgets/page_body/drag_area_widget.py index be02982..1f04363 100644 --- a/src/core/widgets/drag_area_widget.py +++ b/src/core/widgets/page_body/drag_area_widget.py @@ -11,7 +11,7 @@ from gi.repository import GtkSource from gi.repository import Gio # Application imports -from .template.dynamic_widget_template import DynamicWidget +from ..template.dynamic_widget_template import DynamicWidget diff --git a/src/core/widgets/page_widget.py b/src/core/widgets/page_body/page_widget.py similarity index 94% rename from src/core/widgets/page_widget.py rename to src/core/widgets/page_body/page_widget.py index 32997d7..def74aa 100644 --- a/src/core/widgets/page_widget.py +++ b/src/core/widgets/page_body/page_widget.py @@ -8,7 +8,7 @@ from gi.repository import Gtk # Application imports from .drag_area_widget import DragArea -from .pages_tab_widget import PagesTabWidget +from ..pages.pages_tab_widget import PagesTabWidget @@ -83,7 +83,8 @@ class Page(Gtk.ScrolledWindow): files = settings.clean_pages_list( os.listdir( path ) ) for file in files: fpath = os.path.join(path, file) - self._drag_area.load_path_to_widget(fpath) + if not os.path.isdir(fpath): + self._drag_area.load_path_to_widget(fpath) def _update_header(self, widget = None, eve = None): self._name = widget.get_text() diff --git a/src/core/widgets/pages_tab_widget.py b/src/core/widgets/pages/pages_tab_widget.py similarity index 85% rename from src/core/widgets/pages_tab_widget.py rename to src/core/widgets/pages/pages_tab_widget.py index 7167f3e..24f96e3 100644 --- a/src/core/widgets/pages_tab_widget.py +++ b/src/core/widgets/pages/pages_tab_widget.py @@ -6,7 +6,7 @@ gi.require_version('Gtk', '3.0') from gi.repository import Gtk # Application imports -from .template.tab_header_template import TabHeaderTemplate +from ..template.tab_header_template import TabHeaderTemplate diff --git a/src/core/widgets/pages/pages_widget.py b/src/core/widgets/pages/pages_widget.py index d0e82bf..1d2f2c2 100644 --- a/src/core/widgets/pages/pages_widget.py +++ b/src/core/widgets/pages/pages_widget.py @@ -7,8 +7,8 @@ gi.require_version('Gtk', '3.0') from gi.repository import Gtk # Application imports -from ..sections_tab_widget import SectionsTabWidget -from ..page_widget import Page +from ..sections.sections_tab_widget import SectionsTabWidget +from ..page_body.page_widget import Page diff --git a/src/core/widgets/popups/__init__.py b/src/core/widgets/popups/__init__.py new file mode 100644 index 0000000..46a8a2c --- /dev/null +++ b/src/core/widgets/popups/__init__.py @@ -0,0 +1,3 @@ +""" + Popups module +""" diff --git a/src/core/widgets/popups/io_popup_widget.py b/src/core/widgets/popups/io_popup_widget.py new file mode 100644 index 0000000..fe587fc --- /dev/null +++ b/src/core/widgets/popups/io_popup_widget.py @@ -0,0 +1,48 @@ +# Python imports + +# Lib imports +import gi +gi.require_version('Gtk', '3.0') +from gi.repository import Gtk + +# Application imports + + + +class IOPopupWidget(Gtk.Popover): + """docstring for IOPopupWidget.""" + + def __init__(self): + super(IOPopupWidget, self).__init__() + + self._setup_styling() + self._setup_signals() + self._subscribe_to_events() + self._load_widgets() + + + + def _setup_styling(self): + self.set_position(Gtk.PositionType.BOTTOM) + self.set_size_request(320, 280) + + def _setup_signals(self): + ... + + def _subscribe_to_events(self): + event_system.subscribe("show_io_popup", self.show_io_popup) + event_system.subscribe("append_to_io_list", self.append_io_widget) + + def _load_widgets(self): + vbox = Gtk.Box() + vbox.set_orientation(Gtk.Orientation.VERTICAL) + + vbox.show() + self.add(vbox) + + def show_io_popup(self, widget = None, eve = None): + self.popup() + + def append_io_widget(self, io_widget): + self.get_children()[0].add(io_widget) + io_widget.show_all() diff --git a/src/core/widgets/widget_selector/__init__.py b/src/core/widgets/popups/widget_selector/__init__.py similarity index 100% rename from src/core/widgets/widget_selector/__init__.py rename to src/core/widgets/popups/widget_selector/__init__.py diff --git a/src/core/widgets/widget_selector/widget_selector_grid.py b/src/core/widgets/popups/widget_selector/widget_selector_grid.py similarity index 98% rename from src/core/widgets/widget_selector/widget_selector_grid.py rename to src/core/widgets/popups/widget_selector/widget_selector_grid.py index 1e6415b..20e7ce9 100644 --- a/src/core/widgets/widget_selector/widget_selector_grid.py +++ b/src/core/widgets/popups/widget_selector/widget_selector_grid.py @@ -95,7 +95,7 @@ class WidgetSelector(Gtk.Popover): def _setup_styling(self): self.set_size_request(256, 480) - + self.set_position(Gtk.PositionType.BOTTOM) def _setup_signals(self): ... diff --git a/src/core/widgets/widget_selector/widgets/__init__.py b/src/core/widgets/popups/widget_selector/widgets/__init__.py similarity index 100% rename from src/core/widgets/widget_selector/widgets/__init__.py rename to src/core/widgets/popups/widget_selector/widgets/__init__.py diff --git a/src/core/widgets/widget_selector/widgets/file.py b/src/core/widgets/popups/widget_selector/widgets/file.py similarity index 87% rename from src/core/widgets/widget_selector/widgets/file.py rename to src/core/widgets/popups/widget_selector/widgets/file.py index 8409461..3740bb4 100644 --- a/src/core/widgets/widget_selector/widgets/file.py +++ b/src/core/widgets/popups/widget_selector/widgets/file.py @@ -9,7 +9,7 @@ from gi.repository import Gio # Application imports from utils.widget_save_load_controller import WidgetSaveLoadController -from ...io_widget import IOWidget +from ....io_widget import IOWidget @@ -59,9 +59,9 @@ class FileWidget(WidgetSaveLoadController, Gtk.Box): def __init__(self): super(FileWidget, self).__init__() + self.label = None self._file = None self._file_name = "No File Selected..." - self.label = None self._setup_styling() self._setup_signals() @@ -77,6 +77,19 @@ class FileWidget(WidgetSaveLoadController, Gtk.Box): widget = FileWidget() return widget + def delete_cleanup(self): + working_page = settings.get_active_page().replace('MANIFEST', '') + path = self._file.get_path() + if not os.path.isdir(path) and working_page in path: + logger.debug(f"Deleteing: {path}") + io_widget = IOWidget("delete", self._file) + + self._file.delete_async(io_priority = 75, + cancellable = io_widget.cancle_eve, + callback = io_widget.finish_callback) + + event_system.emit("append_to_io_list", (io_widget,)) + def _setup_styling(self): self.set_orientation(1) @@ -186,11 +199,11 @@ class FileWidget(WidgetSaveLoadController, Gtk.Box): gio_copy_file = Gio.File.new_for_path(copy_tgt_pth) self._file.copy_async(destination = gio_copy_file, - flags = Gio.FileCopyFlags.BACKUP, - io_priority = 75, - cancellable = io_widget.cancle_eve, - progress_callback = io_widget.update_progress, - callback = io_widget.finish_callback) + flags = Gio.FileCopyFlags.BACKUP, + io_priority = 75, + cancellable = io_widget.cancle_eve, + progress_callback = io_widget.update_progress, + callback = io_widget.finish_callback) event_system.emit("append_to_io_list", (io_widget,)) self._file = gio_copy_file diff --git a/src/core/widgets/widget_selector/widgets/text_area.py b/src/core/widgets/popups/widget_selector/widgets/text_area.py similarity index 98% rename from src/core/widgets/widget_selector/widgets/text_area.py rename to src/core/widgets/popups/widget_selector/widgets/text_area.py index 8ba9799..e3bda6d 100644 --- a/src/core/widgets/widget_selector/widgets/text_area.py +++ b/src/core/widgets/popups/widget_selector/widgets/text_area.py @@ -33,6 +33,9 @@ class TextAreaWidget(WidgetSaveLoadController, GtkSource.View): widget.buffer.set_text("Lorem ipsum dolor") return widget + def delete_cleanup(self): + ... + def _setup_styling(self): ... diff --git a/src/core/widgets/sections_tab_widget.py b/src/core/widgets/sections/sections_tab_widget.py similarity index 85% rename from src/core/widgets/sections_tab_widget.py rename to src/core/widgets/sections/sections_tab_widget.py index abcf724..a269f45 100644 --- a/src/core/widgets/sections_tab_widget.py +++ b/src/core/widgets/sections/sections_tab_widget.py @@ -6,7 +6,7 @@ gi.require_version('Gtk', '3.0') from gi.repository import Gtk # Application imports -from .template.tab_header_template import TabHeaderTemplate +from ..template.tab_header_template import TabHeaderTemplate diff --git a/src/core/widgets/sections/sections_widget.py b/src/core/widgets/sections/sections_widget.py index 2c40cc7..5cabe69 100644 --- a/src/core/widgets/sections/sections_widget.py +++ b/src/core/widgets/sections/sections_widget.py @@ -8,7 +8,8 @@ from gi.repository import Gtk # Application imports from ..pages.pages_widget import Pages -from ..widget_selector.widget_selector_grid import WidgetSelector +from ..popups.widget_selector.widget_selector_grid import WidgetSelector +from ..popups.io_popup_widget import IOPopupWidget class Sections(Gtk.Notebook): @@ -49,6 +50,14 @@ class Sections(Gtk.Notebook): add_btn.set_always_show_image(True) add_btn.connect("released", self.create_section_view) + io_btn = Gtk.Button(label="I/O") + io_btn.set_image( Gtk.Image.new_from_icon_name("gtk-stop", 4) ) + io_btn.set_always_show_image(True) + io_btn.connect("released", self.show_io_collection) + + io_popup = IOPopupWidget() + io_popup.set_relative_to(io_btn) + widgets_btn = Gtk.Button() widgets_btn.set_image( Gtk.Image.new_from_icon_name("gtk-cdrom", 4) ) widgets_btn.set_always_show_image(True) @@ -56,9 +65,9 @@ class Sections(Gtk.Notebook): widget_selector = WidgetSelector() widget_selector.set_relative_to(widgets_btn) - widget_selector.set_position(3) start_box.add(widgets_btn) + start_box.add(io_btn) end_box.add(add_btn) end_box.add(search) @@ -116,5 +125,8 @@ class Sections(Gtk.Notebook): path = page.get_section_pth() settings.set_active_section(path) + def show_io_collection(self, widget = None, eve = None): + event_system.emit("show_io_popup") + def show_widgets_selection(self, widget = None, eve = None): event_system.emit("show_widget_types") diff --git a/src/core/widgets/template/dynamic_widget_template.py b/src/core/widgets/template/dynamic_widget_template.py index 368f42f..49cd6f9 100644 --- a/src/core/widgets/template/dynamic_widget_template.py +++ b/src/core/widgets/template/dynamic_widget_template.py @@ -109,6 +109,7 @@ class DynamicWidget(Gtk.Box): self.is_self_destroyed = True self.is_not_stop_watcher = False self._header_widget.destroy() + self._body_widget.delete_cleanup() self._body_widget.destroy() self.destroy()