diff --git a/src/__builtins__.py b/src/__builtins__.py index c7b3d32..c50216b 100644 --- a/src/__builtins__.py +++ b/src/__builtins__.py @@ -29,7 +29,7 @@ def daemon_threaded_wrapper(fn): # NOTE: Just reminding myself we can add to builtins two different ways... # __builtins__.update({"event_system": Builtins()}) -builtins.app_name = "" +builtins.app_name = "Coherence" builtins.keybindings = Keybindings() builtins.event_system = EventSystem() builtins.endpoint_registry = EndpointRegistry() diff --git a/src/core/controller.py b/src/core/controller.py index 1ca363f..0008156 100644 --- a/src/core/controller.py +++ b/src/core/controller.py @@ -10,14 +10,12 @@ from gi.repository import GLib # Application imports from .mixins.signals_mixins import SignalsMixins -from .mixins.dummy_mixin import DummyMixin from .controller_data import ControllerData -from .core_widget import CoreWidget +from .widgets.sections.sections_widget import Sections - -class Controller(DummyMixin, SignalsMixins, ControllerData): +class Controller(SignalsMixins, ControllerData): def __init__(self, args, unknownargs): self.setup_controller_data() @@ -25,8 +23,6 @@ class Controller(DummyMixin, SignalsMixins, ControllerData): self._setup_signals() self._subscribe_to_events() - self.print_hello_world() # A mixin method from the DummyMixin file - logger.info(f"Made it past {self.__class__} loading...") @@ -48,7 +44,7 @@ class Controller(DummyMixin, SignalsMixins, ControllerData): self.builder.expose_object("main_window", self.window) settings.set_builder(self.builder) - self.core_widget = CoreWidget() + self.core_widget = Sections() settings.register_signals_to_builder([self, self.core_widget]) diff --git a/src/core/core_widget.py b/src/core/core_widget.py deleted file mode 100644 index 2775c0e..0000000 --- a/src/core/core_widget.py +++ /dev/null @@ -1,44 +0,0 @@ -# Python imports - -# Lib imports -import gi -gi.require_version('Gtk', '3.0') -from gi.repository import Gtk - -# Application imports - - - - -class CoreWidget(Gtk.Box): - def __init__(self): - super(CoreWidget, self).__init__() - - self._builder = settings.get_builder() - - self._setup_styling() - self._setup_signals() - self._load_widgets() - - self.show_all() - - - def _setup_styling(self): - self.set_orientation(1) - - def _setup_signals(self): - ... - - def _load_widgets(self): - glade_box = self._builder.get_object("glade_box") - button = Gtk.Button(label="Click Me!") - - button.connect("clicked", self._hello_world) - - self.add(button) - self.add(glade_box) - - - - def _hello_world(self, widget=None, eve=None): - print("Hello, World!") diff --git a/src/core/mixins/dummy_mixin.py b/src/core/mixins/dummy_mixin.py deleted file mode 100644 index 675bb81..0000000 --- a/src/core/mixins/dummy_mixin.py +++ /dev/null @@ -1,14 +0,0 @@ -# Python imports - -# Lib imports - -# Application imports - - - - -class DummyMixin: - """ DummyMixin is an example of how mixins are used and structured in a project. """ - - def print_hello_world(self) -> None: - print("Hello, World!") diff --git a/src/core/widgets/__init__.py b/src/core/widgets/__init__.py new file mode 100644 index 0000000..72b072b --- /dev/null +++ b/src/core/widgets/__init__.py @@ -0,0 +1,3 @@ +""" + Widgets Module +""" diff --git a/src/core/widgets/page_widget.py b/src/core/widgets/page_widget.py new file mode 100644 index 0000000..7bdb4d4 --- /dev/null +++ b/src/core/widgets/page_widget.py @@ -0,0 +1,47 @@ +# Python imports + +# Lib imports +import gi +gi.require_version('Gtk', '3.0') +from gi.repository import Gtk + +# Application imports +from .pages_tab_widget import PagesTabWidget + + + +class Page(Gtk.ScrolledWindow): + def __init__(self, close_tab): + super(Page, self).__init__() + + self._close_tab = close_tab + self._tab_widget = PagesTabWidget(self, self._close_tab) + + self._setup_styling() + self._setup_signals() + self._subscribe_to_events() + self._load_widgets() + + + def _setup_styling(self): + ... + + def _setup_signals(self): + ... + + def _subscribe_to_events(self): + # event_system.subscribe("handle_file_from_ipc", self.handle_file_from_ipc) + ... + + def _load_widgets(self): + viewport = Gtk.Viewport() + viewport.set_vexpand(True) + viewport.set_hexpand(True) + + fixed = Gtk.Fixed() + viewport.add(fixed) + + self.add(viewport) + + def get_tab_widget(self): + return self._tab_widget diff --git a/src/core/widgets/pages/__init__.py b/src/core/widgets/pages/__init__.py new file mode 100644 index 0000000..be9c5e2 --- /dev/null +++ b/src/core/widgets/pages/__init__.py @@ -0,0 +1,3 @@ +""" + Pages Module +""" diff --git a/src/core/widgets/pages/pages_widget.py b/src/core/widgets/pages/pages_widget.py new file mode 100644 index 0000000..c5cf9c7 --- /dev/null +++ b/src/core/widgets/pages/pages_widget.py @@ -0,0 +1,51 @@ +# Python imports + +# Lib imports +import gi +gi.require_version('Gtk', '3.0') +from gi.repository import Gtk + +# Application imports +from ..sections_tab_widget import SectionsTabWidget +from ..page_widget import Page + + + +class Pages(Gtk.Notebook): + def __init__(self, close_tab): + super(Pages, self).__init__() + + self._close_tab = close_tab + self._tab_widget = SectionsTabWidget(self, self._close_tab) + + self._setup_styling() + self._setup_signals() + self._load_widgets() + + self.show_all() + + + def _setup_styling(self): + self.set_tab_pos(1) # NOTE: LEFT = 0, RIGHT = 1, TOP = 2, BOTTOM = 3 + + + def _setup_signals(self): + ... + + def _load_widgets(self): + page = Page(self.close_tab) + page_num = self.append_page(page, page.get_tab_widget()) + + self.set_tab_detachable(page, False) + self.set_tab_reorderable(page, True) + + self.show_all() + self.set_current_page(page_num) + + + def get_tab_widget(self): + return self._tab_widget + + def close_tab(self, button, page, eve = None): + page_num = self.page_num(page) + self.remove_page(page_num) diff --git a/src/core/widgets/pages_tab_widget.py b/src/core/widgets/pages_tab_widget.py new file mode 100644 index 0000000..2a4e7f4 --- /dev/null +++ b/src/core/widgets/pages_tab_widget.py @@ -0,0 +1,24 @@ +# Python imports + +# Lib imports +import gi +gi.require_version('Gtk', '3.0') +from gi.repository import Gtk + +# Application imports +from .template.tab_header_template import TabHeaderTemplate + + + +class PagesTabWidget(TabHeaderTemplate): + """ docstring for PagesTabWidget """ + + ccount = 0 + def __new__(cls, *args, **kwargs): + obj = super(PagesTabWidget, cls).__new__(cls) + cls.ccount += 1 + return obj + + + def __init__(self, container, close_tab): + super(PagesTabWidget, self).__init__(container, close_tab) diff --git a/src/core/widgets/sections/__init__.py b/src/core/widgets/sections/__init__.py new file mode 100644 index 0000000..94ab307 --- /dev/null +++ b/src/core/widgets/sections/__init__.py @@ -0,0 +1,3 @@ +""" + Sections Module +""" diff --git a/src/core/widgets/sections/sections_widget.py b/src/core/widgets/sections/sections_widget.py new file mode 100644 index 0000000..84e8b36 --- /dev/null +++ b/src/core/widgets/sections/sections_widget.py @@ -0,0 +1,46 @@ +# Python imports + +# Lib imports +import gi +gi.require_version('Gtk', '3.0') +from gi.repository import Gtk + +# Application imports +from ..pages.pages_widget import Pages + + + +class Sections(Gtk.Notebook): + def __init__(self): + super(Sections, self).__init__() + + self._setup_styling() + self._setup_signals() + self._load_widgets() + + self.show_all() + + + def _setup_styling(self): + ... + + def _setup_signals(self): + ... + + def _load_widgets(self): + self.create_view() + ... + + def create_view(self, widget = None, eve = None, gfile = None): + pages = Pages(self.close_tab) + page_num = self.append_page(pages, pages.get_tab_widget()) + + self.set_tab_detachable(pages, True) + self.set_tab_reorderable(pages, True) + + self.show_all() + self.set_current_page(page_num) + + def close_tab(self, button, pages, eve = None): + page_num = self.page_num(pages) + self.remove_page(page_num) diff --git a/src/core/widgets/sections_tab_widget.py b/src/core/widgets/sections_tab_widget.py new file mode 100644 index 0000000..f47e8b8 --- /dev/null +++ b/src/core/widgets/sections_tab_widget.py @@ -0,0 +1,17 @@ +# Python imports + +# Lib imports +import gi +gi.require_version('Gtk', '3.0') +from gi.repository import Gtk + +# Application imports +from .template.tab_header_template import TabHeaderTemplate + + + +class SectionsTabWidget(TabHeaderTemplate): + """ docstring for SectionsTabWidget """ + + def __init__(self, container, close_tab): + super(SectionsTabWidget, self).__init__(container, close_tab) diff --git a/src/core/widgets/template/__init__.py b/src/core/widgets/template/__init__.py new file mode 100644 index 0000000..4590314 --- /dev/null +++ b/src/core/widgets/template/__init__.py @@ -0,0 +1,3 @@ +""" + Teplate Module +""" diff --git a/src/core/widgets/template/tab_header_template.py b/src/core/widgets/template/tab_header_template.py new file mode 100644 index 0000000..268b82c --- /dev/null +++ b/src/core/widgets/template/tab_header_template.py @@ -0,0 +1,69 @@ +# Python imports + +# Lib imports +import gi +gi.require_version('Gtk', '3.0') +from gi.repository import Gtk + +# Application imports + + + +class TabHeaderTemplate(Gtk.Box): + """ docstring for TabHeaderTemplate """ + + ccount = 0 + def __new__(cls, *args, **kwargs): + obj = super(TabHeaderTemplate, cls).__new__(cls) + cls.ccount += 1 + return obj + + + def __init__(self, container, close_tab): + super(TabHeaderTemplate, self).__init__() + + self.INDEX = self.ccount + self.NAME = f"tab_{self.INDEX}" + self._container = container + self._close_tab = close_tab # NOTE: Close method in tab_mixin + + self._setup_styling() + self._setup_signals() + self._subscribe_to_events() + self._load_widgets() + + self.set_tab_label() + self.show_all() + + + def _setup_styling(self): + self.set_orientation(0) + self.set_hexpand(False) + + def _setup_signals(self): + ... + + def _subscribe_to_events(self): + ... + + def _load_widgets(self): + label = Gtk.Label() + close = Gtk.Button() + icon = Gtk.Image(stock=Gtk.STOCK_CLOSE) + + # NOTE: Setup with settings and from file + label.set_xalign(0.0) + label.set_margin_left(25) + label.set_margin_right(25) + label.set_hexpand(True) + + close.set_always_show_image(True) + close.set_hexpand(False) + close.set_image( Gtk.Image.new_from_icon_name("gtk-close", 4) ) + close.connect("released", self._close_tab, *(self._container,)) + + self.add(label) + self.add(close) + + def set_tab_label(self, label = "untitled"): + self.get_children()[0].set_label(label) diff --git a/user_config/bin/ b/user_config/bin/coherence similarity index 82% rename from user_config/bin/ rename to user_config/bin/coherence index 7a3e523..c5a9976 100755 --- a/user_config/bin/ +++ b/user_config/bin/coherence @@ -19,11 +19,11 @@ function main() { # NOTE: Remove if you want to pass file(s) besides directories... if [ ! -d "${path}" ]; then - echo ": Path given not a directory..." + echo "Coherence: Path given not a directory..." exit 1 fi cd "/opt/" - python /opt/.zip "$@" + python /opt/coherence.zip "$@" } -main "$@"; +main "$@"; \ No newline at end of file diff --git a/user_config/usr/applications/.desktop b/user_config/usr/applications/.desktop deleted file mode 100755 index d459bfb..0000000 --- a/user_config/usr/applications/.desktop +++ /dev/null @@ -1,11 +0,0 @@ -[Desktop Entry] -Name= -GenericName= -Comment= -Exec=/bin/ %F -Icon=/usr/share//icons/.png -Type=Application -StartupNotify=true -Categories=System;FileTools;Utility;Core;GTK;FileManager; -MimeType= -Terminal=false diff --git a/user_config/usr/applications/coherence.desktop b/user_config/usr/applications/coherence.desktop new file mode 100755 index 0000000..3e2e28f --- /dev/null +++ b/user_config/usr/applications/coherence.desktop @@ -0,0 +1,11 @@ +[Desktop Entry] +Name=Coherence +GenericName=Coherence is like a OneNote sibling thatlets you store notes, images, links, etc. +Comment=Coherence +Exec=/bin/coherence %F +Icon=/usr/share/Coherence/icons/coherence.png +Type=Application +StartupNotify=true +Categories=System;FileTools;Utility;Core;GTK;FileManager; +MimeType= +Terminal=false diff --git a/user_config/usr/share/app_name/Main_Window.glade b/user_config/usr/share/coherence/Main_Window.glade similarity index 100% rename from user_config/usr/share/app_name/Main_Window.glade rename to user_config/usr/share/coherence/Main_Window.glade diff --git a/user_config/usr/share/app_name/icons/app_name-64x64.png b/user_config/usr/share/coherence/icons/app_name-64x64.png similarity index 100% rename from user_config/usr/share/app_name/icons/app_name-64x64.png rename to user_config/usr/share/coherence/icons/app_name-64x64.png diff --git a/user_config/usr/share/app_name/icons/app_name.png b/user_config/usr/share/coherence/icons/app_name.png similarity index 100% rename from user_config/usr/share/app_name/icons/app_name.png rename to user_config/usr/share/coherence/icons/app_name.png diff --git a/user_config/usr/share/app_name/icons/archive.png b/user_config/usr/share/coherence/icons/archive.png similarity index 100% rename from user_config/usr/share/app_name/icons/archive.png rename to user_config/usr/share/coherence/icons/archive.png diff --git a/user_config/usr/share/app_name/icons/audio.png b/user_config/usr/share/coherence/icons/audio.png similarity index 100% rename from user_config/usr/share/app_name/icons/audio.png rename to user_config/usr/share/coherence/icons/audio.png diff --git a/user_config/usr/share/app_name/icons/bin.png b/user_config/usr/share/coherence/icons/bin.png similarity index 100% rename from user_config/usr/share/app_name/icons/bin.png rename to user_config/usr/share/coherence/icons/bin.png diff --git a/user_config/usr/share/app_name/icons/dir.png b/user_config/usr/share/coherence/icons/dir.png similarity index 100% rename from user_config/usr/share/app_name/icons/dir.png rename to user_config/usr/share/coherence/icons/dir.png diff --git a/user_config/usr/share/app_name/icons/doc.png b/user_config/usr/share/coherence/icons/doc.png similarity index 100% rename from user_config/usr/share/app_name/icons/doc.png rename to user_config/usr/share/coherence/icons/doc.png diff --git a/user_config/usr/share/app_name/icons/image.png b/user_config/usr/share/coherence/icons/image.png similarity index 100% rename from user_config/usr/share/app_name/icons/image.png rename to user_config/usr/share/coherence/icons/image.png diff --git a/user_config/usr/share/app_name/icons/pdf.png b/user_config/usr/share/coherence/icons/pdf.png similarity index 100% rename from user_config/usr/share/app_name/icons/pdf.png rename to user_config/usr/share/coherence/icons/pdf.png diff --git a/user_config/usr/share/app_name/icons/presentation.png b/user_config/usr/share/coherence/icons/presentation.png similarity index 100% rename from user_config/usr/share/app_name/icons/presentation.png rename to user_config/usr/share/coherence/icons/presentation.png diff --git a/user_config/usr/share/app_name/icons/spreadsheet.png b/user_config/usr/share/coherence/icons/spreadsheet.png similarity index 100% rename from user_config/usr/share/app_name/icons/spreadsheet.png rename to user_config/usr/share/coherence/icons/spreadsheet.png diff --git a/user_config/usr/share/app_name/icons/text.png b/user_config/usr/share/coherence/icons/text.png similarity index 100% rename from user_config/usr/share/app_name/icons/text.png rename to user_config/usr/share/coherence/icons/text.png diff --git a/user_config/usr/share/app_name/icons/trash.png b/user_config/usr/share/coherence/icons/trash.png similarity index 100% rename from user_config/usr/share/app_name/icons/trash.png rename to user_config/usr/share/coherence/icons/trash.png diff --git a/user_config/usr/share/app_name/icons/video.png b/user_config/usr/share/coherence/icons/video.png similarity index 100% rename from user_config/usr/share/app_name/icons/video.png rename to user_config/usr/share/coherence/icons/video.png diff --git a/user_config/usr/share/app_name/icons/web.png b/user_config/usr/share/coherence/icons/web.png similarity index 100% rename from user_config/usr/share/app_name/icons/web.png rename to user_config/usr/share/coherence/icons/web.png diff --git a/user_config/usr/share/app_name/key-bindings.json b/user_config/usr/share/coherence/key-bindings.json similarity index 100% rename from user_config/usr/share/app_name/key-bindings.json rename to user_config/usr/share/coherence/key-bindings.json diff --git a/user_config/usr/share/app_name/settings.json b/user_config/usr/share/coherence/settings.json similarity index 100% rename from user_config/usr/share/app_name/settings.json rename to user_config/usr/share/coherence/settings.json diff --git a/user_config/usr/share/app_name/stylesheet.css b/user_config/usr/share/coherence/stylesheet.css similarity index 100% rename from user_config/usr/share/app_name/stylesheet.css rename to user_config/usr/share/coherence/stylesheet.css