[pitivi] titleeditor: Added color pickers
- From: Alexandru Băluț <alexbalut src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [pitivi] titleeditor: Added color pickers
- Date: Wed, 27 Mar 2019 05:37:52 +0000 (UTC)
commit c2f058e8208b05d5ff8a8c35724a94bcacfb01de
Author: Millan Castro <m castrovilarino gmail com>
Date: Sun Mar 24 12:17:26 2019 +0100
titleeditor: Added color pickers
Fixes #1645
data/ui/titleeditor.ui | 346 +++++++++++++++++++++++++------------------------
pitivi/titleeditor.py | 29 ++++-
2 files changed, 202 insertions(+), 173 deletions(-)
---
diff --git a/data/ui/titleeditor.ui b/data/ui/titleeditor.ui
index ccf4f7e9..e732ee24 100644
--- a/data/ui/titleeditor.ui
+++ b/data/ui/titleeditor.ui
@@ -1,17 +1,17 @@
<?xml version="1.0" encoding="UTF-8"?>
-<!-- Generated with glade 3.19.0 -->
+<!-- Generated with glade 3.22.1 -->
<interface>
<requires lib="gtk+" version="3.10"/>
<object class="GtkAdjustment" id="position_x_adj">
- <property name="upper">100</property>
<property name="lower">-100</property>
+ <property name="upper">100</property>
<property name="value">0.5</property>
<property name="step_increment">0.050000000000000003</property>
<property name="page_increment">0.10000000000000001</property>
</object>
<object class="GtkAdjustment" id="position_y_adj">
- <property name="upper">100</property>
<property name="lower">-100</property>
+ <property name="upper">100</property>
<property name="value">0.5</property>
<property name="step_increment">0.050000000000000003</property>
<property name="page_increment">0.10000000000000001</property>
@@ -53,9 +53,6 @@
<property name="position">1</property>
</packing>
</child>
- <action-widgets>
- <action-widget response="0">create</action-widget>
- </action-widgets>
<child internal-child="content_area">
<object class="GtkBox" id="infobar-content_area1">
<property name="can_focus">False</property>
@@ -97,235 +94,244 @@
<property name="can_focus">False</property>
<property name="shadow_type">etched-in</property>
<child>
- <object class="GtkBox" id="editing_box">
+ <object class="GtkBox" id="base_table">
<property name="visible">True</property>
<property name="can_focus">False</property>
+ <property name="margin_left">12</property>
+ <property name="margin_right">12</property>
+ <property name="margin_top">12</property>
+ <property name="margin_bottom">12</property>
<property name="orientation">vertical</property>
<child>
- <object class="GtkToolbar" id="toolbar">
+ <object class="GtkTextView" id="textview">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="margin_start">12</property>
+ <property name="margin_end">12</property>
+ <property name="hexpand">True</property>
+ <property name="vexpand">True</property>
+ <property name="wrap_mode">word</property>
+ <property name="indent">-1</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkBox">
+ <property name="name">base_table</property>
<property name="visible">True</property>
<property name="can_focus">False</property>
- <property name="show_arrow">False</property>
- <property name="icon_size">1</property>
+ <property name="halign">start</property>
+ <property name="valign">start</property>
+ <property name="margin_top">10</property>
<child>
- <object class="GtkToolItem" id="font">
+ <object class="GtkFontButton" id="fontbutton1">
<property name="use_action_appearance">False</property>
<property name="visible">True</property>
- <property name="can_focus">False</property>
- <child>
- <object class="GtkFontButton" id="fontbutton1">
- <property name="use_action_appearance">False</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">True</property>
- <property name="font">Sans 12</property>
- <property name="preview_text"/>
- <property name="show_preview_entry">False</property>
- <property name="title" translatable="yes">Choose a font</property>
- <signal name="font-set" handler="_fontButtonCb" swapped="no"/>
- </object>
- </child>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="font">Sans 12</property>
+ <property name="preview_text"/>
+ <property name="show_preview_entry">False</property>
+ <property name="title" translatable="yes">Choose a font</property>
+ <signal name="font-set" handler="_fontButtonCb" swapped="no"/>
</object>
<packing>
<property name="expand">False</property>
- <property name="homogeneous">True</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
</packing>
</child>
<child>
- <object class="GtkToolItem" id="font_fore_color">
+ <object class="GtkColorButton" id="fore_text_color">
<property name="use_action_appearance">False</property>
<property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="margin_left">5</property>
+ <property name="use_alpha">True</property>
+ <property name="title" translatable="yes">Pick a text color</property>
+ <property name="rgba">rgb(239,41,41)</property>
+ <signal name="color-set" handler="_frontTextColorButtonCb" swapped="no"/>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkAspectFrame" id="color_picker_foreground">
+ <property name="name">picker1</property>
+ <property name="visible">True</property>
<property name="can_focus">False</property>
- <property name="has_tooltip">True</property>
- <property name="tooltip_markup" translatable="yes">Text color</property>
- <property name="tooltip_text" translatable="yes">Text color</property>
+ <property name="label_xalign">0</property>
+ <property name="shadow_type">none</property>
<child>
- <object class="GtkColorButton" id="fore_text_color">
- <property name="use_action_appearance">False</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">True</property>
- <property name="use_alpha">True</property>
- <property name="title" translatable="yes">Pick a text color</property>
- <signal name="color-set" handler="_frontTextColorButtonCb" swapped="no"/>
- </object>
+ <placeholder/>
</child>
</object>
<packing>
<property name="expand">False</property>
- <property name="homogeneous">False</property>
+ <property name="fill">True</property>
+ <property name="position">2</property>
</packing>
</child>
<child>
- <object class="GtkToolItem" id="background_color">
+ <object class="GtkColorButton" id="back_color">
<property name="use_action_appearance">False</property>
<property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="margin_left">5</property>
+ <property name="use_alpha">True</property>
+ <property name="title" translatable="yes">Pick a background color</property>
+ <property name="rgba">rgb(255,255,255)</property>
+ <signal name="color-set" handler="_backgroundColorButtonCb" swapped="no"/>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">3</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkAspectFrame" id="color_picker_background">
+ <property name="name">picker2</property>
+ <property name="visible">True</property>
<property name="can_focus">False</property>
- <property name="has_tooltip">True</property>
- <property name="tooltip_markup" translatable="yes">Background color</property>
- <property name="tooltip_text" translatable="yes">Background color</property>
+ <property name="label_xalign">0</property>
+ <property name="shadow_type">none</property>
<child>
- <object class="GtkColorButton" id="back_color">
- <property name="use_action_appearance">False</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">True</property>
- <property name="use_alpha">True</property>
- <property name="title" translatable="yes">Pick a background color</property>
- <property name="rgba">rgb(255,255,255)</property>
- <signal name="color-set" handler="_backgroundColorButtonCb" swapped="no"/>
- </object>
+ <placeholder/>
</child>
</object>
<packing>
<property name="expand">False</property>
- <property name="homogeneous">False</property>
+ <property name="fill">True</property>
+ <property name="position">4</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
- <property name="position">0</property>
+ <property name="position">1</property>
</packing>
</child>
<child>
- <object class="GtkTextView" id="textview">
+ <object class="GtkLabel" id="label7">
<property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="margin_start">12</property>
- <property name="margin_end">12</property>
- <property name="margin_top">12</property>
- <property name="margin_bottom">12</property>
- <property name="wrap_mode">word</property>
+ <property name="can_focus">False</property>
+ <property name="halign">start</property>
+ <property name="valign">start</property>
+ <property name="margin_top">10</property>
+ <property name="label" translatable="yes">Alignment</property>
+ <property name="width_chars">0</property>
+ <property name="max_width_chars">0</property>
+ <property name="xalign">0</property>
</object>
<packing>
- <property name="expand">True</property>
+ <property name="expand">False</property>
<property name="fill">True</property>
- <property name="position">1</property>
+ <property name="position">2</property>
</packing>
</child>
<child>
- <object class="GtkExpander" id="expander1">
+ <object class="GtkGrid">
<property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="expanded">True</property>
+ <property name="can_focus">False</property>
+ <property name="halign">start</property>
+ <property name="valign">start</property>
+ <property name="margin_left">12</property>
+ <property name="margin_top">6</property>
+ <property name="row_spacing">8</property>
+ <property name="column_spacing">6</property>
<child>
- <object class="GtkBox" id="box5">
+ <object class="GtkComboBoxText" id="halignment">
<property name="visible">True</property>
<property name="can_focus">False</property>
- <property name="orientation">vertical</property>
- <child>
- <object class="GtkGrid" id="box4">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="halign">start</property>
- <property name="margin_left">6</property>
- <property name="margin_right">6</property>
- <property name="margin_start">24</property>
- <property name="margin_top">6</property>
- <property name="margin_bottom">6</property>
- <property name="row_spacing">10</property>
- <property name="column_spacing">10</property>
- <child>
- <object class="GtkLabel" id="label6">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="label" translatable="yes">Horizontal:</property>
- <property name="xalign">0</property>
- </object>
- <packing>
- <property name="left_attach">0</property>
- <property name="top_attach">0</property>
- </packing>
- </child>
- <child>
- <object class="GtkLabel" id="label2">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="label" translatable="yes">Vertical:</property>
- <property name="xalign">0</property>
- </object>
- <packing>
- <property name="left_attach">0</property>
- <property name="top_attach">1</property>
- </packing>
- </child>
- <child>
- <object class="GtkComboBoxText" id="halignment">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <signal name="changed" handler="_update_source_cb" swapped="no"/>
- </object>
- <packing>
- <property name="left_attach">1</property>
- <property name="top_attach">0</property>
- </packing>
- </child>
- <child>
- <object class="GtkComboBoxText" id="valignment">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="active">1</property>
- <signal name="changed" handler="_update_source_cb" swapped="no"/>
- </object>
- <packing>
- <property name="left_attach">1</property>
- <property name="top_attach">1</property>
- </packing>
- </child>
- <child>
- <object class="GtkSpinButton" id="x-absolute">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="invisible_char">•</property>
- <property name="adjustment">position_x_adj</property>
- <property name="digits">2</property>
- <property name="numeric">True</property>
- <signal name="value-changed" handler="_update_source_cb" swapped="no"/>
- </object>
- <packing>
- <property name="left_attach">2</property>
- <property name="top_attach">0</property>
- </packing>
- </child>
- <child>
- <object class="GtkSpinButton" id="y-absolute">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="invisible_char">•</property>
- <property name="adjustment">position_y_adj</property>
- <property name="digits">2</property>
- <property name="numeric">True</property>
- <signal name="value-changed" handler="_update_source_cb" swapped="no"/>
- </object>
- <packing>
- <property name="left_attach">2</property>
- <property name="top_attach">1</property>
- </packing>
- </child>
- </object>
- <packing>
- <property name="expand">True</property>
- <property name="fill">True</property>
- <property name="position">0</property>
- </packing>
- </child>
+ <signal name="changed" handler="_update_source_cb" swapped="no"/>
</object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="top_attach">0</property>
+ </packing>
</child>
- <child type="label">
- <object class="GtkLabel" id="label7">
+ <child>
+ <object class="GtkLabel" id="label6">
<property name="visible">True</property>
<property name="can_focus">False</property>
- <property name="label" translatable="yes">Alignment</property>
+ <property name="label" translatable="yes">Horizontal:</property>
<property name="xalign">0</property>
</object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkComboBoxText" id="valignment">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="active">1</property>
+ <signal name="changed" handler="_update_source_cb" swapped="no"/>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="top_attach">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label2">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Vertical:</property>
+ <property name="xalign">0</property>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSpinButton" id="y-absolute">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="invisible_char">•</property>
+ <property name="adjustment">position_y_adj</property>
+ <property name="digits">2</property>
+ <property name="numeric">True</property>
+ <signal name="value-changed" handler="_update_source_cb" swapped="no"/>
+ </object>
+ <packing>
+ <property name="left_attach">2</property>
+ <property name="top_attach">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSpinButton" id="x-absolute">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="invisible_char">•</property>
+ <property name="adjustment">position_x_adj</property>
+ <property name="digits">2</property>
+ <property name="numeric">True</property>
+ <signal name="value-changed" handler="_update_source_cb" swapped="no"/>
+ </object>
+ <packing>
+ <property name="left_attach">2</property>
+ <property name="top_attach">0</property>
+ </packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
- <property name="position">2</property>
+ <property name="position">3</property>
</packing>
</child>
</object>
diff --git a/pitivi/titleeditor.py b/pitivi/titleeditor.py
index aaca7c4f..d9919133 100644
--- a/pitivi/titleeditor.py
+++ b/pitivi/titleeditor.py
@@ -32,6 +32,7 @@ from pitivi.utils.timeline import SELECT
from pitivi.utils.ui import argb_to_gdk_rgba
from pitivi.utils.ui import fix_infobar
from pitivi.utils.ui import gdk_rgba_to_argb
+from pitivi.utils.widgets import ColorPickerButton
GlobalSettings.addConfigOption('titleClipLength',
section="user-interface",
@@ -86,10 +87,9 @@ class TitleEditor(Loggable):
self.widget = builder.get_object("box1") # To be used by tabsmanager
self.infobar = builder.get_object("infobar")
fix_infobar(self.infobar)
- self.editing_box = builder.get_object("editing_box")
+ self.editing_box = builder.get_object("base_table")
+
self.textarea = builder.get_object("textview")
- toolbar = builder.get_object("toolbar")
- toolbar.get_style_context().add_class(Gtk.STYLE_CLASS_INLINE_TOOLBAR)
self.textbuffer = self.textarea.props.buffer
self.textbuffer.connect("changed", self._textChangedCb)
@@ -98,6 +98,18 @@ class TitleEditor(Loggable):
self.foreground_color_button = builder.get_object("fore_text_color")
self.background_color_button = builder.get_object("back_color")
+ self.color_picker_foreground_widget = ColorPickerButton()
+ self.color_picker_foreground_widget.show()
+ self.color_picker_foreground = builder.get_object("color_picker_foreground")
+ self.color_picker_foreground.add(self.color_picker_foreground_widget)
+ self.color_picker_foreground_widget.connect("value-changed", self._color_picker_value_changed_cb,
self.foreground_color_button, "color")
+
+ self.color_picker_background_widget = ColorPickerButton()
+ self.color_picker_background_widget.show()
+ self.background_color_picker = builder.get_object("color_picker_background")
+ self.background_color_picker.add(self.color_picker_background_widget)
+ self.color_picker_background_widget.connect("value-changed", self._color_picker_value_changed_cb,
self.background_color_button, "foreground-color")
+
settings = ["valignment", "halignment", "x-absolute", "y-absolute"]
for setting in settings:
self.settings[setting] = builder.get_object(setting)
@@ -125,6 +137,17 @@ class TitleEditor(Loggable):
finally:
self._setting_props = False
+ def _color_picker_value_changed_cb(self, widget, colorButton, colorLayer):
+ argb = 0
+ argb += (1 * 255) * 256 ** 3
+ argb += float(widget.color_r) * 256 ** 2
+ argb += float(widget.color_g) * 256 ** 1
+ argb += float(widget.color_b) * 256 ** 0
+ self.debug("Setting text %s to %x", colorLayer, argb)
+ self._setChildProperty(colorLayer, argb)
+ rgba = argb_to_gdk_rgba(argb)
+ colorButton.set_rgba(rgba)
+
def _backgroundColorButtonCb(self, widget):
color = gdk_rgba_to_argb(widget.get_rgba())
self.debug("Setting title background color to %x", color)
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]