g13gui: Rework the observer model

Subject was large enough to be in its own file.
This commit is contained in:
June Tate-Gans 2021-05-02 23:46:55 -05:00
parent b3d0cb5f21
commit 054d31033f
18 changed files with 42 additions and 59 deletions

View File

@ -4,7 +4,7 @@ from builtins import property
from g13gui.bitwidgets import DISPLAY_WIDTH
from g13gui.bitwidgets import DISPLAY_HEIGHT
from g13gui.bitwidgets.widget import Widget
from g13gui.observer import ChangeType
from g13gui.observer.subject import ChangeType
GLYPH_WIDTH = 5

View File

@ -1,7 +1,8 @@
import PIL.ImageDraw
import PIL.PyAccess
from PIL import Image
from g13gui.observer import Subject
from g13gui.observer.subject import Subject
class Display(Subject):

View File

@ -4,7 +4,7 @@ from builtins import property
from g13gui.bitwidgets.widget import Widget
from g13gui.bitwidgets.fonts import Fonts
from g13gui.bitwidgets.fonts import FontManager
from g13gui.observer import ChangeType
from g13gui.observer.subject import ChangeType
class Alignment(enum.Enum):

View File

@ -1,7 +1,8 @@
from builtins import property
from g13gui.observer import Subject
from g13gui.observer import Observer
from g13gui.observer import ChangeType
from g13gui.observer.subject import Subject
from g13gui.observer.subject import ChangeType
from g13gui.observer.observer import Observer
class Widget(Subject, Observer):

View File

@ -3,14 +3,14 @@
import unittest
import time
import usb.util
import g13gui.observer as observer
from g13gui.observer.observer import ObserverTestCase
from g13gui.model.prefs import Preferences
from g13gui.g13.manager import Manager
from g13gui.g13.manager import LCD_BUFFER_SIZE
class G13ManagerTests(observer.ObserverTestCase):
class G13ManagerTests(ObserverTestCase):
def setUp(self):
prefs = Preferences()
self.m = Manager(prefs)

View File

@ -1,20 +1,21 @@
#!/usr/bin/python
import gi
import json
import queue
import g13gui.model as model
import g13gui.ui as ui
from g13gui.g13d import G13DWorker
from g13gui.common import PROFILES_CONFIG_PATH
from g13gui.model.prefsstore import PreferencesStore
from g13gui.g13.manager import Manager
gi.require_version('Gtk', '3.0')
from gi.repository import Gtk, GObject
if __name__ == '__main__':
prefs = model.PreferencesStore.getPrefs()
prefs = PreferencesStore.getPrefs()
manager = Manager(prefs)
manager.start()
queue = queue.Queue()
win = ui.MainWindow(queue, prefs)
@ -22,7 +23,4 @@ if __name__ == '__main__':
indicator = ui.AppIndicator(prefs, win)
worker = G13DWorker(queue, win)
worker.start()
Gtk.main()

View File

@ -1,7 +1,7 @@
from builtins import property
from g13gui.observer import Subject
from g13gui.observer import ChangeType
from g13gui.observer.subject import Subject
from g13gui.observer.subject import ChangeType
import g13gui.model.bindings as bindings

View File

@ -4,8 +4,8 @@ import unittest
import g13gui.model.bindings as bindings
from g13gui.model.bindingprofile import BindingProfile
from g13gui.observer import ChangeType
from g13gui.observer import ObserverTestCase
from g13gui.observer.subject import ChangeType
from g13gui.observer.observer import ObserverTestCase
class PrefsTestCase(ObserverTestCase):

View File

@ -4,8 +4,8 @@ import traceback
from g13gui.common import VERSION
from g13gui.model.bindingprofile import BindingProfile
from g13gui.observer import Subject
from g13gui.observer import ChangeType
from g13gui.observer.subject import Subject
from g13gui.observer.subject import ChangeType
DEFAULT_PROFILE_NAME = 'Default Profile'

View File

@ -4,8 +4,8 @@ import unittest
import g13gui.model.prefs as prefs
from g13gui.common import VERSION
from g13gui.observer import ChangeType
from g13gui.observer import ObserverTestCase
from g13gui.observer.subject import ChangeType
from g13gui.observer.observer import ObserverTestCase
class PrefsTestCase(ObserverTestCase):

