diff --git a/sgbackup/gui/_app.py b/sgbackup/gui/_app.py
index 9fbf116..d0417c2 100644
--- a/sgbackup/gui/_app.py
+++ b/sgbackup/gui/_app.py
@@ -16,7 +16,8 @@
# along with this program. If not, see . #
###############################################################################
-from gi.repository import Gtk,GObject,Gio,Gdk
+from gi.repository import Gtk,Gio,Gdk
+from gi.repository.GObject import GObject,Signal,Property,SignalFlags
import logging; logger=logging.getLogger(__name__)
@@ -24,27 +25,29 @@ import os
from datetime import datetime as DateTime
from pathlib import Path
-from .. import game
from ..settings import settings
from ._settingsdialog import SettingsDialog
from ._gamedialog import GameDialog
-from ..game import Game
+from ..game import Game,GameManager
__gtype_name__ = __name__
class GameView(Gtk.ScrolledWindow):
+ """
+ GameView The View for games.
+
+ This is widget presents a clumnview for the installed games.
+ """
__gtype_name__ = "GameView"
def __init__(self):
"""
- GameView The View for games.
-
- This is widget presents a clumnview for the installed games.
+ GameView
"""
Gtk.ScrolledWindow.__init__(self)
self.__liststore = Gio.ListStore.new(game.Game)
- for g in game.GameManager.get_global().games.values():
+ for g in GameManager.get_global().games.values():
pass
self.__liststore.append(g)
@@ -82,13 +85,34 @@ class GameView(Gtk.ScrolledWindow):
self.set_child(self._columnview)
@property
- def _liststore(self):
+ def _liststore(self)->Gio.ListStore:
+ """
+ The `Gio.ListStore` that holds the list of installed games.
+
+
+ :type: Gio.ListStore
+ """
return self.__liststore
@property
- def _columnview(self)->Gtk.ColumnView:
+ def columnview(self)->Gtk.ColumnView:
+ """
+ columnview The `Gtk.ColumnView` of the widget.
+
+ :type: Gtk.ColumnView
+ """
return self.__columnview
+ def refresh(self):
+ """
+ refresh Refresh the view.
+
+ This method reloads the installed Games.
+ """
+ self.__liststore.remove_all()
+ for game in GameManager.get_global().games.values():
+ self.__liststore.append(game)
+
def _on_key_column_setup(self,factory,item):
item.set_child(Gtk.Label())
@@ -160,6 +184,13 @@ class GameView(Gtk.ScrolledWindow):
@property
def current_game(self)->Game|None:
+ """
+ current_game Get the currently selected `Game`
+
+ If no `Game` is selected this property resolves to `Null`
+
+ :type: Game|None
+ """
selection = self._columnview.get_model()
pos = selection.get_selected()
if pos == Gtk.INVALID_LIST_POSITION:
@@ -168,8 +199,8 @@ class GameView(Gtk.ScrolledWindow):
# GameView class
-class BackupViewData(GObject.GObject):
- def __init__(self,_game:game.Game,filename:str):
+class BackupViewData(GObject):
+ def __init__(self,_game:Game,filename:str):
GObject.GObject.__init__(self)
self.__game = _game
self.__filename = filename
@@ -183,26 +214,26 @@ class BackupViewData(GObject.GObject):
self.__extension = '.' + parts[3:]
@property
- def game(self)->game.Game:
+ def game(self)->Game:
return self.__game
- @GObject.Property
+ @Property
def savegame_name(self):
return self.__savegame_name
- @GObject.Property(type=str)
+ @Property(type=str)
def filename(self)->str:
return self.__filename
- @GObject.Property(type=bool,default=False)
+ @Property(type=bool,default=False)
def is_live(self)->bool:
pass
- @GObject.Property
+ @Property
def extension(self):
return self.__extension
- @GObject.Property
+ @Property
def timestamp(self):
return self.__timestamp
@@ -240,7 +271,7 @@ class BackupView(Gtk.ScrolledWindow):
self.__columnview.append_column(timestamp_column)
self._on_gameview_selection_changed(selection)
- self.gameview._columnview.get_model().connect('selection-changed',self._on_gameview_selection_changed)
+ self.gameview.columnview.get_model().connect('selection-changed',self._on_gameview_selection_changed)
self.set_child(self.__columnview)
@@ -357,18 +388,21 @@ class AppWindow(Gtk.ApplicationWindow):
self.set_child(vbox)
- @GObject.Property
+ @property
def builder(self):
return self.__builder
- @GObject.Property
+ @property
def backupview(self):
return self.__backupview
- @GObject.Property
+ @property
def gameview(self):
return self.__gameview
+ def refresh(self):
+ self.gameview.refresh()
+ #self.backupview.refresh()
class Application(Gtk.Application):
__gtype_name__ = "Application"
@@ -387,7 +421,7 @@ class Application(Gtk.Application):
def _logger(self):
return self.__logger
- @GObject.Property
+ @property
def appwindow(self):
return self.__appwindow
@@ -424,7 +458,7 @@ class Application(Gtk.Application):
# add accels
self.set_accels_for_action('app.quit',["q"])
- @GObject.Property
+ @Property
def builder(self):
return self.__builder
@@ -448,7 +482,8 @@ class Application(Gtk.Application):
def on_action_new_game(self,action,param):
def on_reponse(dialog,response):
- dialog.destroy()
+ if response == Gtk.RESPONSE_APPLY:
+ self.appwindow.resfresh()
dialog = GameDialog(self.appwindow)
dialog.connect('response',on_reponse)
@@ -459,10 +494,10 @@ class Application(Gtk.Application):
self.emit('settings-dialog-init',dialog)
return dialog
- @GObject.Signal(name='settings-dialog-init',
- flags=GObject.SignalFlags.RUN_LAST,
- return_type=None,
- arg_types=(SettingsDialog,))
+ @Signal(name='settings-dialog-init',
+ flags=SignalFlags.RUN_LAST,
+ return_type=None,
+ arg_types=(SettingsDialog,))
def do_settings_dialog_init(self,dialog):
pass
diff --git a/sphinx/modules/sgbackup.gui-app.rst b/sphinx/modules/sgbackup.gui-app.rst
index 8e17314..254457d 100644
--- a/sphinx/modules/sgbackup.gui-app.rst
+++ b/sphinx/modules/sgbackup.gui-app.rst
@@ -2,17 +2,8 @@
Applicaction
============
-Applicaction
-------------
-
.. autoclass:: sgbackup.gui.Application
:members:
:undoc-members:
-Application Window
-------------------
-
-.. autoclass:: sgbackup.gui.AppWindow
- :members:
- :undoc-members:
\ No newline at end of file
diff --git a/sphinx/modules/sgbackup.gui-widgets.rst b/sphinx/modules/sgbackup.gui-widgets.rst
index 89892f8..240f5dd 100644
--- a/sphinx/modules/sgbackup.gui-widgets.rst
+++ b/sphinx/modules/sgbackup.gui-widgets.rst
@@ -2,6 +2,10 @@
Widgets
=======
+.. autoclass:: sgbackup.gui.AppWindow
+ :members:
+ :undoc-members:
+
.. autoclass:: sgbackup.gui.GameView
:members:
:undoc-members: