commit-gnuradio
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Commit-gnuradio] [gnuradio] 94/101: grc: gtk3: reimplemented custom bg


From: git
Subject: [Commit-gnuradio] [gnuradio] 94/101: grc: gtk3: reimplemented custom bg colors for param entry boxes
Date: Thu, 16 Mar 2017 14:58:14 +0000 (UTC)

This is an automated email from the git hooks/post-receive script.

jcorgan pushed a commit to branch python3
in repository gnuradio.

commit c52deb5f43cfd5a7083f3568719d88ac09ac838f
Author: Sebastian Koslowski <address@hidden>
Date:   Sat Jan 7 21:02:15 2017 +0100

    grc: gtk3: reimplemented custom bg colors for param entry boxes
---
 grc/gui/Colors.py           | 76 ++++++++++++++++++---------------------------
 grc/gui/Dialogs.py          |  6 ++--
 grc/gui/DrawingArea.py      |  2 +-
 grc/gui/ParamWidgets.py     | 57 ++++++++++++++++++++++++----------
 grc/gui/PropsDialog.py      |  2 +-
 grc/gui/canvas/flowgraph.py |  1 +
 6 files changed, 77 insertions(+), 67 deletions(-)

diff --git a/grc/gui/Colors.py b/grc/gui/Colors.py
index 01c461a..17eb151 100644
--- a/grc/gui/Colors.py
+++ b/grc/gui/Colors.py
@@ -19,20 +19,15 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, 
MA  02110-1301, USA
 
 from __future__ import absolute_import
 
-from gi.repository import Gdk, cairo
+from gi.repository import Gtk, Gdk, cairo
 # import pycairo
 
 from . import Constants
 
 
-def _color_parse(color_code):
+def get_color(color_code):
     color = Gdk.RGBA()
     color.parse(color_code)
-    return color
-
-
-def get_color(color_code):
-    color = _color_parse(color_code)
     return color.red, color.green, color.blue, color.alpha
     # chars_per_color = 2 if len(color_code) > 4 else 1
     # offsets = range(1, 3 * chars_per_color + 1, chars_per_color)
