Adding notebook save and loading structure

This commit is contained in:
2023-03-29 21:44:57 -05:00
parent c5d80b6c25
commit fb3564a3aa
11 changed files with 217 additions and 38 deletions

View File

@@ -0,0 +1,99 @@
# Python imports
import os
# Lib imports
import gi
gi.require_version('Gtk', '3.0')
from gi.repository import Gtk
# Application imports
class CreateNotebookWidget(Gtk.Dialog):
def __init__(self):
super(CreateNotebookWidget, self).__init__()
self._nb_path = settings.get_notebooks_path()
self._setup_styling()
self._setup_signals()
self._subscribe_to_events()
self._load_widgets()
def _setup_styling(self):
...
def _setup_signals(self):
self.set_default_geometry(280, 80)
self.set_size_request(280, 80)
self.set_modal(True)
self.set_transient_for( settings.get_main_window() )
def _subscribe_to_events(self):
event_system.subscribe("load_notebook", self._load_notebook)
event_system.subscribe("create_notebook", self._create_notebook)
def _load_widgets(self):
area = self.get_content_area()
label = Gtk.Label(label="Create A New Notebook")
nb_entry = Gtk.Entry()
create_btn = Gtk.Button(label="Create")
cancel_btn = Gtk.Button(label="Cancel")
create_btn.set_image( Gtk.Image.new_from_icon_name("gtk-add", 4) )
cancel_btn.set_image( Gtk.Image.new_from_icon_name("gtk-cancel", 4) )
nb_entry.set_max_length(15)
nb_entry.set_placeholder_text("Notebook Name")
area.add(label)
area.add(nb_entry)
self.add_action_widget(cancel_btn, 1)
self.add_action_widget(create_btn, 0)
area.show_all()
def _load_notebook(self):
notebooks = os.listdir(self._nb_path)
if len(notebooks) == 0:
if self._create_notebook(True) in (-1, 1):
return
notebooks = os.listdir(self._nb_path)
for notebook in notebooks:
path = os.path.join(self._nb_path, notebook)
if os.path.isdir(path):
# TODO: Add to a selection window then load choice
settings.set_active_notebook(path) # NOTE: Temporary
...
# settings.set_active_notebook(path)
def _create_notebook(self, is_first_notebook = False):
response = self.run()
self.hide()
if response == 0:
nb_entry = self.get_content_area().get_children()[1]
notebook = nb_entry.get_text().strip()
if not notebook in ("", None):
path = os.path.join(self._nb_path, notebook)
try:
logger.info(f"Creating Notebook at: {path}")
os.mkdir(path)
settings.set_active_notebook(path)
logger.info(f"Created and loaded Notebook: {notebook}")
except Exception as e:
logger.info(f"Notebook creation failed! ")
response = -1
else:
response = 1
if response == 1:
logger.info(f"Canceled notebook creation...")
return response

View File

@@ -30,10 +30,37 @@ class Pages(Gtk.Notebook):
def _setup_signals(self):
...
self.set_scrollable(True)
def _load_widgets(self):
page = Page(self.close_tab)
start_box = Gtk.Box()
end_box = Gtk.Box()
search = Gtk.SearchEntry()
search.set_placeholder_text("Search...")
search.connect("changed", self._text_search)
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_page_view)
start_box.add(search)
start_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, page, eve = None):
page_num = self.page_num(page)
self.remove_page(page_num)
def create_page_view(self, widget = None, eve = None):
page = Page(self._close_tab)
page_num = self.append_page(page, page.get_tab_widget())
self.set_tab_detachable(page, False)
@@ -46,6 +73,5 @@ class Pages(Gtk.Notebook):
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)
def _text_search(self, widget = None, eve = None):
...

View File

@@ -1,4 +1,5 @@
# Python imports
import os
# Lib imports
import gi
@@ -16,23 +17,45 @@ class Sections(Gtk.Notebook):
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 _load_widgets(self):
self.create_view()
...
def _subscribe_to_events(self):
event_system.subscribe("load_notebook_data", self._load_notebook_data)
def create_view(self, widget = None, eve = None, gfile = None):
pages = Pages(self.close_tab)
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)
@@ -41,6 +64,10 @@ class Sections(Gtk.Notebook):
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)
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)