WIP saving of widget through pickle process

This commit is contained in:
itdominator 2023-04-07 21:04:40 -05:00
parent a23c13a259
commit 8ccb8f0709
4 changed files with 62 additions and 11 deletions

View File

@ -47,7 +47,6 @@ class DragArea(GtkSource.View):
date_label = Gtk.Label(label = date)
wrapped_date = self.wrap_widget_in_trap( date_label )
ctx = entry.get_style_context()
ctx.add_class("drag-area-title")

View File

@ -20,8 +20,9 @@ class DynamicWidget(Gtk.Box):
def __init__(self, move_callback, x, y):
super(DynamicWidget, self).__init__()
self._header_widget = DynamicHeaderWidget(move_callback, x, y)
self.uuid = str(uuid.uuid4())
self._header_widget = DynamicHeaderWidget(move_callback, x, y)
self._body_widget = None
self._setup_styling()
self._setup_signals()
@ -46,16 +47,21 @@ class DynamicWidget(Gtk.Box):
def _load_widgets(self):
try:
self.add(self._header_widget)
widget = event_system.emit_and_await("get_widget_type")
if not widget:
self._body_widget = event_system.emit_and_await("get_widget_type")
if not self._body_widget:
raise Exception("No widget detected... Will not insert anything.")
self.add(widget)
self.add(self._body_widget)
except DynamicWidgetException as e:
logger.debug(e)
def save(self):
save_collection = self._body_widget.get_saveable_data()
save_collection["w"] = self._header_widget._current_w
save_collection["h"] = self._header_widget._current_h
save_collection["x"] = self._header_widget._current_x
save_collection["y"] = self._header_widget._current_y
path = f"{settings.get_active_page()}/{self.uuid}"
logger.debug("Widget save stub...")
# with open(path, "wb") as f:
# pickle.dump(self, f, protocol=pickle.HIGHEST_PROTOCOL, fix_imports=True, buffer_callback=None)
with open(path, "wb") as f:
pickle.dump(save_collection, f, protocol=pickle.HIGHEST_PROTOCOL, fix_imports=True, buffer_callback=None)

View File

@ -6,10 +6,10 @@ gi.require_version('Gtk', '3.0')
from gi.repository import Gtk
# Application imports
from utils.widget_save_load_controller import WidgetSaveLoadController
class TextAreaWidget(Gtk.TextView):
class TextAreaWidget(WidgetSaveLoadController, Gtk.TextView):
def __init__(self):
super(TextAreaWidget, self).__init__()
@ -35,7 +35,20 @@ class TextAreaWidget(Gtk.TextView):
def _load_widgets(self):
...
def get_buffer_text(self):
start, end = self.buffer.get_start_iter(), self.buffer.get_end_iter()
return self.buffer.get_slice(start, end, True)
def load_saveable_data(self, data):
self.save_collection = data
self.buffer.set_text(self.save_collection["data"])
def get_saveable_data(self):
self.save_collection["data"] = self.get_buffer_text()
self.save_collection["widget_type"] = str(type(self).__name__)
return self.save_collection
def new(self):
widget = TextAreaWidget()
widget.buffer.set_text("Poo")
widget.buffer.set_text("Lorem ipsum dolor")
return widget

View File

@ -0,0 +1,33 @@
# Python imports
# Lib imports
# Application imports
class SaveLoadControllerException(Exception):
...
class WidgetSaveLoadController:
def __init__(self):
super(WidgetSaveLoadController, self).__init__()
self.saveable_data = []
self.save_collection = {
"width": -1,
"height": -1,
"x": 0,
"y": 0,
"data": None,
"widget_type": None
}
def register_saveable_data(self, data):
self.saveable_data.append(data)
def load_saveable_data(self, data):
self.save_collection = data
def get_saveable_data(self):
return self.save_collection