View File

@ -1,6 +1,6 @@
import json
import g13gui.model as model
from g13gui.model.prefs import Preferences
from g13gui.common import PROFILES_CONFIG_PATH
@ -10,9 +10,11 @@ class PreferencesStore(object):
with open(PROFILES_CONFIG_PATH, 'r') as f:
data = f.read()
prefsDict = json.loads(data)
return model.Preferences(prefsDict)
except:
return model.Preferences()
return Preferences(prefsDict)
except Exception as e:
print('Unable to load preferences from %s: %s'
% (PROFILES_CONFIG_PATH, e))
return Preferences()
def storePrefs(prefs):
prefsDict = prefs.saveToDict()

View File

@ -1,5 +0,0 @@
from g13gui.observer.observer import Observer
from g13gui.observer.observer import Subject
from g13gui.observer.observer import ObserverTestCase
from g13gui.observer.observer import ChangeType
from g13gui.observer.gtkobserver import GtkObserver

View File

@ -1,7 +1,7 @@
import gi
import queue
from g13gui.observer import Observer
from g13gui.observer.observer import Observer
gi.require_version('Gtk', '3.0')
from gi.repository import Gtk, GObject

View File

@ -1,8 +1,8 @@
import gi
from g13gui.common import PROGNAME
from g13gui.observer import GtkObserver
from g13gui.observer import ChangeType
from g13gui.observer.gtkobserver import GtkObserver
from g13gui.observer.subject import ChangeType
gi.require_version('Gtk', '3.0')
gi.require_version('AppIndicator3', '0.1')

View File

@ -1,8 +1,8 @@
import gi
import g13gui.ui as ui
from g13gui.observer import GtkObserver
from g13gui.model.bindings import G13ToGDK
from g13gui.observer.gtkobserver import GtkObserver
from g13gui.model.bindings import BindsToKeynames
gi.require_version('Gtk', '3.0')
gi.require_version('Gdk', '3.0')

View File

@ -4,9 +4,7 @@ import gi
import g13gui.ui as ui
from g13gui.g13d import SaveTask
from g13gui.g13d import UploadTask
from g13gui.observer import GtkObserver
from g13gui.observer.gtkobserver import GtkObserver
gi.require_version('Gtk', '3.0')
gi.require_version('Gdk', '3.0')
@ -46,8 +44,8 @@ class MainWindow(Gtk.Window, GtkObserver):
self.setupG13ButtonGrid()
def gtkSubjectChanged(self, subject, changeType, key, data=None):
self._doUpload()
self._doSave()
print('Subject changed! Need to save!')
pass
def setupHeaderBar(self):
self._headerBar = Gtk.HeaderBar()
@ -109,15 +107,6 @@ class MainWindow(Gtk.Window, GtkObserver):
def _profileChanged(self, widget):
self._doUpload()
def _doUpload(self):
config = self._prefs.selectedProfile().toCommandString()
task = UploadTask(config)
self._workerQueue.put(task)
def _doSave(self):
task = SaveTask(self._prefs)
self._workerQueue.put(task)
def uploadClicked(self, widget):
self._doUpload()
self._doSave()

View File

@ -1,7 +1,7 @@
import gi
from g13gui.observer import GtkObserver
from g13gui.observer import ChangeType
from g13gui.observer.gtkobserver import GtkObserver
from g13gui.observer.subject import ChangeType
gi.require_version('Gtk', '3.0')
gi.require_version('Gdk', '3.0')

View File

@ -2,11 +2,8 @@ import gi
import enum
import g13gui.model.bindings as bindings
from g13gui.observer import GtkObserver
from g13gui.model import BindingProfile
from g13gui.model.bindings import G13ToGDK
from g13gui.model.bindings import GDKToG13
from g13gui.model.bindings import G13DKeyIsModifier
from g13gui.observer.gtkobserver import GtkObserver
from g13gui.model.bindingprofile import BindingProfile
from g13gui.model.bindings import StickMode
from g13gui.model.bindings import ALL_STICK_MODES