home *** CD-ROM | disk | FTP | other *** search
- # Source Generated with Decompyle++
- # File: in.pyc (Python 2.4)
-
- import nautilusburn
- import os
- import gconf
- import gtk
- from gtk import glade
- from os import path
- from types import StringType
- from gettext import gettext as _
- import gaw
- import xspf
- import gtkutil
- import release
- import urlutil
- from converting import GvfsMusicPool
- from common import SafeFileWrite
- GCONF_DIR = '/apps/serpentine'
- RAT_GCONF_DIR = '/apps/rat'
- NCB_GCONF_DIR = '/apps/nautilus-cd-burner'
- for gconf_dir in (GCONF_DIR, RAT_GCONF_DIR, NCB_GCONF_DIR):
- gconf.client_get_default().add_dir(gconf_dir, gconf.CLIENT_PRELOAD_NONE)
-
-
- def recordingPreferencesWindow(preferences):
- prefs_widget = gtkutil.find_child_widget(preferences.dialog, 'preferences')
- prefs_widget.show()
- if not prefs_widget is not None:
- raise AssertionError
- parent = prefs_widget.get_parent()
- parent.remove(prefs_widget)
- win = gtk.Window(gtk.WINDOW_TOPLEVEL)
- win.set_border_width(12)
- win.set_title(_('Serpentine Preferences'))
- vbox = gtk.VBox()
- vbox.set_spacing(18)
- vbox.show()
- win.add(vbox)
- vbox.pack_start(prefs_widget)
- bbox = gtk.HButtonBox()
- bbox.set_layout(gtk.BUTTONBOX_END)
- bbox.show()
- vbox.add(bbox)
- close_btn = gtk.Button(stock = 'gtk-close')
- close_btn.show()
- close_btn.connect('clicked', gtk.main_quit)
- bbox.add(close_btn)
- return win
-
-
- class HideCloseButton:
- """
- Monitors the 'rat' key for showing/hiding the close button.
- """
-
- def __init__(self, close_button):
- self.button = close_button
- self.use_button = gaw.GConfValue(key = RAT_GCONF_DIR + '/use_close_button', data_spec = gaw.Spec.BOOL, default = True)
- self.use_button.set_callback(self.on_update)
- self.on_update()
-
-
- def on_update(self, *args):
- if not self.use_button.data:
- self.button.hide()
- else:
- self.button.show()
-
-
-
- class WriteSpeed:
- '''
- Handles and monitors writing speed related widgets state.
- '''
-
- def __init__(self, g, get_drive):
- self.get_drive = get_drive
- self._WriteSpeed__speed = gaw.data_spin_button(g.get_widget('speed'), GCONF_DIR + '/write_speed')
- self._WriteSpeed__specify_speed = g.get_widget('specify_speed_wrapper')
- specify_speed = g.get_widget('specify_speed')
- self._WriteSpeed__speed_select = gaw.RadioButtonData(widgets = dict(specify_speed = specify_speed, use_max_speed = g.get_widget('use_max_speed')), key = GCONF_DIR + '/speed_select')
- self._WriteSpeed__speed_select.seleted_by_default = 'use_max_speed'
- specify_speed.connect('toggled', self._WriteSpeed__on_specify_speed)
- g.get_widget('refresh_speed').connect('clicked', self._WriteSpeed__on_refresh_speed)
- self._WriteSpeed__on_specify_speed(specify_speed)
- if self._WriteSpeed__speed.data == 0:
- self._WriteSpeed__speed.data = 99
-
- self._WriteSpeed__update_speed()
- self._WriteSpeed__speed.sync_widget()
- self._WriteSpeed__speed.widget.set_sensitive(specify_speed.get_active())
-
-
- def get(self):
- if not self.get_drive() is not None:
- raise AssertionError
- self._WriteSpeed__update_speed()
- if self._WriteSpeed__speed_select.data == 'use_max_speed':
- return self.get_drive().get_max_speed_write()
-
- return self._WriteSpeed__speed.data
-
-
- def __on_refresh_speed(self, *args):
- self._WriteSpeed__update_speed()
-
-
- def __update_speed(self):
- drive = self.get_drive()
- if drive is None:
- self._WriteSpeed__speed.widget.set_sensitive(False)
- return None
-
- speed = drive.get_max_speed_write()
- if not speed >= 0:
- raise AssertionError, speed
- val = self._WriteSpeed__speed.data
- self._WriteSpeed__speed.widget.set_range(1, speed)
- self._WriteSpeed__speed.data = val
-
-
- def __on_specify_speed(self, widget, *args):
- self._WriteSpeed__specify_speed.set_sensitive(widget.get_active())
-
-
-
- class RecordingPreferences(object):
- debug = False
- overburn = False
- simulate = False
-
- def __init__(self, locations):
- self._RecordingPreferences__write_flags = nautilusburn.RECORDER_WRITE_BURNPROOF
- self.version = release.version
- filename = locations.get_data_file('serpentine.glade')
- g = glade.XML(filename, 'preferences_dialog')
- self._RecordingPreferences__dialog = g.get_widget('preferences_dialog')
- self.dialog.connect('destroy-event', self._RecordingPreferences__on_destroy)
- self.dialog.set_title('')
- drv = g.get_widget('drive')
- cmb_drv = nautilusburn.DriveSelection()
- cmb_drv.set_property('show-recorders-only', True)
- cmb_drv.show()
- self._RecordingPreferences__drive_selection = cmb_drv
- drv.pack_start(cmb_drv, False, False)
- self._RecordingPreferences__speed = WriteSpeed(g, self._RecordingPreferences__drive_selection.get_drive)
- self._RecordingPreferences__eject = gaw.data_toggle_button(g.get_widget('eject'), GCONF_DIR + '/eject')
- self._RecordingPreferences__use_gap = gaw.data_toggle_button(g.get_widget('use_gap'), GCONF_DIR + '/use_gap', default = True)
- ncb_temp_dir = NCB_GCONF_DIR + '/temp_iso_dir'
- gconf.client_get_default().add_dir(ncb_temp_dir, gconf.CLIENT_PRELOAD_NONE)
- self._RecordingPreferences__tmp = gaw.GConfValue(key = ncb_temp_dir, data_spec = gaw.Spec.STRING, default = 'file:///tmp')
- self._RecordingPreferences__debug = gaw.GConfValue(key = GCONF_DIR + '/debug_mode', data_spec = gaw.Spec.BOOL, default = False)
- self._RecordingPreferences__pool = GvfsMusicPool()
- self._RecordingPreferences__close_button_handler = HideCloseButton(g.get_widget('close_btn'))
-
- __config_dir = path.join(path.expanduser('~'), '.serpentine')
-
- def getConfigDir(self):
- return self._RecordingPreferences__config_dir
-
- configDir = property((lambda self: self._RecordingPreferences__config_dir))
-
- def getDialog(self):
- return self._RecordingPreferences__dialog
-
- dialog = property(getDialog)
-
- def setVersion(self, version):
- if not isinstance(version, StringType):
- raise AssertionError
- self._RecordingPreferences__version = version
-
-
- def getVersion(self):
- return self._RecordingPreferences__version
-
- version = property(getVersion, setVersion)
-
- def getDrive(self):
- return self._RecordingPreferences__drive_selection.get_drive()
-
- drive = property(getDrive)
-
- def getUseGnomeVfs(self):
- return self._RecordingPreferences__pool.use_gnomevfs
-
-
- def setUseGnomeVfs(self, use_gnomevfs):
- self._RecordingPreferences__pool.use_gnomevfs = use_gnomevfs
-
- useGnomeVfs = property(getUseGnomeVfs, setUseGnomeVfs)
-
- def getTemporaryDir(self):
- tmp = self._RecordingPreferences__tmp.data
- url = urlutil.UrlParse(tmp)
- if url.is_local:
- return url.path
-
-
- temporaryDir = property(getTemporaryDir)
-
- def getUseGap(self):
- return self._RecordingPreferences__use_gap.data
-
- useGap = property(getUseGap)
-
- def getPool(self):
- return self._RecordingPreferences__pool
-
- pool = property(getPool)
-
- def getSpeedWrite(self):
- return self._RecordingPreferences__speed.get()
-
- speedWrite = property(getSpeedWrite)
-
- def getWriteFlags(self):
- ret = self._RecordingPreferences__write_flags
- if not self._RecordingPreferences__use_gap.data:
- ret |= nautilusburn.RECORDER_WRITE_DISC_AT_ONCE
-
- if self._RecordingPreferences__eject.data:
- ret |= nautilusburn.RECORDER_WRITE_EJECT
-
- if self.debug:
- ret |= nautilusburn.RECORDER_WRITE_DEBUG
-
- if self.overburn:
- ret |= nautilusburn.RECORDER_WRITE_OVERBURN
-
- if self.simulate:
- ret |= nautilusburn.RECORDER_WRITE_DUMMY_WRITE
-
- return ret
-
- writeFlags = property(getWriteFlags)
-
- def getTemporaryDirIsOk(self):
- tmp = self.temporaryDir
-
- try:
- if path.isdir(tmp):
- pass
- is_ok = os.access(tmp, os.W_OK)
- except OSError:
- err = None
- print err
- is_ok = False
-
- return is_ok
-
- temporaryDirIsOk = property(getTemporaryDirIsOk, doc = 'Tests if temporary directory exists and has write permissions.')
-
- def __on_destroy(self, *args):
- self.dialog.hide()
- return False
-
-
- def savePlaylist(self, source):
- if not path.exists(self.configDir):
- os.makedirs(self.configDir)
-
- p = xspf.Playlist(title = _("Serpentine's playlist"), creator = 'Serpentine ' + self.version)
- source.to_playlist(p)
- doc = p.toxml()
- out = SafeFileWrite(path.join(self.configDir, 'playlist.xml'))
-
- try:
- doc.writexml(out, addindent = '\t', newl = '\n')
- del p
- out.close()
- except:
- out.abort()
- return False
-
- return True
-
-
- def loadPlaylist(self, source):
- if not path.exists(self.configDir):
- os.makedirs(self.configDir)
-
- p = xspf.Playlist(title = _("Serpentine's playlist"), creator = 'Serpentine ' + self.version)
-
- try:
- p.parse(path.join(self.configDir, 'playlist.xml'))
- except IOError:
- return None
-
- source.from_playlist(p)
-
-
-