diff --git a/src/briar/gtk/container.py b/src/briar/gtk/container.py index 0b1a1aeb01fcc3ff2e3d835e31713c2ec27234d7..a54554cee4bc80429e54531561e1c21b27d7e248 100644 --- a/src/briar/gtk/container.py +++ b/src/briar/gtk/container.py @@ -2,9 +2,6 @@ # SPDX-License-Identifier: AGPL-3.0-only # License-Filename: LICENSE.md -from briar.gtk.define import App -from briar.gtk.logger import Logger - import gi gi.require_version('Gtk', '3.0') from gi.repository import Gtk @@ -14,28 +11,12 @@ class Container(Gtk.Overlay): def __init__(self): Gtk.Overlay.__init__(self) + self.builder = Gtk.Builder() self.__setup_view() + self.__register_signals() def __setup_view(self): - Logger.debug("Api has account: %s", App().api.has_account()) - self.builder = Gtk.Builder() - if not App().api.has_account(): - self.builder.add_from_resource("/app/briar/gtk/ui/setup.ui") - self.add(self.builder.get_object("setup")) - else: - self.builder.add_from_resource("/app/briar/gtk/ui/login.ui") - self.add(self.builder.get_object("login")) - self.builder.connect_signals(self) - - def on_username_button_clicked(self, button): - self.builder.get_object("username_grid").set_visible(False) - self.builder.get_object("password_grid").set_visible(True) - self.username = self.builder.get_object("username_entry").get_text() - - def on_password_button_clicked(self, button): - password = self.builder.get_object("password_entry").get_text() - App().api.register((self.username, password)) # TODO: callback + pass - def on_login_pressed(self, button): - password = self.builder.get_object("password_entry").get_text() - App().api.login(password) # TODO: callback + def __register_signals(self): + pass diff --git a/src/briar/gtk/containers/main.py b/src/briar/gtk/containers/main.py new file mode 100644 index 0000000000000000000000000000000000000000..de6b33b4ef0009a888e8a59e28149b7513294e1d --- /dev/null +++ b/src/briar/gtk/containers/main.py @@ -0,0 +1,18 @@ +# Copyright (c) 2019 Nico Alt +# SPDX-License-Identifier: AGPL-3.0-only +# License-Filename: LICENSE.md + +from briar.gtk.container import Container + + +class MainContainer(Container): + + def __init__(self): + super().__init__() + self.__setup_view() + self.__register_signals() + + def __setup_view(self): + self.builder.add_from_resource("/app/briar/gtk/ui/main.ui") + self.add(self.builder.get_object("main")) + self.builder.connect_signals(self) diff --git a/src/briar/gtk/containers/startup.py b/src/briar/gtk/containers/startup.py new file mode 100644 index 0000000000000000000000000000000000000000..2667a6e6329e75124ed7c1453bdbe27d9ce2a620 --- /dev/null +++ b/src/briar/gtk/containers/startup.py @@ -0,0 +1,51 @@ +# Copyright (c) 2019 Nico Alt +# SPDX-License-Identifier: AGPL-3.0-only +# License-Filename: LICENSE.md + +from briar.gtk.container import Container +from briar.gtk.define import App + +import gi +gi.require_version('Gtk', '3.0') +from gi.repository import GObject, Gtk + + +class StartupContainer(Container): + + def __init__(self): + super().__init__() + self.__setup_view() + self.__register_signals() + + def on_username_button_clicked(self, button): + self.builder.get_object("username_grid").set_visible(False) + self.builder.get_object("password_grid").set_visible(True) + self.username = self.builder.get_object("username_entry").get_text() + + def on_password_button_clicked(self, button): + password = self.builder.get_object("password_entry").get_text() + App().api.register((self.username, password), + self.__startup_completed) + + def on_login_pressed(self, button): + password = self.builder.get_object("password_entry").get_text() + App().api.login(password, self.__startup_completed) + + def __setup_view(self): + self.set_hexpand(True) + self.set_vexpand(True) + if not App().api.has_account(): + self.builder.add_from_resource("/app/briar/gtk/ui/setup.ui") + self.add(self.builder.get_object("setup")) + else: + self.builder.add_from_resource("/app/briar/gtk/ui/login.ui") + self.add(self.builder.get_object("login")) + self.builder.connect_signals(self) + + def __register_signals(self): + GObject.signal_new("briar_startup_completed", Gtk.Overlay, + GObject.SignalFlags.RUN_LAST, GObject.TYPE_BOOLEAN, + (GObject.TYPE_STRING,)) + + def __startup_completed(self, succeded=True): + self.emit("briar_startup_completed", ("succeded",)) diff --git a/src/briar/gtk/window.py b/src/briar/gtk/window.py index 2f7d7a4d295054664ebf5c6d7bb59698818dd03c..f44cc8b1525aac15d0a8699a55ef8e3f2bd819b8 100644 --- a/src/briar/gtk/window.py +++ b/src/briar/gtk/window.py @@ -2,7 +2,8 @@ # SPDX-License-Identifier: AGPL-3.0-only # License-Filename: LICENSE.md -from briar.gtk.container import Container +from briar.gtk.containers.main import MainContainer +from briar.gtk.containers.startup import StartupContainer from briar.gtk.define import App import gi @@ -13,9 +14,7 @@ from gi.repository import Gtk, Gdk, GLib class Window(Gtk.ApplicationWindow): def __init__(self): - Gtk.ApplicationWindow.__init__(self, - application=App(), - title="Briar", + Gtk.ApplicationWindow.__init__(self, application=App(), title="Briar", icon_name="app.briar.gtk") self.__setup_content() @@ -24,16 +23,9 @@ class Window(Gtk.ApplicationWindow): return self.__container def __setup_content(self): - self.__container = Container() - self.__container.show() - self.__container.set_hexpand(True) - self.__container.set_vexpand(True) - self.__vgrid = Gtk.Grid() - self.__vgrid.set_orientation(Gtk.Orientation.VERTICAL) - self.__vgrid.show() - self.__vgrid.add(self.__container) - self.add(self.__vgrid) - self.__setup_size((800, 600)) + self.__setup_size((800, 600)) # TODO: do properly (constants, save) + self.__setup_grid() + self.__setup_startup_container() def __setup_size(self, size): if len(size) == 2 and\ @@ -41,3 +33,26 @@ class Window(Gtk.ApplicationWindow): isinstance(size[1], int): self.resize(size[0], size[1]) + def __setup_grid(self): + self.__grid = Gtk.Grid() + self.__grid.set_orientation(Gtk.Orientation.HORIZONTAL) + self.__grid.show() + self.add(self.__grid) + + def __setup_startup_container(self): + self.__container = StartupContainer() + self.__container.show() + + self.__container.connect("briar_startup_completed", + self.__on_startup_completed) + self.__grid.add(self.__container) + + def __on_startup_completed(self): + self.__grid.remove_all() + self.__setup_main_container(self) + + def __setup_main_container(self): + self.__container = MainContainer() + self.__container.show() + self.__grid.add(self.__container) +