From 3a04b2c8e87dc8f689d8c670b2cef3f0f608a308 Mon Sep 17 00:00:00 2001 From: Maxim Stewart Date: Fri, 8 May 2020 22:31:29 -0500 Subject: [PATCH] Moved CPU drawing to mixin --- src/Pytop/__init__.py | 6 +-- src/Pytop/signal_classes/CrossClassSignals.py | 43 ++++++++++++++-- src/Pytop/signal_classes/__init__.py | 6 +-- .../CPUDrawMixin.py} | 51 +++---------------- .../TaskbarMixin.py} | 10 +--- src/Pytop/signal_classes/mixins/__init__.py | 2 + 6 files changed, 55 insertions(+), 63 deletions(-) rename src/Pytop/signal_classes/{DrawSignals.py => mixins/CPUDrawMixin.py} (64%) rename src/Pytop/signal_classes/{TaskbarSignals.py => mixins/TaskbarMixin.py} (88%) create mode 100644 src/Pytop/signal_classes/mixins/__init__.py diff --git a/src/Pytop/__init__.py b/src/Pytop/__init__.py index 787e0a9..aa6abfb 100755 --- a/src/Pytop/__init__.py +++ b/src/Pytop/__init__.py @@ -15,7 +15,7 @@ from gi.repository import GLib # Application imports from utils import Settings -from signal_classes import CrossClassSignals, GridSignals, TaskbarSignals, DrawSignals +from signal_classes import CrossClassSignals, GridSignals class Main: @@ -57,9 +57,7 @@ class Main: # Gets the methods from the classes and sets to handler. # Then, builder connects to any signals it needs. classes = [CrossClassSignals(settings), - GridSignals(settings), - TaskbarSignals(settings), - DrawSignals(settings)] + GridSignals(settings)] handlers = {} for c in classes: diff --git a/src/Pytop/signal_classes/CrossClassSignals.py b/src/Pytop/signal_classes/CrossClassSignals.py index d1d6007..98e7e9c 100644 --- a/src/Pytop/signal_classes/CrossClassSignals.py +++ b/src/Pytop/signal_classes/CrossClassSignals.py @@ -5,16 +5,51 @@ from datetime import datetime from gi.repository import GObject # Application imports +from mixins import CPUDrawMixin, TaskbarMixin -class CrossClassSignals: +class CrossClassSignals(CPUDrawMixin, TaskbarMixin): def __init__(self, settings): - self.settings = settings - self.builder = self.settings.returnBuilder() - self.timeLabel = self.builder.get_object("timeLabel") + self.settings = settings + self.builder = self.settings.returnBuilder() + + self.timeLabel = self.builder.get_object("timeLabel") + self.drawArea = self.builder.get_object("drawArea") + self.brushSizeProp = self.builder.get_object("brushSizeProp") + self.brushColorProp = self.builder.get_object("brushColorProp") + + # Menu bar setup + self.orientation = 1 # 0 = horizontal, 1 = vertical + + # Must be before setting clock + self.setPagerWidget() + self.setTasklistWidget() + + # Must be after pager and task list inits self.displayclock() self.startClock() + # CPUDrawMixin Parts + self.cpu_percents = [] + self.doDrawBackground = False + self.isDrawing = False + self.surface = None + self.aw = None # Draw area width + self.ah = None # Draw area height + self.xStep = None # For x-axis 60 sec steps + self.yStep = None # For y-axis %s + + rgba = self.brushColorProp.get_rgba() + self.brushColorVal = [rgba.red, rgba.green, rgba.blue, rgba.alpha] + self.brushSizeVal = self.brushSizeProp.get_value() + self.updateSpeed = 100 # 1 sec = 1000ms + + self.good = [0.53, 0.8, 0.15, 1.0] + self.warning = [1.0, 0.66, 0.0, 1.0] + self.danger = [1.0, 0.0, 0.0, 1.0] + + + # Displays Timer def displayclock(self): diff --git a/src/Pytop/signal_classes/__init__.py b/src/Pytop/signal_classes/__init__.py index 00e056b..7f79368 100644 --- a/src/Pytop/signal_classes/__init__.py +++ b/src/Pytop/signal_classes/__init__.py @@ -1,4 +1,4 @@ -from signal_classes.CrossClassSignals import CrossClassSignals -from signal_classes.DrawSignals import DrawSignals +from mixins import CPUDrawMixin +from mixins import TaskbarMixin from signal_classes.GridSignals import GridSignals -from signal_classes.TaskbarSignals import TaskbarSignals +from signal_classes.CrossClassSignals import CrossClassSignals diff --git a/src/Pytop/signal_classes/DrawSignals.py b/src/Pytop/signal_classes/mixins/CPUDrawMixin.py similarity index 64% rename from src/Pytop/signal_classes/DrawSignals.py rename to src/Pytop/signal_classes/mixins/CPUDrawMixin.py index b47ee2b..e921777 100755 --- a/src/Pytop/signal_classes/DrawSignals.py +++ b/src/Pytop/signal_classes/mixins/CPUDrawMixin.py @@ -14,49 +14,14 @@ from gi.repository import GLib -class DrawSignals: - def __init__(self, settings): - self.settings = settings - self.builder = self.settings.returnBuilder() - - self.drawArea = self.builder.get_object("drawArea") - self.brushSizeProp = self.builder.get_object("brushSizeProp") - self.brushColorProp = self.builder.get_object("brushColorProp") - self.messageWidget = self.builder.get_object("messageWidget") - self.messageLabel = self.builder.get_object("messageLabel") - - self.cpu_percents = [] - self.doDrawBackground = False - self.isDrawing = False - self.surface = None - self.aw = None # Draw area width - self.ah = None # Draw area height - self.xStep = None # For x-axis 60 sec steps - self.yStep = None # For y-axis %s - - rgba = self.brushColorProp.get_rgba() - self.brushColorVal = [rgba.red, rgba.green, rgba.blue, rgba.alpha] - self.brushSizeVal = self.brushSizeProp.get_value() - self.updateSpeed = 100 # 1 sec = 1000ms - - self.success = "#88cc27" - self.warning = "#ffa800" - self.error = "#ff0000" - - self.good = [0.53, 0.8, 0.15, 1.0] - self.warning = [1.0, 0.66, 0.0, 1.0] - self.danger = [1.0, 0.0, 0.0, 1.0] - - # Note: y-axis on draw area goes from top to bottom when increasing. - # Need to do the math such that you subtract from max height to start from bottom to go up - # self.linePoints.append([1 * xStep, ah - (23 * yStep)]) # 23% - # self.linePoints.append([2 * xStep, ah - (60 * yStep)]) # 60% - # self.drawPointLine() - # del self.linePoints[0:1] - # self.linePoints.append([3 * xStep, ah - (44 * yStep)]) # 44% - - - +class CPUDrawMixin: + # Note: y-axis on draw area goes from top to bottom when increasing. + # Need to do the math such that you subtract from max height to start from bottom to go up + # self.linePoints.append([1 * xStep, ah - (23 * yStep)]) # 23% + # self.linePoints.append([2 * xStep, ah - (60 * yStep)]) # 60% + # self.drawPointLine() + # del self.linePoints[0:1] + # self.linePoints.append([3 * xStep, ah - (44 * yStep)]) # 44% def updateCPUPoints(self): # Clears screen when enough points exist and unshifts the # first point to keep fixed range diff --git a/src/Pytop/signal_classes/TaskbarSignals.py b/src/Pytop/signal_classes/mixins/TaskbarMixin.py similarity index 88% rename from src/Pytop/signal_classes/TaskbarSignals.py rename to src/Pytop/signal_classes/mixins/TaskbarMixin.py index cff148b..b2d7c13 100644 --- a/src/Pytop/signal_classes/TaskbarSignals.py +++ b/src/Pytop/signal_classes/mixins/TaskbarMixin.py @@ -23,15 +23,7 @@ class MouseButton: RIGHT_BUTTON = 3 -class TaskbarSignals: - def __init__(self, settings): - self.settings = settings - self.builder = self.settings.returnBuilder() - self.orientation = 1 # 0 = horizontal, 1 = vertical - - self.setPagerWidget() - self.setTasklistWidget() - +class TaskbarMixin: def toggleCalPopover(self, widget, eve): calendarPopup = self.builder.get_object('calendarPopup') if (calendarPopup.get_visible() == False): diff --git a/src/Pytop/signal_classes/mixins/__init__.py b/src/Pytop/signal_classes/mixins/__init__.py new file mode 100644 index 0000000..d1e63b0 --- /dev/null +++ b/src/Pytop/signal_classes/mixins/__init__.py @@ -0,0 +1,2 @@ +from .TaskbarMixin import TaskbarMixin +from .CPUDrawMixin import CPUDrawMixin