Exemplo n.º 1
0
 def __setup_spin_button(self, widget_name, property_name):
     """Creates a SpinButton for editing a property value."""
     spinbtn = self.builder.get_object(widget_name)
     handler_id = spinbtn.connect("value-changed", self._onValueChangedCb, property_name)
     disable_scroll(spinbtn)
     self.spin_buttons[property_name] = spinbtn
     self.spin_buttons_handler_ids[property_name] = handler_id
Exemplo n.º 2
0
    def __init__(self, matches=None, choices=None, default=None):
        if not default:
            # In the case of text widgets, a blank default is an empty string
            default = ""

        Gtk.Box.__init__(self)
        DynamicWidget.__init__(self, default)

        self.set_orientation(Gtk.Orientation.HORIZONTAL)
        self.set_border_width(0)
        self.set_spacing(0)
        if choices:
            self.combo = Gtk.ComboBoxText.new_with_entry()
            self.text = self.combo.get_child()
            self.combo.show()
            disable_scroll(self.combo)
            self.pack_start(self.combo, expand=False, fill=False, padding=0)
            for choice in choices:
                self.combo.append_text(choice)
        else:
            self.text = Gtk.Entry()
            self.text.show()
            self.pack_start(self.text, expand=False, fill=False, padding=0)
        self.matches = None
        self.last_valid = None
        self.valid = False
        self.send_signal = True
        self.text.connect("changed", self._textChanged)
        self.text.connect("activate", self._activateCb)
        if matches:
            if type(matches) is str:
                self.matches = re.compile(matches)
            else:
                self.matches = matches
            self._textChanged(None)
Exemplo n.º 3
0
    def __init__(self, matches=None, choices=None, default=None):
        if not default:
            # In the case of text widgets, a blank default is an empty string
            default = ""

        Gtk.Box.__init__(self)
        DynamicWidget.__init__(self, default)

        self.set_orientation(Gtk.Orientation.HORIZONTAL)
        self.set_border_width(0)
        self.set_spacing(0)
        if choices:
            self.combo = Gtk.ComboBoxText.new_with_entry()
            self.text = self.combo.get_child()
            self.combo.show()
            disable_scroll(self.combo)
            self.pack_start(self.combo, expand=False, fill=False, padding=0)
            for choice in choices:
                self.combo.append_text(choice)
        else:
            self.text = Gtk.Entry()
            self.text.show()
            self.pack_start(self.text, expand=False, fill=False, padding=0)
        self.matches = None
        self.last_valid = None
        self.valid = False
        self.send_signal = True
        self.text.connect("changed", self.__text_changed_cb)
        self.text.connect("activate", self.__activate_cb)
        if matches:
            if type(matches) is str:
                self.matches = re.compile(matches)
            else:
                self.matches = matches
            self.__text_changed_cb(None)
Exemplo n.º 4
0
 def __setup_spin_button(self, widget_name, property_name):
     """Creates a SpinButton for editing a property value."""
     spinbtn = self.builder.get_object(widget_name)
     handler_id = spinbtn.connect("value-changed", self._onValueChangedCb, property_name)
     disable_scroll(spinbtn)
     self.spin_buttons[property_name] = spinbtn
     self.spin_buttons_handler_ids[property_name] = handler_id
Exemplo n.º 5
0
 def __setupSpinButton(self, widget_name, property_name):
     """
     Create a spinbutton widget and connect its signals to change property
     values. While focused, disable the timeline actions' sensitivity.
     """
     spinbtn = self.builder.get_object(widget_name)
     spinbtn.connect("output", self._onValueChangedCb, property_name)
     disable_scroll(spinbtn)
     self.spin_buttons[property_name] = spinbtn
Exemplo n.º 6
0
 def do_create_widget(self, effect_widget, effect):
     """Creates a widget if the `create_widget` handlers did not."""
     effect_name = effect.get_property("bin-description")
     self.log('UI is being auto-generated for "%s"', effect_name)
     effect_widget.add_widgets(
         create_property_widget_func=self.create_property_widget,
         with_reset_button=True)
     disable_scroll(effect_widget)
     self._post_configuration(effect, effect_widget)
