ui: Convert Window code into a class

Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
This commit is contained in:
Anna Schumaker 2021-10-13 13:03:59 -04:00
parent b05ef737f2
commit bc4c3588e6
5 changed files with 79 additions and 80 deletions

View File

@ -9,10 +9,11 @@ class EmmentalApplication(Gtk.Application):
Gtk.Application.__init__(self, *args, application_id="org.gtk.emmental", **kwargs)
def do_activate(self):
window.Window.present()
self.window.present()
def do_startup(self):
self.window = window.Window()
Gtk.Application.do_startup(self)
self.add_window(window.Window)
self.add_window(self.window)
Application = EmmentalApplication()

View File

@ -7,7 +7,7 @@ import pathlib
IconPath = pathlib.Path("data/").absolute()
if version.DEBUG == True:
Display = window.Window.get_display()
Display = Gtk.Label().get_display()
Theme = Gtk.IconTheme.get_for_display(Display)
paths = Theme.get_search_path()

View File

@ -12,7 +12,7 @@ class TestUIIcons(unittest.TestCase):
self.assertIsInstance(icons.Display, Gdk.Display)
self.assertIsInstance(icons.Theme, Gtk.IconTheme)
self.assertEqual(icons.Display, window.Window.get_display())
self.assertEqual(icons.Display, Gtk.Image().get_display())
self.assertEqual(icons.Theme, Gtk.IconTheme.get_for_display(icons.Display))
self.assertEqual(icons.IconPath, Path)

View File

@ -1,63 +1,63 @@
# Copyright 2021 (c) Anna Schumaker.
from lib import settings
from lib import version
from . import window
from . import keyboard
from . import pane
from gi.repository import Gtk
import audio
import lib
import sidebar
import unittest
from gi.repository import Gtk
from . import keyboard
from . import pane
from . import window
class TestUIWindow(unittest.TestCase):
def tearDown(self):
settings.reset()
window.initialize()
class TestBox(unittest.TestCase):
def test_init(self):
box = window.Box()
self.assertIsInstance(box, Gtk.Box)
self.assertEqual(box.get_orientation(), Gtk.Orientation.HORIZONTAL)
def setUpClass():
settings.reset()
window.initialize()
def test_window_init(self):
self.assertIsInstance(window.Window, Gtk.ApplicationWindow)
self.assertIsInstance(window.Window.get_titlebar(), audio.Header)
self.assertIsInstance(window.Box, Gtk.Box)
child = window.Box.get_first_child()
child = box.get_first_child()
self.assertEqual(child, sidebar.Switcher)
child = child.get_next_sibling()
self.assertIsInstance(child, pane.Pane)
self.assertEqual(window.Window.get_child(), window.Box)
window.Window.present()
self.assertEqual(window.Window.get_title(), version.string())
self.assertEqual(window.Window.get_icon_name(), "emmental")
class TestWindow(unittest.TestCase):
def setUp(self):
lib.settings.reset()
self.assertEqual(keyboard.Event.get_widget(), window.Window)
def test_init(self):
win = window.Window()
self.assertIsInstance(win, Gtk.ApplicationWindow)
self.assertIsInstance(win.get_titlebar(), audio.Header)
self.assertIsInstance(win.get_child(), window.Box)
def test_window_resize(self):
self.assertEqual(settings.get_int("window.width"), 1100)
self.assertEqual(settings.get_int("window.height"), 600)
self.assertEqual(win.get_icon_name(), "emmental")
self.assertEqual(win.get_title(), lib.version.string())
self.assertEqual(keyboard.Event.get_widget(), win)
win.remove_controller(keyboard.Event)
self.assertEqual(window.Window.get_property("default-width"), 1100)
self.assertEqual(window.Window.get_property("default-height"), 600)
self.assertFalse(window.Window.is_maximized())
def test_size(self):
win = window.Window()
self.assertEqual(lib.settings.get_int("window.width"), 1400)
self.assertEqual(lib.settings.get_int("window.height"), 800)
self.assertEqual(win.get_default_size(), (1400, 800))
window.Window.set_default_size(1200, 800)
self.assertEqual(settings.get_int("window.width"), 1200)
self.assertEqual(settings.get_int("window.height"), 800)
win.set_default_size(1000, 500)
self.assertEqual(lib.settings.get_int("window.width"), 1000)
self.assertEqual(lib.settings.get_int("window.height"), 500)
win.remove_controller(keyboard.Event)
def test_window_maximize(self):
self.assertFalse(settings.get_bool("window.maximized"))
(width, height) = window.Window.get_default_size()
def test_maximize(self):
win = window.Window()
self.assertFalse(lib.settings.get_bool("window.maximized"))
(width, height) = win.get_default_size()
window.Window.maximize()
#self.assertTrue(settings.get_bool("window.maximized"))
self.assertEqual(settings.get_int("window.width"), width)
self.assertEqual(settings.get_int("window.height"), height)
win.maximize()
self.assertTrue(lib.settings.get_bool("window.maximized"))
self.assertEqual(lib.settings.get_int("window.width"), width)
self.assertEqual(lib.settings.get_int("window.height"), height)
window.Window.unmaximize()
self.assertEqual(settings.get_int("window.width"), width)
self.assertEqual(settings.get_int("window.height"), height)
self.assertFalse(window.Window.is_maximized())
win.unmaximize()
self.assertEqual(lib.settings.get_int("window.width"), width)
self.assertEqual(lib.settings.get_int("window.height"), height)
self.assertFalse(lib.settings.get_bool("window.maximized"))
win.remove_controller(keyboard.Event)

