diff --git a/src/versions/solarfm-0.0.1/SolarFM/solarfm/core/controller.py b/src/versions/solarfm-0.0.1/SolarFM/solarfm/core/controller.py
index 1ca8337..bd8db67 100644
--- a/src/versions/solarfm-0.0.1/SolarFM/solarfm/core/controller.py
+++ b/src/versions/solarfm-0.0.1/SolarFM/solarfm/core/controller.py
@@ -1,6 +1,5 @@
# Python imports
import os
-import gc
import time
# Lib imports
@@ -13,25 +12,29 @@ from gi.repository import GLib
from .controller_data import Controller_Data
from .mixins.signals_mixins import SignalsMixins
-from widgets.popups.message_popup_widget import MessagePopupWidget
-from widgets.popups.path_menu_popup_widget import PathMenuPopupWidget
-from widgets.popups.plugins_popup_widget import PluginsPopupWidget
-from widgets.popups.io_popup_widget import IOPopupWidget
+from .ui.dialogs.about_widget import AboutWidget
+from .ui.dialogs.appchooser_widget import AppchooserWidget
+from .ui.dialogs.file_exists_widget import FileExistsWidget
+from .ui.dialogs.new_file_widget import NewFileWidget
+from .ui.dialogs.message_widget import MessageWidget
+from .ui.dialogs.rename_widget import RenameWidget
+from .ui.dialogs.save_load_widget import SaveLoadWidget
-from widgets.context_menu_widget import ContextMenuWidget
-from widgets.new_file_widget import NewFileWidget
-from widgets.rename_widget import RenameWidget
-from widgets.file_exists_widget import FileExistsWidget
-from widgets.about_widget import AboutWidget
-from widgets.appchooser_widget import AppchooserWidget
+from .ui.popups.message_popup_widget import MessagePopupWidget
+from .ui.popups.path_menu_popup_widget import PathMenuPopupWidget
+from .ui.popups.plugins_popup_widget import PluginsPopupWidget
+from .ui.popups.io_popup_widget import IOPopupWidget
-from .ui import UI
+from .ui.context_menu_widget import ContextMenuWidget
+
+from .ui_mixin import UIMixin
-class Controller(UI, SignalsMixins, Controller_Data):
+class Controller(UIMixin, SignalsMixins, Controller_Data):
""" Controller coordinates the mixins and is somewhat the root hub of it all. """
+
def __init__(self, args, unknownargs):
self._setup_styling()
self._setup_signals()
@@ -49,33 +52,39 @@ class Controller(UI, SignalsMixins, Controller_Data):
message = f"FILE|{arg}"
event_system.emit("post_file_to_ipc", message)
+
def _setup_styling(self):
...
def _setup_signals(self):
...
- # NOTE: Really we will move these to the UI/(New) Window 'base' controller
- # after we're done cleaning and refactoring to use fewer mixins.
- def _load_widgets(self):
- MessagePopupWidget()
- PathMenuPopupWidget()
- PluginsPopupWidget()
- IOPopupWidget()
- ContextMenuWidget()
- NewFileWidget()
- RenameWidget()
- FileExistsWidget()
- AboutWidget()
- AppchooserWidget()
-
def _subscribe_to_events(self):
event_system.subscribe("handle_file_from_ipc", self.handle_file_from_ipc)
+ event_system.subscribe("clear_notebooks", self.clear_notebooks)
event_system.subscribe("get_current_state", self.get_current_state)
event_system.subscribe("go_to_path", self.go_to_path)
event_system.subscribe("do_action_from_menu_controls", self.do_action_from_menu_controls)
# NOTE: Needs to be moved (probably just to file actions class) after reducing mixins usage
event_system.subscribe("open_with_files", self.open_with_files)
+ event_system.subscribe("generate_windows", self.generate_windows)
+
+ # NOTE: Really we will move these to the UI/(New) Window 'base' controller
+ # after we're done cleaning and refactoring to use fewer mixins.
+ def _load_widgets(self):
+ IOPopupWidget()
+ MessagePopupWidget()
+ PathMenuPopupWidget()
+ PluginsPopupWidget()
+
+ AboutWidget()
+ AppchooserWidget()
+ ContextMenuWidget()
+ NewFileWidget()
+ RenameWidget()
+ FileExistsWidget()
+ SaveLoadWidget()
+ self.message_dialog = MessageWidget()
def tear_down(self, widget=None, eve=None):
@@ -87,54 +96,6 @@ class Controller(UI, SignalsMixins, Controller_Data):
Gtk.main_quit()
- def save_load_session(self, action="save_session"):
- wid, tid = self.fm_controller.get_active_wid_and_tid()
- tab = self.get_fm_window(wid).get_tab_by_id(tid)
- save_load_dialog = self.builder.get_object("save_load_dialog")
-
- if action == "save_session":
- if not settings.is_trace_debug():
- self.fm_controller.save_state()
-
- return
- elif action == "save_session_as":
- save_load_dialog.set_action(Gtk.FileChooserAction.SAVE)
- elif action == "load_session":
- save_load_dialog.set_action(Gtk.FileChooserAction.OPEN)
- else:
- raise Exception(f"Unknown action given: {action}")
-
- save_load_dialog.set_current_folder(tab.get_current_directory())
- save_load_dialog.set_current_name("session.json")
- response = save_load_dialog.run()
- if response == Gtk.ResponseType.OK:
- if action == "save_session_as":
- path = f"{save_load_dialog.get_current_folder()}/{save_load_dialog.get_current_name()}"
- self.fm_controller.save_state(path)
- elif action == "load_session":
- path = f"{save_load_dialog.get_file().get_path()}"
- session_json = self.fm_controller.get_state_from_file(path)
- self.load_session(session_json)
- if (response == Gtk.ResponseType.CANCEL) or (response == Gtk.ResponseType.DELETE_EVENT):
- ...
-
- save_load_dialog.hide()
-
- def load_session(self, session_json):
- if settings.is_debug():
- logger.debug(f"Session Data: {session_json}")
-
- self.ctrl_down = False
- self.shift_down = False
- self.alt_down = False
- for notebook in self.notebooks:
- self.clear_children(notebook)
-
- self.fm_controller.unload_tabs_and_windows()
- self.generate_windows(session_json)
- gc.collect()
-
-
def do_action_from_menu_controls(self, widget, eve = None):
if not isinstance(widget, str):
action = widget.get_name()
@@ -166,7 +127,7 @@ class Controller(UI, SignalsMixins, Controller_Data):
if action == "create":
self.create_files()
if action in ["save_session", "save_session_as", "load_session"]:
- self.save_load_session(action)
+ event_system.emit("save_load_session", (action))
if action == "about_page":
event_system.emit("show_about_page")
diff --git a/src/versions/solarfm-0.0.1/SolarFM/solarfm/core/controller_data.py b/src/versions/solarfm-0.0.1/SolarFM/solarfm/core/controller_data.py
index 211ce95..4a9e259 100644
--- a/src/versions/solarfm-0.0.1/SolarFM/solarfm/core/controller_data.py
+++ b/src/versions/solarfm-0.0.1/SolarFM/solarfm/core/controller_data.py
@@ -20,6 +20,8 @@ from plugins.plugins_controller import PluginsController
@dataclass(slots=True)
class State:
+ fm_controller: any = None
+ notebooks: any = None
wid: int = None
tid: int = None
tab: type = None
@@ -28,7 +30,7 @@ class State:
selected_files: [] = None
to_copy_files: [] = None
to_cut_files: [] = None
- warning_alert: type = None
+ message_dialog: type = None
class Controller_Data:
@@ -108,11 +110,13 @@ class Controller_Data:
state (obj): State
'''
state = State()
+ state.fm_controller = self.fm_controller
+ state.notebooks = self.notebooks
state.wid, state.tid = self.fm_controller.get_active_wid_and_tid()
state.tab = self.get_fm_window(state.wid).get_tab_by_id(state.tid)
state.icon_grid = self.builder.get_object(f"{state.wid}|{state.tid}|icon_grid")
state.store = state.icon_grid.get_model()
- state.warning_alert = self.warning_alert
+ state.message_dialog = self.message_dialog
selected_files = state.icon_grid.get_selected_items()
if selected_files:
@@ -153,6 +157,15 @@ class Controller_Data:
''' Checks if a given method exists. '''
return callable(getattr(obj, name, None))
+
+ def clear_notebooks(self) -> None:
+ self.ctrl_down = False
+ self.shift_down = False
+ self.alt_down = False
+
+ for notebook in self.notebooks:
+ self.clear_children(notebook)
+
def clear_children(self, widget: type) -> None:
''' Clear children of a gtk widget. '''
for child in widget.get_children():
diff --git a/src/versions/solarfm-0.0.1/SolarFM/solarfm/core/mixins/signals/file_action_signals_mixin.py b/src/versions/solarfm-0.0.1/SolarFM/solarfm/core/mixins/signals/file_action_signals_mixin.py
index 96c97f7..3001952 100644
--- a/src/versions/solarfm-0.0.1/SolarFM/solarfm/core/mixins/signals/file_action_signals_mixin.py
+++ b/src/versions/solarfm-0.0.1/SolarFM/solarfm/core/mixins/signals/file_action_signals_mixin.py
@@ -13,7 +13,7 @@ from gi.repository import Gio
# Application imports
-from widgets.io_widget import IOWidget
+from ...ui.io_widget import IOWidget
diff --git a/src/versions/solarfm-0.0.1/SolarFM/solarfm/core/mixins/ui/grid_mixin.py b/src/versions/solarfm-0.0.1/SolarFM/solarfm/core/mixins/ui/grid_mixin.py
index 7b1295f..1a11d25 100644
--- a/src/versions/solarfm-0.0.1/SolarFM/solarfm/core/mixins/ui/grid_mixin.py
+++ b/src/versions/solarfm-0.0.1/SolarFM/solarfm/core/mixins/ui/grid_mixin.py
@@ -13,9 +13,9 @@ from gi.repository import Gio
from gi.repository import GdkPixbuf
# Application imports
-from widgets.tab_header_widget import TabHeaderWidget
-from widgets.icon_grid_widget import IconGridWidget
-from widgets.icon_tree_widget import IconTreeWidget
+from ...ui.tab_header_widget import TabHeaderWidget
+from ...ui.icon_grid_widget import IconGridWidget
+from ...ui.icon_tree_widget import IconTreeWidget
diff --git a/src/versions/solarfm-0.0.1/SolarFM/solarfm/widgets/__init__.py b/src/versions/solarfm-0.0.1/SolarFM/solarfm/core/ui/__init__.py
similarity index 100%
rename from src/versions/solarfm-0.0.1/SolarFM/solarfm/widgets/__init__.py
rename to src/versions/solarfm-0.0.1/SolarFM/solarfm/core/ui/__init__.py
diff --git a/src/versions/solarfm-0.0.1/SolarFM/solarfm/widgets/context_menu_widget.py b/src/versions/solarfm-0.0.1/SolarFM/solarfm/core/ui/context_menu_widget.py
similarity index 100%
rename from src/versions/solarfm-0.0.1/SolarFM/solarfm/widgets/context_menu_widget.py
rename to src/versions/solarfm-0.0.1/SolarFM/solarfm/core/ui/context_menu_widget.py
diff --git a/src/versions/solarfm-0.0.1/SolarFM/solarfm/widgets/about_widget.py b/src/versions/solarfm-0.0.1/SolarFM/solarfm/core/ui/dialogs/about_widget.py
similarity index 100%
rename from src/versions/solarfm-0.0.1/SolarFM/solarfm/widgets/about_widget.py
rename to src/versions/solarfm-0.0.1/SolarFM/solarfm/core/ui/dialogs/about_widget.py
diff --git a/src/versions/solarfm-0.0.1/SolarFM/solarfm/widgets/appchooser_widget.py b/src/versions/solarfm-0.0.1/SolarFM/solarfm/core/ui/dialogs/appchooser_widget.py
similarity index 100%
rename from src/versions/solarfm-0.0.1/SolarFM/solarfm/widgets/appchooser_widget.py
rename to src/versions/solarfm-0.0.1/SolarFM/solarfm/core/ui/dialogs/appchooser_widget.py
diff --git a/src/versions/solarfm-0.0.1/SolarFM/solarfm/widgets/file_exists_widget.py b/src/versions/solarfm-0.0.1/SolarFM/solarfm/core/ui/dialogs/file_exists_widget.py
similarity index 100%
rename from src/versions/solarfm-0.0.1/SolarFM/solarfm/widgets/file_exists_widget.py
rename to src/versions/solarfm-0.0.1/SolarFM/solarfm/core/ui/dialogs/file_exists_widget.py
diff --git a/src/versions/solarfm-0.0.1/SolarFM/solarfm/core/ui/dialogs/message_widget.py b/src/versions/solarfm-0.0.1/SolarFM/solarfm/core/ui/dialogs/message_widget.py
new file mode 100644
index 0000000..ff2eb5a
--- /dev/null
+++ b/src/versions/solarfm-0.0.1/SolarFM/solarfm/core/ui/dialogs/message_widget.py
@@ -0,0 +1,33 @@
+# Python imports
+
+# Lib imports
+import inspect
+import gi
+gi.require_version('Gtk', '3.0')
+from gi.repository import Gtk
+
+# Application imports
+
+
+
+
+class MessageWidget(Gtk.MessageDialog):
+ """docstring for MessageWidget."""
+
+ def __init__(self):
+ super(MessageWidget, self).__init__()
+
+ self._setup_styling()
+ self._setup_signals()
+ self._load_widgets()
+
+
+ def _setup_styling(self):
+ ...
+
+ def _setup_signals(self):
+ ...
+
+
+ def _load_widgets(self):
+ ...
diff --git a/src/versions/solarfm-0.0.1/SolarFM/solarfm/widgets/new_file_widget.py b/src/versions/solarfm-0.0.1/SolarFM/solarfm/core/ui/dialogs/new_file_widget.py
similarity index 100%
rename from src/versions/solarfm-0.0.1/SolarFM/solarfm/widgets/new_file_widget.py
rename to src/versions/solarfm-0.0.1/SolarFM/solarfm/core/ui/dialogs/new_file_widget.py
diff --git a/src/versions/solarfm-0.0.1/SolarFM/solarfm/widgets/rename_widget.py b/src/versions/solarfm-0.0.1/SolarFM/solarfm/core/ui/dialogs/rename_widget.py
similarity index 100%
rename from src/versions/solarfm-0.0.1/SolarFM/solarfm/widgets/rename_widget.py
rename to src/versions/solarfm-0.0.1/SolarFM/solarfm/core/ui/dialogs/rename_widget.py
diff --git a/src/versions/solarfm-0.0.1/SolarFM/solarfm/core/ui/dialogs/save_load_widget.py b/src/versions/solarfm-0.0.1/SolarFM/solarfm/core/ui/dialogs/save_load_widget.py
new file mode 100644
index 0000000..8e86809
--- /dev/null
+++ b/src/versions/solarfm-0.0.1/SolarFM/solarfm/core/ui/dialogs/save_load_widget.py
@@ -0,0 +1,83 @@
+# Python imports
+import inspect
+import gc
+
+# Lib imports
+import gi
+gi.require_version('Gtk', '3.0')
+from gi.repository import Gtk
+
+# Application imports
+
+
+
+
+class SaveLoadWidget:
+ """docstring for SaveLoadWidget."""
+
+ def __init__(self):
+ super(SaveLoadWidget, self).__init__()
+ _GLADE_FILE = f"{settings.get_ui_widgets_path()}/save_load_ui.glade"
+ builder = settings.get_builder()
+ self._builder = Gtk.Builder()
+
+ self._builder.add_from_file(_GLADE_FILE)
+ self.save_load_dialog = self._builder.get_object("save_load_dialog")
+
+ builder.expose_object(f"save_load_dialog", self.save_load_dialog)
+
+ self._setup_styling()
+ self._setup_signals()
+ self._load_widgets()
+
+
+ def _setup_styling(self):
+ ...
+
+ def _setup_signals(self):
+ event_system.subscribe("save_load_session", self.save_load_session)
+
+ def _load_widgets(self):
+ ...
+
+
+ def save_load_session(self, action="save_session"):
+ state = event_system.emit_and_await("get_current_state")
+
+ if action == "save_session":
+ if not settings.is_trace_debug():
+ state.fm_controller.save_state()
+
+ return
+ elif action == "save_session_as":
+ self.save_load_dialog.set_action(Gtk.FileChooserAction.SAVE)
+ elif action == "load_session":
+ self.save_load_dialog.set_action(Gtk.FileChooserAction.OPEN)
+ else:
+ raise Exception(f"Unknown action given: {action}")
+
+ self.save_load_dialog.set_current_folder(state.tab.get_current_directory())
+ self.save_load_dialog.set_current_name("session.json")
+ response = self.save_load_dialog.run()
+ if response == Gtk.ResponseType.OK:
+ if action == "save_session_as":
+ path = f"{self.save_load_dialog.get_current_folder()}/{self.save_load_dialog.get_current_name()}"
+ state.fm_controller.save_state(path)
+ elif action == "load_session":
+ path = f"{self.save_load_dialog.get_file().get_path()}"
+ session_json = state.fm_controller.get_state_from_file(path)
+ self.load_session(session_json)
+ if (response == Gtk.ResponseType.CANCEL) or (response == Gtk.ResponseType.DELETE_EVENT):
+ ...
+
+ self.save_load_dialog.hide()
+
+ def load_session(self, session_json):
+ if settings.is_debug():
+ logger.debug(f"Session Data: {session_json}")
+
+ state = event_system.emit_and_await("get_current_state")
+ event_system.emit("clear_notebooks")
+ state.fm_controller.unload_tabs_and_windows()
+ event_system.emit("generate_windows", (session_json,))
+ gc.collect()
diff --git a/src/versions/solarfm-0.0.1/SolarFM/solarfm/widgets/icon_grid_widget.py b/src/versions/solarfm-0.0.1/SolarFM/solarfm/core/ui/icon_grid_widget.py
similarity index 100%
rename from src/versions/solarfm-0.0.1/SolarFM/solarfm/widgets/icon_grid_widget.py
rename to src/versions/solarfm-0.0.1/SolarFM/solarfm/core/ui/icon_grid_widget.py
diff --git a/src/versions/solarfm-0.0.1/SolarFM/solarfm/widgets/icon_tree_widget.py b/src/versions/solarfm-0.0.1/SolarFM/solarfm/core/ui/icon_tree_widget.py
similarity index 100%
rename from src/versions/solarfm-0.0.1/SolarFM/solarfm/widgets/icon_tree_widget.py
rename to src/versions/solarfm-0.0.1/SolarFM/solarfm/core/ui/icon_tree_widget.py
diff --git a/src/versions/solarfm-0.0.1/SolarFM/solarfm/widgets/io_widget.py b/src/versions/solarfm-0.0.1/SolarFM/solarfm/core/ui/io_widget.py
similarity index 100%
rename from src/versions/solarfm-0.0.1/SolarFM/solarfm/widgets/io_widget.py
rename to src/versions/solarfm-0.0.1/SolarFM/solarfm/core/ui/io_widget.py
diff --git a/src/versions/solarfm-0.0.1/SolarFM/solarfm/widgets/popups/__init__.py b/src/versions/solarfm-0.0.1/SolarFM/solarfm/core/ui/popups/__init__.py
similarity index 100%
rename from src/versions/solarfm-0.0.1/SolarFM/solarfm/widgets/popups/__init__.py
rename to src/versions/solarfm-0.0.1/SolarFM/solarfm/core/ui/popups/__init__.py
diff --git a/src/versions/solarfm-0.0.1/SolarFM/solarfm/widgets/popups/io_popup_widget.py b/src/versions/solarfm-0.0.1/SolarFM/solarfm/core/ui/popups/io_popup_widget.py
similarity index 100%
rename from src/versions/solarfm-0.0.1/SolarFM/solarfm/widgets/popups/io_popup_widget.py
rename to src/versions/solarfm-0.0.1/SolarFM/solarfm/core/ui/popups/io_popup_widget.py
diff --git a/src/versions/solarfm-0.0.1/SolarFM/solarfm/widgets/popups/message_popup_widget.py b/src/versions/solarfm-0.0.1/SolarFM/solarfm/core/ui/popups/message_popup_widget.py
similarity index 100%
rename from src/versions/solarfm-0.0.1/SolarFM/solarfm/widgets/popups/message_popup_widget.py
rename to src/versions/solarfm-0.0.1/SolarFM/solarfm/core/ui/popups/message_popup_widget.py
diff --git a/src/versions/solarfm-0.0.1/SolarFM/solarfm/widgets/popups/path_menu_popup_widget.py b/src/versions/solarfm-0.0.1/SolarFM/solarfm/core/ui/popups/path_menu_popup_widget.py
similarity index 97%
rename from src/versions/solarfm-0.0.1/SolarFM/solarfm/widgets/popups/path_menu_popup_widget.py
rename to src/versions/solarfm-0.0.1/SolarFM/solarfm/core/ui/popups/path_menu_popup_widget.py
index 02a051e..479d0e3 100644
--- a/src/versions/solarfm-0.0.1/SolarFM/solarfm/widgets/popups/path_menu_popup_widget.py
+++ b/src/versions/solarfm-0.0.1/SolarFM/solarfm/core/ui/popups/path_menu_popup_widget.py
@@ -22,7 +22,6 @@ class PathMenuPopupWidget(Gtk.Popover):
self._setup_styling()
self._setup_signals()
self._load_widgets()
- self.show_all()
def _setup_styling(self):
@@ -48,6 +47,7 @@ class PathMenuPopupWidget(Gtk.Popover):
self.builder.expose_object(f"path_menu_buttons", path_menu_buttons)
view_port.add(path_menu_buttons)
scroll_window.add(view_port)
+ scroll_window.show_all()
self.add(scroll_window)
def show_path_menu(self, widget=None, eve=None):
diff --git a/src/versions/solarfm-0.0.1/SolarFM/solarfm/widgets/popups/plugins_popup_widget.py b/src/versions/solarfm-0.0.1/SolarFM/solarfm/core/ui/popups/plugins_popup_widget.py
similarity index 100%
rename from src/versions/solarfm-0.0.1/SolarFM/solarfm/widgets/popups/plugins_popup_widget.py
rename to src/versions/solarfm-0.0.1/SolarFM/solarfm/core/ui/popups/plugins_popup_widget.py
diff --git a/src/versions/solarfm-0.0.1/SolarFM/solarfm/widgets/tab_header_widget.py b/src/versions/solarfm-0.0.1/SolarFM/solarfm/core/ui/tab_header_widget.py
similarity index 100%
rename from src/versions/solarfm-0.0.1/SolarFM/solarfm/widgets/tab_header_widget.py
rename to src/versions/solarfm-0.0.1/SolarFM/solarfm/core/ui/tab_header_widget.py
diff --git a/src/versions/solarfm-0.0.1/SolarFM/solarfm/core/ui.py b/src/versions/solarfm-0.0.1/SolarFM/solarfm/core/ui_mixin.py
similarity index 80%
rename from src/versions/solarfm-0.0.1/SolarFM/solarfm/core/ui.py
rename to src/versions/solarfm-0.0.1/SolarFM/solarfm/core/ui_mixin.py
index 7edc0a0..77b03b7 100644
--- a/src/versions/solarfm-0.0.1/SolarFM/solarfm/core/ui.py
+++ b/src/versions/solarfm-0.0.1/SolarFM/solarfm/core/ui_mixin.py
@@ -9,5 +9,5 @@ from .mixins.ui.window_mixin import WindowMixin
-class UI(PaneMixin, WindowMixin):
+class UIMixin(PaneMixin, WindowMixin):
...
diff --git a/user_config/usr/share/solarfm/Main_Window.glade b/user_config/usr/share/solarfm/Main_Window.glade
index cb7cc31..8e96c7b 100644
--- a/user_config/usr/share/solarfm/Main_Window.glade
+++ b/user_config/usr/share/solarfm/Main_Window.glade
@@ -32,66 +32,6 @@
False
gtk-stop
-
True
False
@@ -901,79 +841,4 @@
-
- False
- False
- True
- center
- True
- dialog
- True
- True
- True
- False
- False
- center
- warning
- Warning!
-
-
- False
- 5
- 5
- 5
- 5
- vertical
- 2
-
-
- False
- True
- end
-
-
- gtk-no
- True
- True
- True
- True
-
-
- True
- True
- 0
-
-
-
-
- gtk-yes
- True
- True
- True
- True
- True
-
-
- True
- True
- 1
-
-
-
-
- False
- False
- 0
-
-
-
-
-
- button4
- button3
-
-
-
diff --git a/user_config/usr/share/solarfm/ui_widgets/save_load_ui.glade b/user_config/usr/share/solarfm/ui_widgets/save_load_ui.glade
new file mode 100644
index 0000000..ba42cba
--- /dev/null
+++ b/user_config/usr/share/solarfm/ui_widgets/save_load_ui.glade
@@ -0,0 +1,65 @@
+
+
+
+
+
+ False
+ dialog
+ True
+
+
+ False
+ vertical
+ 2
+
+
+ False
+ end
+
+
+ gtk-cancel
+ True
+ True
+ True
+ True
+ True
+
+
+ True
+ True
+ 0
+
+
+
+
+ gtk-ok
+ True
+ True
+ True
+ True
+ True
+
+
+ True
+ True
+ 1
+
+
+
+
+ False
+ False
+ 0
+
+
+
+
+
+
+
+
+ button11
+ button12
+
+
+