diff options
author | Sebastian Koslowski <koslowski@kit.edu> | 2017-01-07 21:02:15 +0100 |
---|---|---|
committer | Sebastian Koslowski <koslowski@kit.edu> | 2017-01-11 14:07:13 +0100 |
commit | c52deb5f43cfd5a7083f3568719d88ac09ac838f (patch) | |
tree | ff2c5523caaabae3733e4f96f66232b2feca613f | |
parent | 2a5403ce818a9dfd72a3965e138c8d9fb035a1ac (diff) |
grc: gtk3: reimplemented custom bg colors for param entry boxes
-rw-r--r-- | grc/gui/Colors.py | 76 | ||||
-rw-r--r-- | grc/gui/Dialogs.py | 6 | ||||
-rw-r--r-- | grc/gui/DrawingArea.py | 2 | ||||
-rw-r--r-- | grc/gui/ParamWidgets.py | 57 | ||||
-rw-r--r-- | grc/gui/PropsDialog.py | 2 | ||||
-rw-r--r-- | 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 01c461ada5..17eb151847 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 09ecd48a13..51213a6154 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 2e26c265a9..1a75e2d03b 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 b79a85623f..b56eace402 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 ca1e3c5296..5f39770e78 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 2aa0d7c12f..ac15510072 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: |