mirror of
https://github.com/jtgans/g13gui.git
synced 2025-06-20 00:14:09 -04:00
g13gui: Rework the observer model
Subject was large enough to be in its own file.
This commit is contained in:
parent
b3d0cb5f21
commit
054d31033f
@ -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
|
||||||
|
@ -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):
|
||||||
|
@ -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):
|
||||||
|
@ -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):
|
||||||
|
@ -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)
|
||||||
|
@ -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()
|
||||||
|
@ -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
|
||||||
|
|
||||||
|
|
||||||
|
@ -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):
|
||||||
|
@ -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'
|
||||||
|
@ -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):
|
||||||
|
@ -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()
|
||||||
|
@ -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
|
|
@ -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
|
||||||
|
@ -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')
|
||||||
|
@ -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')
|
||||||
|
@ -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()
|
||||||
|
@ -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')
|
||||||
|
@ -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
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user