# -*- mode: python; coding: utf-8 -*- import gtk import util import logging import menu class Skin(util.Observable): """ Base Interface for all skins """ NONE, HORIZONTAL, VERTICAL, BOTH = range(4) MANUAL, AUTO, MINI = range(3) gui = None state = None # module = "" name = '' can_render_names = [] can_render_ifaces = [] flags = AUTO #FIXME: Esta clase no se debería poder instanciar, es abstracta def __init__(self, inspector, expand=BOTH): util.Observable.__init__(self) self.inspector = inspector self.expand = expand if hasattr(self.inspector, 'logger'): self.logger = self.inspector.logger def __str__(self): return self.__class__.__name__ def delete(self): pass def __del__(self): if self.inspector: self.delete() def refresh(self, interval=None): raise NotImplementedError, "Not implemented method" def get_content(self): #FIXME: el propio skin debería ser un widget assert self.gui return self.gui # This should return a tuple, (parent, selected) def get_affected(self): raise NotImplementedError, "Not implemented method" def current(self): return self.get_affected()[0] def selected(self): return self.get_affected()[1] def do_click_at(self, x, y): pass def get_property(self, key): return None def set_property(self, key, value): return False def on_button_press_event(self, widget, event): if event.button == 3: retval = self.do_click_at(event.x, event.y) self.inspector.ui_update_actions(self.current(), self.selected()) try: popup = self.inspector.actionmgr.uimgr.get_widget('/Popup_%s' % self.inspector.actionmgr.ui_name) popup.popup(None, None, None, event.button, event.time) return retval except NotImplementedError: self.logger.warning("This plugin has not item actions") return False # Action manager related things def do_define_actions(self, actionmgr): ''' Common actions for all skins''' self.define_actions(actionmgr) def define_actions(self, actionmgr): "must be redefined in each inspector subclass" pass