ui: Convert Window code into a class
Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
This commit is contained in:
parent
b05ef737f2
commit
bc4c3588e6
|
@ -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()
|
||||
|
|
|
@ -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()
|
||||
|
|
|
@ -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)
|
||||
|
||||
|
|
|
@ -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)
|
||||
|
|
60
ui/window.py
60
ui/window.py
|
@ -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())
|
||||
|
|
Loading…
Reference in New Issue