# window.py # # Copyright (C) 2022 Libre en Communs # Copyright (C) 2022 Adrien Bourmault # Copyright (C) 2022 Jean Sirmai # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . from gi.repository import Gtk, Adw @Gtk.Template(filename='ui/gemgraph.ui') class GemGraphWindow(Gtk.ApplicationWindow): """ Window class """ __gtype_name__ = 'main' main_stack = Gtk.Template.Child() side_stack = Gtk.Template.Child() main_paned = Gtk.Template.Child() main_button_mode = Gtk.Template.Child() toast_overlay = Gtk.Template.Child() main_button_sidebar = Gtk.Template.Child() __mode_icon = { "mode_home":"user-home-symbolic" , "mode_edit":"document-edit-symbolic" , "mode_run":"system-run-symbolic" , "mode_presentation":"x-office-presentation-symbolic" } def __init__(self, **kwargs): super().__init__(**kwargs) def toggle_sidebar(self): """ Sets the sidebar position to open or closed """ position = self.main_paned.get_position() if position != 0: self.main_paned.set_position(0) else: self.main_paned.set_position(300) self.main_button_sidebar.toggled() def stack_switch_mode(self, mode): """ Sets the active mode from stack. Mode is the name of the mode (string) """ self.main_stack.set_visible_child_full("main_"+mode, Gtk.StackTransitionType.CROSSFADE) self.side_stack.set_visible_child_full("side_"+mode, Gtk.StackTransitionType.CROSSFADE) self.main_button_mode.props.icon_name = self.__mode_icon["mode_"+mode] def send_toast(self, message): self.toast_overlay.add_toast(Adw.Toast(title=message)) class AboutDialog(Gtk.AboutDialog): def __init__(self, parent): Gtk.AboutDialog.__init__(self) self.props.program_name = 'GemGraph' self.props.version = "0.0.0" self.props.authors = ['Adrien Bourmault', 'Jean Sirmai'] self.props.copyright = 'Copyright © 2022 Libre en Communs' self.props.logo_icon_name = 'application-x-executable' self.props.modal = True self.set_transient_for(parent)