gem-graph-client/gemgraph/window.py

79 lines
2.7 KiB
Python

# window.py
#
# Copyright (C) 2022 Libre en Communs <contact@a-lec.org>
# Copyright (C) 2022 Adrien Bourmault <neox@a-lec.org>
# Copyright (C) 2022 Jean Sirmai <jean@a-lec.org>
#
# 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 <http://www.gnu.org/licenses/>.
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()
__mode_icon = {
"mode_edit":"document-edit-symbolic" ,
"mode_run":"system-run-symbolic" ,
"mode_presentation":"video-display-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)
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.1"
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)