Repository URL to install this package:
|
Version:
18.5.0-1 ▾
|
# (c) Copyright 2009-2015. CodeWeavers, Inc.
from __future__ import division
import gtk
import cxproduct
import cxobservable
import cxaiemedia
import cxguitools
from cxutils import _
# These are the observable events
DIALOG_CLOSED = 'dialog_closed'
#
# Dialog instance
#
class PreferenceDialogController(cxobservable.Object):
observable_events = frozenset((DIALOG_CLOSED,))
def __init__(self):
cxobservable.Object.__init__(self)
#-----------------------------------------------------------------------
# Setup the GUI
#-----------------------------------------------------------------------
self.xml = gtk.Builder()
self.xml.set_translation_domain("crossover")
self.xml.add_from_file(cxguitools.get_ui_path("cxprefs"))
self.xml.connect_signals(self)
# Set initial values
logUsage = False
autoUpdate = False
showUntested = False
applyCxfixes = True
global_config = cxproduct.get_config()
if global_config['CrossOver'].get('ReportWineUsage', '0') == '1':
logUsage = True
if global_config['OfficeSetup'].get('AutoUpdate', '0') == '1':
autoUpdate = True
if global_config['OfficeSetup'].get('ShowUntestedApps', '0') == '1':
showUntested = True
if global_config['OfficeSetup'].get('ApplyCxfixes', '1') != '1':
applyCxfixes = False
self.xml.get_object('usageCheckbox').set_active(logUsage)
self.xml.get_object('downloadCheckbox').set_active(autoUpdate)
self.xml.get_object('showUntestedCheckbox').set_active(showUntested)
self.xml.get_object('applyCxfixesCheckbox').set_active(applyCxfixes)
self.update_cache_label()
def update_cache_label(self):
size = cxaiemedia.size_cached_installers()
self.xml.get_object('ClearCacheButton').set_sensitive(size != 0)
if size == 0:
message = _("There are currently no downloaded installers saved locally.")
elif size < 1024 * 1024:
message = _("Downloaded installers are currently using %0.1f KB of disk space.") % (size / 1024)
elif size < 1024 * 1024 * 1024:
message = _("Downloaded installers are currently using %0.1f MB of disk space.") % (size / (1024 * 1024))
else:
message = _("Downloaded installers are currently using %0.1f GB of disk space.") % (size / (1024 * 1024 * 1024))
self.xml.get_object('InstallerCacheLabel').set_text(message)
def on_ClearCacheButton_clicked(self, _widget):
cxaiemedia.delete_cached_installers()
self.update_cache_label()
def downloadCheckbox_toggled_cb(self, caller):
# pylint: disable=R0201
if caller.get_active():
cxproduct.save_setting('OfficeSetup', 'AutoUpdate', '1')
else:
cxproduct.save_setting('OfficeSetup', 'AutoUpdate', '0')
def usageCheckbox_toggled_cb(self, caller):
# pylint: disable=R0201
if caller.get_active():
cxproduct.save_setting('CrossOver', 'ReportWineUsage', '1')
else:
cxproduct.save_setting('CrossOver', 'ReportWineUsage', '0')
def untestedCheckbox_toggled_cb(self, caller):
# pylint: disable=R0201
if caller.get_active():
cxproduct.save_setting('OfficeSetup', 'ShowUntestedApps', '1')
else:
cxproduct.save_setting('OfficeSetup', 'ShowUntestedApps', '0')
def on_applyCxfixesCheckbox_toggled(self, caller):
# pylint: disable=R0201
if caller.get_active():
cxproduct.save_setting('OfficeSetup', 'ApplyCxfixes', '1')
else:
cxproduct.save_setting('OfficeSetup', 'ApplyCxfixes', '0')
def quit_requested(self, *_args):
self.xml.get_object("PrefsDialog").destroy()
self.emit_event(DIALOG_CLOSED)
cxguitools.toplevel_quit()
def present(self):
self.xml.get_object("PrefsDialog").present()
#
# Global dialog management
#
DIALOG = None
def _dialog_closed(_dialog, _event, _data):
# pylint: disable=W0603
global DIALOG
DIALOG = None
def open_or_show():
# pylint: disable=W0603
global DIALOG
if DIALOG is None:
DIALOG = PreferenceDialogController()
DIALOG.add_observer(DIALOG_CLOSED, _dialog_closed)
else:
DIALOG.present()
return DIALOG