generated from itdominator/Python-With-Gtk-Template
74 lines
1.9 KiB
Python
74 lines
1.9 KiB
Python
# Python imports
|
|
import os
|
|
|
|
# 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._subscribe_to_events()
|
|
self._load_widgets()
|
|
|
|
self.show_all()
|
|
|
|
|
|
def _setup_styling(self):
|
|
self.set_scrollable(True)
|
|
|
|
def _setup_signals(self):
|
|
...
|
|
|
|
def _subscribe_to_events(self):
|
|
event_system.subscribe("load_notebook_data", self._load_notebook_data)
|
|
|
|
def _load_widgets(self):
|
|
start_box = Gtk.Box()
|
|
end_box = Gtk.Box()
|
|
|
|
add_btn = Gtk.Button()
|
|
add_btn.set_image( Gtk.Image.new_from_icon_name("add", 4) )
|
|
add_btn.set_always_show_image(True)
|
|
add_btn.connect("released", self.create_pages_view)
|
|
|
|
end_box.add(add_btn)
|
|
|
|
start_box.show_all()
|
|
end_box.show_all()
|
|
|
|
# PACKTYPE: 0 Start, 1 = End
|
|
self.set_action_widget(start_box, 0)
|
|
self.set_action_widget(end_box, 1)
|
|
|
|
def _close_tab(self, button, pages, eve = None):
|
|
page_num = self.page_num(pages)
|
|
self.remove_page(page_num)
|
|
|
|
def create_pages_view(self, widget = None, eve = 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 _load_notebook_data(self):
|
|
path = settings.get_active_notebook()
|
|
sections = os.listdir(path)
|
|
logger.info(f"Loading Notebook sections from: {path}")
|
|
if len(sections) == 0:
|
|
section = os.path.join(path, "New Section")
|
|
os.mkdir(section)
|