Exemplo n.º 7
0
    def __init__(self, app):
        Gtk.ScrolledWindow.__init__(self)
        Loggable.__init__(self)
        self.app = app

        self.set_policy(Gtk.PolicyType.NEVER, Gtk.PolicyType.AUTOMATIC)

        viewport = Gtk.Viewport()
        viewport.set_shadow_type(Gtk.ShadowType.ETCHED_IN)
        viewport.show()
        self.add(viewport)

        vbox = Gtk.Box(orientation=Gtk.Orientation.VERTICAL)
        vbox.show()
        viewport.add(vbox)

        self.clips_box = Gtk.Box()
        self.clips_box.set_orientation(Gtk.Orientation.VERTICAL)
        self.clips_box.show()
        vbox.pack_start(self.clips_box, False, False, 0)

        self.transformation_expander = TransformationProperties(app)
        self.transformation_expander.set_vexpand(False)
        vbox.pack_start(self.transformation_expander, False, False, 0)

        self.speed_expander = TimeProperties(app)
        self.speed_expander.set_vexpand(False)
        vbox.pack_start(self.speed_expander, False, False, 0)

        self.title_expander = TitleProperties(app)
        self.title_expander.set_vexpand(False)
        vbox.pack_start(self.title_expander, False, False, 0)

        self.color_expander = ColorProperties(app)
        self.color_expander.set_vexpand(False)
        vbox.pack_start(self.color_expander, False, False, 0)

        self.effect_expander = EffectProperties(app)
        self.effect_expander.set_vexpand(False)
        vbox.pack_start(self.effect_expander, False, False, 0)

        self.helper_box = self.create_helper_box()
        self.clips_box.pack_start(self.helper_box, False, False, 0)

        disable_scroll(vbox)

        self.transformation_expander.set_source(None)
        self.speed_expander.set_clip(None)
        self.title_expander.set_source(None)
        self.color_expander.set_source(None)
        self.effect_expander.set_clip(None)

        self._project = None
        self._selection = None
Exemplo n.º 8
0
 def __init__(self, choices, default=None):
     Gtk.Box.__init__(self)
     DynamicWidget.__init__(self, default)
     self.choices = None
     self.values = None
     self.set_orientation(Gtk.Orientation.HORIZONTAL)
     self.contents = Gtk.ComboBoxText()
     self.pack_start(self.contents, expand=False, fill=False, padding=0)
     self.setChoices(choices)
     self.contents.show()
     disable_scroll(self.contents)
     cell = self.contents.get_cells()[0]
     cell.props.ellipsize = Pango.EllipsizeMode.END
Exemplo n.º 9
0
 def __init__(self, choices, default=None):
     Gtk.Box.__init__(self)
     DynamicWidget.__init__(self, default)
     self.choices = None
     self.values = None
     self.set_orientation(Gtk.Orientation.HORIZONTAL)
     self.contents = Gtk.ComboBoxText()
     self.pack_start(self.contents, expand=False, fill=False, padding=0)
     self.setChoices(choices)
     self.contents.show()
     disable_scroll(self.contents)
     cell = self.contents.get_cells()[0]
     cell.props.ellipsize = Pango.EllipsizeMode.END