View File

@ -1,44 +1,42 @@
# Copyright 2021 (c) Anna Schumaker.
from lib import settings
from lib import version
import audio
import lib
import sidebar
import gi
gi.require_version("Gtk", "4.0")
from gi.repository import Gtk
from . import keyboard
from . import pane
Window = Gtk.ApplicationWindow()
Box = Gtk.Box.new(Gtk.Orientation.HORIZONTAL, 0)
class Box(Gtk.Box):
def __init__(self):
Gtk.Box.__init__(self)
if sidebar.Switcher.get_parent(): sidebar.Switcher.unparent()
self.append(sidebar.Switcher)
self.append(pane.Pane())
def initialize():
settings.initialize("window.width", 1100)
settings.initialize("window.height", 600)
settings.initialize("window.maximized", False)
initialize()
Box.append(sidebar.Switcher)
Box.append(pane.Pane())
class Window(Gtk.ApplicationWindow):
def __init__(self):
Gtk.ApplicationWindow.__init__(self)
self.set_icon_name("emmental")
self.set_title(lib.version.string())
self.set_titlebar(audio.Header())
self.set_child(Box())
self.add_controller(keyboard.Event)
Window.add_controller(keyboard.Event)
Window.set_title(version.string())
Window.set_icon_name("emmental")
Window.set_titlebar(audio.Header())
Window.set_child(Box)
Window.set_default_size(settings.get_int("window.width"),
settings.get_int("window.height"))
if settings.get_bool("window.maximized"):
Window.maximize()
lib.settings.initialize("window.width", 1400)
lib.settings.initialize("window.height", 800)
lib.settings.initialize("window.maximized", False)
self.set_default_size(lib.settings.get_int("window.width"),
lib.settings.get_int("window.height"))
self.connect("notify::default-width", self.width_changed)
self.connect("notify::default-height", self.height_changed)
self.connect("notify::maximized", self.maximized)
def on_change_width(window, width):
settings.set("window.width", window.get_default_size().width)
Window.connect("notify::default-width", on_change_width)
def width_changed(self, window, param):
lib.settings.set("window.width", self.get_default_size().width)
def on_change_height(window, height):
settings.set("window.height", window.get_default_size().height)
Window.connect("notify::default-height", on_change_height)
def height_changed(self, window, param):
lib.settings.set("window.height", self.get_default_size().height)
def on_maximized(window, maximized):
settings.set("window.maximized", window.is_maximized())
Window.connect("notify::maximized", on_maximized)
def maximized(self, window, param):
lib.settings.set("window.maximized", window.is_maximized())