Changeset 511
- Timestamp:
- 12/01/06 22:07:53 (2 years ago)
- Files:
-
- trunk/configure.ac (modified) (1 diff)
- trunk/etc/mesk-0.3.0.ebuild (added)
- trunk/scripts/mesk-remote.in (deleted)
- trunk/src/dbus_service.py (modified) (2 diffs)
- trunk/src/main.py (modified) (9 diffs)
- trunk/src/main_window.py (modified) (6 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/configure.ac
r490 r511 18 18 AC_PREREQ([2.57]) 19 19 20 AC_INIT([Mesk], [0. 2.99], [Travis Shirk <travis@pobox.com>], [mesk])20 AC_INIT([Mesk], [0.3.0], [Travis Shirk <travis@pobox.com>], [mesk]) 21 21 PACKAGE_CODENAME="The Sword" 22 22 AC_SUBST([PACKAGE_CODENAME]) trunk/src/dbus_service.py
r509 r511 20 20 import gobject 21 21 import dbus, dbus.service, dbus.glib 22 import mesk 22 23 23 24 OBJ_PATH = '/net/nicfit/mesk/MeskApp' … … 28 29 '''A dbus service object for Mesk''' 29 30 30 def __init__(self, bus_name, obj_path=OBJ_PATH): 31 dbus.service.Object.__init__(self, bus_name, obj_path) 31 def __init__(self, bus_name, profile, audio_ctrl): 32 dbus.service.Object.__init__(self, bus_name, OBJ_PATH) 33 self._profile = profile 34 self._audio_control = audio_ctrl 32 35 33 36 @dbus.service.method(INTERFACE) 34 def hello_world(self):35 return "hello world"37 def stop(self): 38 self._audio_control.stop() 36 39 40 @dbus.service.method(INTERFACE) 41 def play(self): 42 self._audio_control.play() 43 44 @dbus.service.method(INTERFACE) 45 def pause(self): 46 self._audio_control.pause() 47 48 @dbus.service.method(INTERFACE) 49 def pause(self): 50 self._audio_control.pause() 51 52 @dbus.service.method(INTERFACE) 53 def prev(self): 54 self._audio_control.prev() 55 56 @dbus.service.method(INTERFACE) 57 def next(self): 58 self._audio_control.next() 59 trunk/src/main.py
r509 r511 27 27 '''Constructor''' 28 28 29 # XXXWorkaround gst intercepting --help by ensuring gst is not imported29 # Workaround gst intercepting --help by ensuring gst is not imported 30 30 # at this point. 31 31 def handle_gst_option(): … … 49 49 handle_gst_option() # This will not return 50 50 51 gtk.window_set_auto_startup_notification(False) 52 53 # Parse command line 51 54 self.cmd_line = OptionParser() 52 55 (self.opts, self.args) = self.cmd_line.parse_args() 53 gtk.window_set_auto_startup_notification(False) 56 # The profile is used for the GUI and to select a dbus service instance 57 self.profile = self.opts.profile 58 self.remote_control = None 54 59 55 60 def run(self): 61 import mesk 62 63 remote_status = 0 64 # Handle remote control options 65 for arg in sys.argv[1:]: 66 if arg in self.cmd_line.remote_control_opts: 67 try: 68 remote_status |= self._remote_control(arg) 69 except Exception, ex: 70 mesk.log.error('Dbus error: %s' % str(ex)) 71 return 5 72 73 if self.remote_control: 74 return remote_status 75 76 # Init GUI 56 77 self._init() 57 78 58 79 # Main window 59 80 from main_window import MainWindow 60 self.main_window = MainWindow( )81 self.main_window = MainWindow(self.profile) 61 82 self.main_window.show() 62 83 gtk.gdk.notify_startup_complete() … … 75 96 # Shutdown 76 97 mesk.config.save(self.config_file) 77 mesk.plugin.shutdown()78 98 return 0 79 99 80 100 def _init(self): 81 import mesk82 101 # Load configuration 83 profile = self.opts.profile 84 if self.opts.profile: 102 if self.profile: 85 103 self.config_file = '%s/config.%s' % (mesk.MESK_DIR, 86 104 self.opts.profile) … … 102 120 sys.exit(1) 103 121 mesk.log.set_logging_level(lvl) 122 104 123 if self.opts.profile: 105 124 mesk.log.verbose('Using profile: %s' % self.opts.profile) … … 114 133 mesk.config.set(mesk.CONFIG_MAIN, 'version', mesk.info.APP_VERSION) 115 134 116 # Initialize i18n135 # Initialize glade i18n 117 136 import gtk.glade 118 137 gtk.glade.bindtextdomain('mesk', mesk.i18n.DIR) … … 136 155 else: 137 156 mesk.log.debug('Enabling Gnome session management') 138 gnome.program_init( mesk.info.APP_NAME.lower(),157 gnome.program_init("foo",# mesk.info.APP_NAME.lower(), 139 158 mesk.info.APP_VERSION) 140 159 cli = gnome.ui.master_client() … … 149 168 cli.set_restart_command(len(argv), argv) 150 169 151 # Initialize Dbus, if possible152 try:153 import dbus, dbus.service154 except ImportError:155 self.DBUS_SUPPORT = False156 self.mesk_dbus = None157 mesk.log.warning("Not able to load DBus, support is disabled")158 else:159 import dbus_service160 self.DBUS_SUPPORT = True161 session_bus = dbus.SessionBus()162 name = dbus.service.BusName(dbus_service.SERVICE, bus=session_bus)163 self.mesk_dbus = dbus_service.MeskDbusService(name)164 mesk.log.verbose("DBus support activated")165 166 # Initialize plugin manager167 import mesk.plugin168 plugin_dir = mesk.config.get(mesk.CONFIG_MAIN, 'plugins_dir')169 plugin_mgr = mesk.plugin.PluginMgr(plugin_dir)170 mesk.plugin.set_manager(plugin_mgr)171 172 170 def _migrate_config(self, old_version, my_version): 173 171 import mesk.log, mesk.playlist … … 203 201 mesk.config.remove_section(sect) 204 202 mesk.config.set(mesk.CONFIG_MAIN, 'playlists', 'Playlist') 203 204 def _remote_control(self, cmd): 205 if self.remote_control is None: 206 import dbus 207 import dbus_service # This is a local module 208 session_bus = dbus.SessionBus() 209 self.remote_control = \ 210 dbus.Interface(session_bus.get_object(dbus_service.SERVICE, 211 dbus_service.OBJ_PATH), 212 dbus_service.INTERFACE) 213 214 if cmd in ['--stop']: 215 self.remote_control.stop() 216 elif cmd in ['--play']: 217 self.remote_control.play() 218 elif cmd in ['--pause']: 219 self.remote_control.pause() 220 elif cmd in ['--prev']: 221 self.remote_control.prev() 222 elif cmd in ['--next']: 223 self.remote_control.next() 224 else: 225 assert(False) # This should not happen 226 return -1 227 228 return 0 205 229 206 230 import optparse … … 219 243 help=_('Start with profile NAME.'), 220 244 metavar='NAME', default='') 221 self.add_option('-l', '--log-level', dest='log_level', 222 help=_('Select the amount of terminal logging. May be ' 223 'CRITICAL, ERROR, WARNING, INFO, VERBOSE, or ' 224 'DEBUG'), 225 metavar='LEVEL', default='') 245 246 # Remote control options 247 rc_opts = optparse.OptionGroup(self, _('Remote Control Options')) 248 rc_opts.set_description(_('These options operate on a running Mesk ' 249 'instance. Which instance is determined ' 250 'by the profile option (-p,--profile).')) 251 rc_opts.add_option('--stop', action='store_true', dest='stop', 252 help=_('Stops playback')) 253 rc_opts.add_option('--play', action='store_true', dest='play', 254 default=False, help=_('Starts playback')) 255 rc_opts.add_option('--pause', action='store_true', dest='pause', 256 default=False, help=_('Pauses playback')) 257 rc_opts.add_option('--prev', action='store_true', dest='prev', 258 default=False, help=_('Previous track')) 259 rc_opts.add_option('--next', action='store_true', dest='next', 260 default=False, help=_('Next track')) 261 self.add_option_group(rc_opts) 262 263 # Build complete list of remote control options 264 self.remote_control_opts = [] 265 for opt in rc_opts.option_list: 266 for o in opt._short_opts: 267 self.remote_control_opts.append(o) 268 for o in opt._long_opts: 269 self.remote_control_opts.append(o) 226 270 227 271 # Developer options 228 debug_opts = optparse.OptionGroup(self, _('Advanced Options')); 272 debug_opts = optparse.OptionGroup(self, _('Advanced Options')) 273 debug_opts.add_option('-l', '--log-level', dest='log_level', 274 help=_('Select the amount of terminal logging. ' 275 'May be CRITICAL, ERROR, WARNING, INFO, ' 276 'VERBOSE, or DEBUG'), 277 metavar='LEVEL', default='') 229 278 debug_opts.add_option('--debug', action='store_true', 230 279 dest='debug', default=False, trunk/src/main_window.py
r507 r511 23 23 24 24 import mesk 25 import mesk.plugin 25 26 import mesk.gtk_utils 26 27 import mesk.window … … 42 43 DND_TARGETS = [('MESK_TAB', 0, 81)] 43 44 44 def __init__(self): 45 def __init__(self, profile): 46 self.profile = profile 45 47 self._is_compact = False 46 48 self._controls = [] … … 116 118 117 119 self.tips_window = None 120 121 # Initialize Dbus, if possible 122 try: 123 import dbus, dbus.service 124 except ImportError: 125 self.DBUS_SUPPORT = False 126 self.mesk_dbus = None 127 mesk.log.warning("Not able to load DBus, support is disabled") 128 else: 129 import dbus_service 130 self.DBUS_SUPPORT = True 131 session_bus = dbus.SessionBus() 132 name = dbus.service.BusName(dbus_service.SERVICE, bus=session_bus) 133 self.mesk_dbus = dbus_service.MeskDbusService(name, self.profile, 134 self._audio_control) 135 mesk.log.verbose("DBus support activated") 136 137 # Initialize plugin manager 138 plugin_dir = mesk.config.get(mesk.CONFIG_MAIN, 'plugins_dir') 139 plugin_mgr = mesk.plugin.PluginMgr(plugin_dir) 140 mesk.plugin.set_manager(plugin_mgr) 118 141 119 142 def add_playlist_control(self, name, set_active=False): … … 301 324 self._pref_window.window.destroy() 302 325 326 # Shutdown plugins 327 mesk.plugin.shutdown() 328 303 329 # Shutdown all controls 304 330 playlists = [] … … 341 367 x = mesk.config.getint(mesk.CONFIG_UI, 'main_window_pos_x') 342 368 y = mesk.config.getint(mesk.CONFIG_UI, 'main_window_pos_y') 343 mesk.log.debug('_restore_window_attrs pos (%d,%d)' % (x, y)) 369 mesk.log.debug('_restore_window_attrs pos (%d,%d)' % (x, y)) 344 370 self.window.move(x, y) 345 371 346 372 width = mesk.config.getint(mesk.CONFIG_UI, 'main_window_width') 347 373 height = mesk.config.getint(mesk.CONFIG_UI, 'main_window_height') 348 mesk.log.debug('_restore_window_attrs size %dx%d' % (width, height)) 374 mesk.log.debug('_restore_window_attrs size %dx%d' % (width, height)) 349 375 self.window.resize(width, height) 350 376 … … 352 378 '''Overridden from mesk.window.Window''' 353 379 if mesk.config.getboolean(mesk.CONFIG_UI, 'window_hide_on_close'): 380 self._save_window_attrs() 354 381 self.window.hide() 355 382 return True