Exemplo n.º 10
0
    def __init__(self, upper=None, lower=None, default=None):
        Gtk.Box.__init__(self)
        DynamicWidget.__init__(self, default)

        self.set_orientation(Gtk.Orientation.HORIZONTAL)
        self.set_spacing(SPACING)
        self._type = None

        reasonable_limit = 5000
        with_slider = (lower is not None and lower > -reasonable_limit and
            upper is not None and upper < reasonable_limit)

        self.adjustment = Gtk.Adjustment()
        # Limit the limits, otherwise the widget appears huge.
        # Workaround https://bugzilla.gnome.org/show_bug.cgi?id=727294
        # If these hardcoded limits are a problem, the fix should be passing
        # the proper limits using the upper and lower parameters.
        if upper is None:
            upper = GLib.MAXINT16
        if lower is None:
            lower = GLib.MININT16
        self.adjustment.props.lower = max(GLib.MININT16, lower)
        self.adjustment.props.upper = min(upper, GLib.MAXINT16)

        if with_slider:
            self.slider = Gtk.Scale.new(
                Gtk.Orientation.HORIZONTAL, self.adjustment)
            self.pack_end(self.slider, expand=False, fill=False, padding=0)
            self.slider.show()
            disable_scroll(self.slider)
            self.slider.set_size_request(width=100, height=-1)
            self.slider.props.draw_value = False
            # Abuse GTK3's progressbar "fill level" feature to provide
            # a visual indication of the default value on property sliders.
            if default is not None:
                self.slider.set_restrict_to_fill_level(False)
                self.slider.set_fill_level(float(default))
                self.slider.set_show_fill_level(True)

        self.spinner = Gtk.SpinButton(adjustment=self.adjustment)
        self.pack_start(self.spinner, expand=False, fill=False, padding=0)
        self.spinner.show()
        disable_scroll(self.spinner)
Exemplo n.º 11
0
    def __init__(self, upper=None, lower=None, default=None):
        Gtk.Box.__init__(self)
        DynamicWidget.__init__(self, default)

        self.set_orientation(Gtk.Orientation.HORIZONTAL)
        self.set_spacing(SPACING)
        self._type = None

        reasonable_limit = 5000
        with_slider = (lower is not None and lower > -reasonable_limit
                       and upper is not None and upper < reasonable_limit)

        self.adjustment = Gtk.Adjustment()
        # Limit the limits, otherwise the widget appears huge.
        # Workaround https://bugzilla.gnome.org/show_bug.cgi?id=727294
        # If these hardcoded limits are a problem, the fix should be passing
        # the proper limits using the upper and lower parameters.
        if upper is None:
            upper = GLib.MAXINT16
        if lower is None:
            lower = GLib.MININT16
        self.adjustment.props.lower = max(GLib.MININT16, lower)
        self.adjustment.props.upper = min(upper, GLib.MAXINT16)

        if with_slider:
            self.slider = Gtk.Scale.new(Gtk.Orientation.HORIZONTAL,
                                        self.adjustment)
            self.pack_end(self.slider, expand=False, fill=False, padding=0)
            self.slider.show()
            disable_scroll(self.slider)
            self.slider.set_size_request(width=100, height=-1)
            self.slider.props.draw_value = False
            # Abuse GTK3's progressbar "fill level" feature to provide
            # a visual indication of the default value on property sliders.
            if default is not None:
                self.slider.set_restrict_to_fill_level(False)
                self.slider.set_fill_level(float(default))
                self.slider.set_show_fill_level(True)

        self.spinner = Gtk.SpinButton(adjustment=self.adjustment)
        self.pack_start(self.spinner, expand=False, fill=False, padding=0)
        self.spinner.show()
        disable_scroll(self.spinner)
Exemplo n.º 12
0
 def __setupSpinButton(self, widget_name, property_name):
     """Creates a SpinButton for editing a property value."""
     spinbtn = self.builder.get_object(widget_name)
     spinbtn.connect("output", self._onValueChangedCb, property_name)
     disable_scroll(spinbtn)
     self.spin_buttons[property_name] = spinbtn
Exemplo n.º 13
0
 def __setupSpinButton(self, widget_name, property_name):
     """Creates a SpinButton for editing a property value."""
     spinbtn = self.builder.get_object(widget_name)
     spinbtn.connect("output", self._onValueChangedCb, property_name)
     disable_scroll(spinbtn)
     self.spin_buttons[property_name] = spinbtn