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_WIDTH
from g13gui.bitwidgets import DISPLAY_HEIGHT from g13gui.bitwidgets import DISPLAY_HEIGHT
from g13gui.bitwidgets.widget import Widget from g13gui.bitwidgets.widget import Widget
from g13gui.observer import ChangeType from g13gui.observer.subject import ChangeType
GLYPH_WIDTH = 5 GLYPH_WIDTH = 5

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -1,6 +1,6 @@
import json import json
import g13gui.model as model from g13gui.model.prefs import Preferences
from g13gui.common import PROFILES_CONFIG_PATH from g13gui.common import PROFILES_CONFIG_PATH
@ -10,9 +10,11 @@ class PreferencesStore(object):
with open(PROFILES_CONFIG_PATH, 'r') as f: with open(PROFILES_CONFIG_PATH, 'r') as f:
data = f.read() data = f.read()
prefsDict = json.loads(data) prefsDict = json.loads(data)
return model.Preferences(prefsDict) return Preferences(prefsDict)
except: except Exception as e:
return model.Preferences() print('Unable to load preferences from %s: %s'
% (PROFILES_CONFIG_PATH, e))
return Preferences()
def storePrefs(prefs): def storePrefs(prefs):
prefsDict = prefs.saveToDict() 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 gi
import queue import queue
from g13gui.observer import Observer from g13gui.observer.observer import Observer
gi.require_version('Gtk', '3.0') gi.require_version('Gtk', '3.0')
from gi.repository import Gtk, GObject from gi.repository import Gtk, GObject

View File

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

View File

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

View File

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

View File

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

View File

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