Skip to content

Commit e7106a7

Browse files
committed
added background color and text color to tab label
1 parent 47312dc commit e7106a7

File tree

3 files changed

+53
-2
lines changed

3 files changed

+53
-2
lines changed

guake/boxes.py

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -122,7 +122,7 @@ def _add_search_box(self):
122122
self.search_frame.get_style_context().add_class("background")
123123
css_provider = Gtk.CssProvider()
124124
css_provider.load_from_data(
125-
b"#search-frame border {" b" padding: 5px 5px 5px 5px;" b" border: none;" b"}"
125+
"""#search-frame border { padding: 5px 5px 5px 5px; border: none;} notebook tab {padding:5px 5px 0px 5px; margin: 0px 0px 0px 0px;}"""
126126
)
127127
Gtk.StyleContext.add_provider_for_screen(
128128
Gdk.Screen.get_default(),
@@ -711,6 +711,20 @@ def on_rename(self, user_data):
711711

712712
self.grab_focus_on_last_focused_terminal()
713713

714+
@save_tabs_when_changed
715+
def on_tab_color_change(self, user_data):
716+
HidePrevention(self.get_toplevel()).prevent()
717+
dialog = Gtk.ColorChooserDialog(_("Select Color"), self.notebook.guake.window)
718+
if dialog.run() == Gtk.ResponseType.OK:
719+
color = dialog.get_rgba()
720+
dialog.destroy()
721+
page_num = self.notebook.find_tab_index_by_label(self)
722+
self.notebook.color_page(page_num, color, True)
723+
HidePrevention(self.get_toplevel()).allow()
724+
self.grab_focus_on_last_focused_terminal()
725+
726+
727+
714728
@save_tabs_when_changed
715729
def on_reset_custom_colors(self, user_data):
716730
HidePrevention(self.get_toplevel()).prevent()

guake/menus.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,17 @@ def mk_tab_context_menu(callback_object):
2525
mi_reset_custom_colors = Gtk.MenuItem(_("Reset custom colors"))
2626
mi_reset_custom_colors.connect("activate", callback_object.on_reset_custom_colors)
2727
menu.add(mi_reset_custom_colors)
28+
29+
menu.add(Gtk.SeparatorMenuItem())
30+
31+
mi_change_tab_colors = Gtk.MenuItem(_("Change tab colors"))
32+
mi_change_tab_colors.connect("activate", callback_object.on_tab_color_change)
33+
menu.add(mi_change_tab_colors)
34+
menu.add(Gtk.SeparatorMenuItem())
35+
36+
37+
38+
2839
mi_close = Gtk.MenuItem(_("Close"))
2940
mi_close.connect("activate", callback_object.on_close)
3041
menu.add(mi_close)

guake/notebook.py

Lines changed: 27 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -172,7 +172,7 @@ def on_tab_selection(self, user_data):
172172
# ref: epiphany
173173
css_provider = Gtk.CssProvider()
174174
css_provider.load_from_data(
175-
b"#popover-window list { border-style: none; background-color: transparent; }"
175+
b"#popover-window list { border-style: none; background-color: transparent; }"
176176
)
177177
Gtk.StyleContext.add_provider_for_screen(
178178
Gdk.Screen.get_default(),
@@ -376,6 +376,11 @@ def new_page(self, directory=None, position=None, empty=False, open_tab_cwd=Fals
376376
root_terminal_box, None, position if position is not None else -1
377377
)
378378
self.set_tab_reorderable(root_terminal_box, True)
379+
380+
381+
382+
383+
379384
self.show_all() # needed to show newly added tabs and pages
380385
# this is needed because self.window.show_all() results in showing every
381386
# thing which includes the scrollbar too
@@ -472,6 +477,27 @@ def rename_page(self, page_index, new_text, user_set=False):
472477
if user_set:
473478
setattr(page, "custom_label_set", new_text != "-")
474479

480+
def color_page(self, page_index, color, user_set=False):
481+
page = self.get_nth_page(page_index)
482+
#page.set_name("tab-label")
483+
label = self.get_tab_label(page)
484+
text_color = '#FFFFFF' if (color.red * 0.299 + color.green * 0.587 + color.blue * 0.114) > 186 else '#000000'
485+
label.set_name("tab-label" + str(page_index))
486+
css = """notebook #tab-label{page_index} {{border:none; background-color: rgba({red}, {green}, {blue}, 1); color: {text_color}; }}""".format(page_index=page_index,
487+
red=color.red *255, green=color.green*255, blue=color.blue*255,
488+
text_color=text_color
489+
).encode()
490+
491+
css_provider = Gtk.CssProvider()
492+
css_provider.load_from_data(css)
493+
494+
Gtk.StyleContext().add_provider_for_screen(
495+
Gdk.Screen.get_default(),
496+
css_provider,
497+
Gtk.STYLE_PROVIDER_PRIORITY_APPLICATION,
498+
)
499+
500+
475501
def find_tab_index_by_label(self, eventbox):
476502
for index, tab_eventbox in enumerate(self.iter_tabs()):
477503
if eventbox is tab_eventbox:

0 commit comments

Comments
 (0)