@@ -80,42 +75,31 @@ PORT_TYPE_TO_COLOR.update((key, get_color(color)) for key, 
(_, color) in Constan
 
#################################################################################
 # param box colors
 
#################################################################################
-COMPLEX_COLOR_SPEC = _color_parse('#3399FF')
-FLOAT_COLOR_SPEC = _color_parse('#FF8C69')
-INT_COLOR_SPEC = _color_parse('#00FF99')
-SHORT_COLOR_SPEC = _color_parse('#FFFF66')
-BYTE_COLOR_SPEC = _color_parse('#FF66FF')
-
-ID_COLOR_SPEC = _color_parse('#DDDDDD')
-WILDCARD_COLOR_SPEC = _color_parse('#FFFFFF')
-
-COMPLEX_VECTOR_COLOR_SPEC = _color_parse('#3399AA')
-FLOAT_VECTOR_COLOR_SPEC = _color_parse('#CC8C69')
-INT_VECTOR_COLOR_SPEC = _color_parse('#00CC99')
-SHORT_VECTOR_COLOR_SPEC = _color_parse('#CCCC33')
-BYTE_VECTOR_COLOR_SPEC = _color_parse('#CC66CC')
-
-PARAM_ENTRY_COLORS = {
-    # Number types
-    'complex': COMPLEX_COLOR_SPEC,
-    'real': FLOAT_COLOR_SPEC,
-    'float': FLOAT_COLOR_SPEC,
-    'int': INT_COLOR_SPEC,
-
-    # Vector types
-    'complex_vector': COMPLEX_VECTOR_COLOR_SPEC,
-    'real_vector': FLOAT_VECTOR_COLOR_SPEC,
-    'float_vector': FLOAT_VECTOR_COLOR_SPEC,
-    'int_vector': INT_VECTOR_COLOR_SPEC,
-
-    # Special
-    'bool': INT_COLOR_SPEC,
-    'hex': INT_COLOR_SPEC,
-    'string': BYTE_VECTOR_COLOR_SPEC,
-    'id': ID_COLOR_SPEC,
-    'stream_id': ID_COLOR_SPEC,
-    'raw': WILDCARD_COLOR_SPEC,
-}
-
-PARAM_ENTRY_DEFAULT_COLOR = _color_parse('#FFFFFF')
-PARAM_ENTRY_ENUM_CUSTOM_COLOR = _color_parse('#EEEEEE')
+style_provider = Gtk.CssProvider()
+
+style_provider.load_from_data("""
+    #dtype_complex         { background-color: #3399FF; }
+    #dtype_real            { background-color: #FF8C69; }
+    #dtype_float           { background-color: #FF8C69; }
+    #dtype_int             { background-color: #00FF99; }
+
+    #dtype_complex_vector  { background-color: #3399AA; }
+    #dtype_real_vector     { background-color: #CC8C69; }
+    #dtype_float_vector    { background-color: #CC8C69; }
+    #dtype_int_vector      { background-color: #00CC99; }
+
+    #dtype_bool            { background-color: #00FF99; }
+    #dtype_hex             { background-color: #00FF99; }
+    #dtype_string          { background-color: #CC66CC; }
+    #dtype_id              { background-color: #DDDDDD; }
+    #dtype_stream_id       { background-color: #DDDDDD; }
+    #dtype_raw             { background-color: #FFFFFF; }
+
+    #enum_custom           { background-color: #EEEEEE; }
+""")
+
+Gtk.StyleContext.add_provider_for_screen(
+    Gdk.Screen.get_default(),
+    style_provider,
+    Gtk.STYLE_PROVIDER_PRIORITY_APPLICATION
+)
diff --git a/grc/gui/Dialogs.py b/grc/gui/Dialogs.py
index 09ecd48..51213a6 100644
--- a/grc/gui/Dialogs.py
+++ b/grc/gui/Dialogs.py
@@ -103,9 +103,9 @@ class TextDisplay(SimpleTextDisplay):
         """ Update view's scroll position. """
         if self.scroll_lock:
             buf = self.get_buffer()
-            buf.move_mark(buf.get_insert(), buf.get_end_iter())
-            # TODO: Fix later
-            #self.scroll_to_mark(buffer.get_insert(), 0.0)
+            mark = buf.get_insert()
+            buf.move_mark(mark, buf.get_end_iter())
+            self.scroll_mark_onscreen(mark)
 
     def clear(self):
         """ Clear all text from buffer. """
diff --git a/grc/gui/DrawingArea.py b/grc/gui/DrawingArea.py
index 2e26c26..1a75e2d 100644
--- a/grc/gui/DrawingArea.py
+++ b/grc/gui/DrawingArea.py
@@ -209,7 +209,7 @@ class DrawingArea(Gtk.DrawingArea):
 
     def _handle_focus_lost_event(self, widget, event):
         # don't clear selection while context menu is active
-        if not self._flow_graph.get_context_menu().flags() & Gtk.VISIBLE:
+        if not self._flow_graph.context_menu.get_take_focus():
             self._flow_graph.unselect()
             self._flow_graph.update_selected()
             self._flow_graph.queue_draw()
diff --git a/grc/gui/ParamWidgets.py b/grc/gui/ParamWidgets.py
index b79a856..b56eace 100644
--- a/grc/gui/ParamWidgets.py
+++ b/grc/gui/ParamWidgets.py
@@ -20,7 +20,37 @@ import os
 
 from gi.repository import Gtk, Gdk
 
-from . import Colors, Utils
+from . import Utils
+
+
+style_provider = Gtk.CssProvider()
+
+style_provider.load_from_data("""
+    #dtype_complex         { background-color: #3399FF; }
+    #dtype_real            { background-color: #FF8C69; }
+    #dtype_float           { background-color: #FF8C69; }
+    #dtype_int             { background-color: #00FF99; }
+
+    #dtype_complex_vector  { background-color: #3399AA; }
+    #dtype_real_vector     { background-color: #CC8C69; }
+    #dtype_float_vector    { background-color: #CC8C69; }
+    #dtype_int_vector      { background-color: #00CC99; }
+
+    #dtype_bool            { background-color: #00FF99; }
+    #dtype_hex             { background-color: #00FF99; }
+    #dtype_string          { background-color: #CC66CC; }
+    #dtype_id              { background-color: #DDDDDD; }
+    #dtype_stream_id       { background-color: #DDDDDD; }
+    #dtype_raw             { background-color: #FFFFFF; }
+
+    #enum_custom           { background-color: #EEEEEE; }
+""")
+
+Gtk.StyleContext.add_provider_for_screen(
+    Gdk.Screen.get_default(),
+    style_provider,
+    Gtk.STYLE_PROVIDER_PRIORITY_APPLICATION
+)
 
 
 class InputParam(Gtk.HBox):
@@ -44,7 +74,7 @@ class InputParam(Gtk.HBox):
 
         self.connect('show', self._update_gui)
 
-    def set_color(self, color):
+    def set_color(self, css_name):
         pass
 
     def set_tooltip_text(self, text):
@@ -58,11 +88,7 @@ class InputParam(Gtk.HBox):
         Set the markup, color, tooltip, show/hide.
         """
         
self.label.set_markup(self.param.format_label_markup(self._have_pending_changes))
-
-        # fixme: find a non-deprecated way to change colors
-        # self.set_color(Colors.PARAM_ENTRY_COLORS.get(
-        #     self.param.get_type(), Colors.PARAM_ENTRY_DEFAULT_COLOR)
-        # )
+        self.set_color('dtype_' + self.param.get_type())
 
         self.set_tooltip_text(self.param.format_tooltip_text())
 
@@ -122,8 +148,8 @@ class EntryParam(InputParam):
     def get_text(self):
         return self._input.get_text()
 
-    def set_color(self, color):
-        self._input.override_background_color(Gtk.StateType.NORMAL, color)
+    def set_color(self, css_name):
+        self._input.set_name(css_name)
 
     def set_tooltip_text(self, text):
         self._input.set_tooltip_text(text)
@@ -143,10 +169,10 @@ class MultiLineEntryParam(InputParam):
         self._view.set_buffer(self._buffer)
         self._view.connect('focus-out-event', self._apply_change)
         self._view.connect('key-press-event', self._handle_key_press)
-        # fixme: add border to TextView
 
         self._sw = Gtk.ScrolledWindow()
         self._sw.set_policy(Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.AUTOMATIC)
+        self._sw.set_shadow_type(type=Gtk.ShadowType.IN)
         self._sw.add(self._view)
 
         self.pack_start(self._sw, True, True, True)
@@ -157,8 +183,8 @@ class MultiLineEntryParam(InputParam):
                             include_hidden_chars=False)
         return text.strip()
 
-    def set_color(self, color):
-        self._view.override_background_color(Gtk.StateType.NORMAL, color)
+    def set_color(self, css_name):
+        self._view.set_name(css_name)
 
     def set_tooltip_text(self, text):
         self._view.set_tooltip_text(text)
@@ -245,10 +271,9 @@ class EnumEntryParam(InputParam):
         else:
             self._input.set_tooltip_text(text)
 
-    def set_color(self, color):
-        self._input.get_child().modify_base(
-            Gtk.StateType.NORMAL,
-            color if not self.has_custom_value else 
Colors.PARAM_ENTRY_ENUM_CUSTOM_COLOR
+    def set_color(self, css_name):
+        self._input.get_child().set_name(
+            css_name if not self.has_custom_value else 'enum_custom'
         )
 
 
diff --git a/grc/gui/PropsDialog.py b/grc/gui/PropsDialog.py
index ca1e3c5..5f39770 100644
--- a/grc/gui/PropsDialog.py
+++ b/grc/gui/PropsDialog.py
@@ -180,7 +180,7 @@ class PropsDialog(Gtk.Dialog):
                 # repopulate the params box
                 box_all_valid = True
                 for param in self._block.params.values():
-                    # fixme: why do we even rebuild instead of really hiding 
params?
+                    # todo: why do we even rebuild instead of really hiding 
params?
                     if param.get_tab_label() != tab or param.get_hide() == 
'all':
                         continue
                     box_all_valid = box_all_valid and param.is_valid()
diff --git a/grc/gui/canvas/flowgraph.py b/grc/gui/canvas/flowgraph.py
index 2aa0d7c..ac15510 100644
--- a/grc/gui/canvas/flowgraph.py
+++ b/grc/gui/canvas/flowgraph.py
@@ -473,6 +473,7 @@ class FlowGraph(CoreFlowgraph, Drawable):
             element.create_shapes()
 
     def _drawables(self):
+        # todo: cache that
         show_comments = Actions.TOGGLE_SHOW_BLOCK_COMMENTS.get_active()
         for element in self._elements_to_draw:
             if element.is_block and show_comments and element.enabled:



reply via email to

[Prev in Thread] Current Thread [Next in Thread]