GWinWrap/src/versions/0.0.2/GWinWrap/signal_classes/Controller_Data.py

103 lines
4.1 KiB
Python

# Python imports
import signal
from os import listdir
from os.path import isfile, join
# Lib imports
from gi.repository import GLib
# Application imports
from . import SaveStateToXWinWarp, SaveGWinWrapSettings
class Controller_Data:
def has_method(self, obj, name):
return callable(getattr(obj, name, None))
def setup_controller_data(self, _settings):
self.settings = _settings
self.state_saver = SaveStateToXWinWarp(_settings)
self.settings_saver = SaveGWinWrapSettings(_settings)
self.builder = self.settings.get_builder()
self.window = self.settings.get_main_window()
self.logger = self.settings.get_logger()
self.home_path = self.settings.get_home_path()
self.success_color = self.settings.get_success_color()
self.warning_color = self.settings.get_warning_color()
self.error_color = self.settings.get_error_color()
self.image_grid = self.builder.get_object("imageGrid")
self.grid_label = self.builder.get_object("gridLabel")
self.help_label = self.builder.get_object("helpLabel")
self.xscreen_store = self.builder.get_object("XScreensaverStore")
self.defaultLabel = "<span>Note: Double click an image to view the video or image.</span>"
self.savedLabel = f"<span foreground='{self.success_color}'>Saved settings...</span>"
self.appliedLabel = f"<span foreground='{self.success_color}'>Running xwinwrap...</span>"
self.stoppedLabel = f"<span foreground='{self.success_color}'>Stopped xwinwrap...</span>"
# Add filter to allow only folders to be selected
dialog = self.builder.get_object("selectedDirDialog")
file_filter = self.builder.get_object("Folders")
dialog.add_filter(file_filter)
self.xscreensavers = self.settings.get_xscreensavers()
list = [f for f in listdir(self.xscreensavers) if isfile(join(self.xscreensavers , f))]
list.sort()
for file in list:
self.xscreen_store.append((file,))
self.selected_eve_box = None
self.start_path = None
self.default_player = None
self.default_img_viewer = None
self.demo_area_pid = None
self.apply_type = 1 # 1 is XWinWrap and 2 is Nitrogen
self.xscreen_value = None
self.to_be_background = None # Global file path and type for saving to file
self.window.connect("delete-event", self.tear_down)
GLib.unix_signal_add(GLib.PRIORITY_DEFAULT, signal.SIGINT, self.tear_down)
self.set_monitor_offset_data()
self.retrieve_settings()
def set_monitor_offset_data(self):
monitors = self.settings.get_monitor_data()
monitorOffsetData = self.builder.get_object("monitorOffsetData")
for monitor in monitors:
if monitor.x >= 0 and monitor.y >= 0:
monitorOffsetData.append_text("+" + str(monitor.x) + "+" + str(monitor.y))
elif monitor.x <= 0 and monitor.y <= 0:
monitorOffsetData.append_text(str(monitor.x) + str(monitor.y))
elif monitor.x >= 0 and monitor.y <= 0:
monitorOffsetData.append_text("+" + str(monitor.x) + str(monitor.y))
elif monitor.x <= 0 and monitor.y >= 0:
monitorOffsetData.append_text(str(monitor.x) + "+" + str(monitor.y))
monitorOffsetData.set_active(0)
def retrieve_settings(self):
data = self.settings_saver.retrieve_settings()
self.start_path = data[0]
self.default_player = data[1]
self.default_img_viewer = data[2]
self.builder.get_object("customStartPath").set_text(self.start_path)
self.builder.get_object("customVideoPlayer").set_text(self.default_player)
self.builder.get_object("customImgViewer").set_text(self.default_img_viewer)
self.builder.get_object("selectedDirDialog").set_filename(self.start_path)
if self.start_path:
self.load_path(None, self.start_path)