def register_widgets(): for gobj, editor, data_type in [ (ProxyEntry, EntryDataType, DataType), (ProxyDateEntry, None, DateOnlyDataType), (ProxyButton, ButtonDataType, DataType), (ProxyColorButton, ButtonDataType, DataType), (ProxyCheckButton, None, BoolOnlyDataType), (ProxyLabel, LabelDataType, DataType), (ProxyComboBox, ComboBoxDataType, DataType), (ProxyComboBoxEntry, ComboBoxEntryDataType, DataType), (ProxyComboEntry, ComboEntryDataType, DataType), (ProxySpinButton, SpinBtnDataType, DataType), (ProxyHScale, HScaleDataType, DataType), (ProxyVScale, VScaleDataType, DataType), (ProxyRadioButton, None, BoolOnlyDataType), (ProxyTextView, TextViewDataType, DataType) ]: # Property overrides, used in the editor type_name = gobject.type_name(gobj) data_name = type_name + '::data-type' if editor: prop_registry.override_simple(data_name, data_type, custom_editor=editor) else: prop_registry.override_simple(data_name, data_type) prop_registry.override_simple(type_name + '::model-attribute', ModelProperty) if issubclass(gobj, ProxyRadioButton): prop_registry.override_simple(type_name + '::data-value', DataValueProperty) # Register custom adapters, since gobject.new is broken in 2.6 # Used by loader, eg in gazpacho and in applications # ComboBox is registered above if gobj == ProxyComboBox: continue adapter_name = 'Kiwi%sAdapter' % gobj.__name__ klass = type(adapter_name, (PythonWidgetAdapter, ), dict(object_type=gobj, __name__=adapter_name)) adapter_registry.register_adapter(klass)
def register_widgets(): for gobj, editor, data_type in [ (ProxyEntry, EntryDataType, DataType), (ProxyDateEntry, None, DateOnlyDataType), (ProxyButton, ButtonDataType, DataType), (ProxyColorButton, ButtonDataType, DataType), (ProxyCheckButton, None, BoolOnlyDataType), (ProxyLabel, LabelDataType, DataType), (ProxyComboBox, ComboBoxDataType, DataType), (ProxyComboBoxEntry, ComboBoxEntryDataType, DataType), (ProxyComboEntry, ComboEntryDataType, DataType), (ProxySpinButton, SpinBtnDataType, DataType), (ProxyHScale, HScaleDataType, DataType), (ProxyVScale, VScaleDataType, DataType), (ProxyRadioButton, None, BoolOnlyDataType), (ProxyTextView, TextViewDataType, DataType) ]: # Property overrides, used in the editor type_name = gobject.type_name(gobj) data_name = type_name + '::data-type' if editor: prop_registry.override_simple(data_name, data_type, custom_editor=editor) else: prop_registry.override_simple(data_name, data_type) prop_registry.override_simple(type_name + '::model-attribute', ModelProperty) if issubclass(gobj, ProxyRadioButton): prop_registry.override_simple(type_name + '::data-value', DataValueProperty) # Register custom adapters, since gobject.new is broken in 2.6 # Used by loader, eg in gazpacho and in applications # ComboBox is registered above if gobj == ProxyComboBox: continue adapter_name = 'Kiwi%sAdapter' % gobj.__name__ klass = type(adapter_name, (PythonWidgetAdapter,), dict(object_type=gobj, __name__=adapter_name)) adapter_registry.register_adapter(klass)
def add(self, parent, child, properties, type): # This is a hack, remove when the button saving/loading code # is improved for cur_child in parent.get_children(): parent.remove(cur_child) ButtonAdapter.add(self, parent, child, properties, type) class GazpachoWindowAdapter(WindowAdapter): object_type = gtk.Window def prop_set_visible(self, window, value): window.set_data('gazpacho::visible', str2bool(value)) def prop_set_modal(self, window, value): window.set_data('gazpacho::modal', str2bool(value)) adapter_registry.register_adapter(GazpachoWindowAdapter) # FIXME: This is quite strange, but apparently we need this too. class GazpachoDialogAdapter(DialogAdapter): object_type = gtk.Dialog def prop_set_modal(self, window, value): window.set_data('gazpacho::modal', str2bool(value)) adapter_registry.register_adapter(GazpachoDialogAdapter) class GazpachoObjectBuilder(ObjectBuilder): def __init__(self, **kwargs): self._app = kwargs.pop('app', None) kwargs['placeholder'] = self.create_placeholder kwargs['custom'] = Custom
Adapter, PythonWidgetAdapter, adapter_registry) # Schevo widgets. from schevogtk2.entitygrid import EntityGrid from schevogtk2.extentgrid import ExtentGrid from schevogtk2.field import FieldLabel from schevogtk2.field import DynamicField from schevogtk2.relatedgrid import RelatedGrid class EntityGridAdapter(PythonWidgetAdapter): object_type = EntityGrid def construct(self, name, gtype, properties): return PythonWidgetAdapter.construct(self, name, gtype, properties) adapter_registry.register_adapter(EntityGridAdapter) class ExtentGridAdapter(PythonWidgetAdapter): object_type = ExtentGrid def construct(self, name, gtype, properties): return PythonWidgetAdapter.construct(self, name, gtype, properties) adapter_registry.register_adapter(ExtentGridAdapter) class FieldLabelAdapter(PythonWidgetAdapter): object_type = FieldLabel def construct(self, name, gtype, properties): return PythonWidgetAdapter.construct(self, name, gtype, properties) adapter_registry.register_adapter(FieldLabelAdapter)
return [] class DateEntryAdaptor(BoxAdaptor): def get_children(self, context, comboentry): return [] class KiwiColumnAdapter(Adapter): object_type = Column def construct(self, name, gtype, properties): return Column(name) adapter_registry.register_adapter(KiwiColumnAdapter) class ObjectListAdapter(PythonWidgetAdapter): object_type = ObjectList def construct(self, name, gtype, properties): if gtype == List: gtype == ObjectList return super(ObjectListAdapter, self).construct(name, gtype, properties) adapter_registry.register_adapter(ObjectListAdapter)
def post_create(self, context, widget, interactive): widget.set_text(widget.get_name()) class ComboEntryAdaptor(BoxAdaptor): def get_children(self, context, comboentry): return [] class DateEntryAdaptor(BoxAdaptor): def get_children(self, context, comboentry): return [] class KiwiColumnAdapter(Adapter): object_type = Column def construct(self, name, gtype, properties): return Column(name) adapter_registry.register_adapter(KiwiColumnAdapter) class ObjectListAdapter(PythonWidgetAdapter): object_type = ObjectList def construct(self, name, gtype, properties): if gtype == List: gtype == ObjectList return super(ObjectListAdapter, self).construct(name, gtype, properties) adapter_registry.register_adapter(ObjectListAdapter) class ObjectTreeAdapter(PythonWidgetAdapter): object_type = ObjectTree adapter_registry.register_adapter(ObjectTreeAdapter) # Framework widgets
(w - fontw) / 2, (h - fonth) / 2, self._layout) return False # Adapter class CustomAdaptor(WidgetAdaptor): type = Custom name = 'Custom' # Loader class CustomLoaderAdapter(LoaderAdapter): object_type = Custom def construct(self, name, gtype, properties): return Custom() adapter_registry.register_adapter(CustomLoaderAdapter) CUSTOM_TYPE = 'gazpacho+widgets+base+custom+Custom' prop_registry.override_simple(CUSTOM_TYPE + '::int1', translatable=False, minimum=-1) prop_registry.override_simple(CUSTOM_TYPE + '::int2', translatable=False, minimum=-1) prop_registry.override_simple(CUSTOM_TYPE + '::string1', translatable=False) prop_registry.override_simple(CUSTOM_TYPE + '::string2', translatable=False) prop_registry.override_simple(CUSTOM_TYPE + '::creation-function', translatable=False) prop_registry.override_simple(CUSTOM_TYPE + '::last-modification-time', translatable=False, editable=False)