diff --git a/guake/boxes.py b/guake/boxes.py index 5233b0cf9..a2261044a 100644 --- a/guake/boxes.py +++ b/guake/boxes.py @@ -122,7 +122,7 @@ def _add_search_box(self): self.search_frame.get_style_context().add_class("background") css_provider = Gtk.CssProvider() css_provider.load_from_data( - b"#search-frame border {" b" padding: 5px 5px 5px 5px;" b" border: none;" b"}" + """#search-frame border { padding: 5px 5px 5px 5px; border: none;} notebook tab {padding:5px 5px 0px 5px; margin: 0px 0px 0px 0px;}""" ) Gtk.StyleContext.add_provider_for_screen( Gdk.Screen.get_default(), @@ -711,6 +711,21 @@ def on_rename(self, user_data): self.grab_focus_on_last_focused_terminal() + @save_tabs_when_changed + def on_tab_color_change(self, user_data): + HidePrevention(self.get_toplevel()).prevent() + dialog = Gtk.ColorChooserDialog(_("Select Color"), self.notebook.guake.window) + response = dialog.run() + if response == Gtk.ResponseType.OK: + color = dialog.get_rgba() + page_num = self.notebook.find_tab_index_by_label(self) + self.notebook.color_page(page_num, color, True) + dialog.destroy() + HidePrevention(self.get_toplevel()).allow() + self.grab_focus_on_last_focused_terminal() + + + @save_tabs_when_changed def on_reset_custom_colors(self, user_data): HidePrevention(self.get_toplevel()).prevent() diff --git a/guake/menus.py b/guake/menus.py index 60c5f29ab..267fb089e 100644 --- a/guake/menus.py +++ b/guake/menus.py @@ -25,6 +25,17 @@ def mk_tab_context_menu(callback_object): mi_reset_custom_colors = Gtk.MenuItem(_("Reset custom colors")) mi_reset_custom_colors.connect("activate", callback_object.on_reset_custom_colors) menu.add(mi_reset_custom_colors) + + menu.add(Gtk.SeparatorMenuItem()) + + mi_change_tab_colors = Gtk.MenuItem(_("Change tab colors")) + mi_change_tab_colors.connect("activate", callback_object.on_tab_color_change) + menu.add(mi_change_tab_colors) + menu.add(Gtk.SeparatorMenuItem()) + + + + mi_close = Gtk.MenuItem(_("Close")) mi_close.connect("activate", callback_object.on_close) menu.add(mi_close) diff --git a/guake/notebook.py b/guake/notebook.py index dc24559f0..ce188ebb6 100644 --- a/guake/notebook.py +++ b/guake/notebook.py @@ -172,7 +172,7 @@ def on_tab_selection(self, user_data): # ref: epiphany css_provider = Gtk.CssProvider() css_provider.load_from_data( - b"#popover-window list { border-style: none; background-color: transparent; }" + b"#popover-window list { border-style: none; background-color: transparent; }" ) Gtk.StyleContext.add_provider_for_screen( Gdk.Screen.get_default(), @@ -376,6 +376,11 @@ def new_page(self, directory=None, position=None, empty=False, open_tab_cwd=Fals root_terminal_box, None, position if position is not None else -1 ) self.set_tab_reorderable(root_terminal_box, True) + + + + + self.show_all() # needed to show newly added tabs and pages # this is needed because self.window.show_all() results in showing every # thing which includes the scrollbar too @@ -472,6 +477,27 @@ def rename_page(self, page_index, new_text, user_set=False): if user_set: setattr(page, "custom_label_set", new_text != "-") + def color_page(self, page_index, color, user_set=False): + page = self.get_nth_page(page_index) + #page.set_name("tab-label") + label = self.get_tab_label(page) + text_color = '#FFFFFF' if (color.red * 0.299 + color.green * 0.587 + color.blue * 0.114) > 186 else '#000000' + label.set_name("tab-label" + str(page_index)) + css = """notebook #tab-label{page_index} {{border:none; background-color: rgba({red}, {green}, {blue}, 1); color: {text_color}; }}""".format(page_index=page_index, + red=color.red *255, green=color.green*255, blue=color.blue*255, + text_color=text_color + ).encode() + + css_provider = Gtk.CssProvider() + css_provider.load_from_data(css) + + Gtk.StyleContext().add_provider_for_screen( + Gdk.Screen.get_default(), + css_provider, + Gtk.STYLE_PROVIDER_PRIORITY_APPLICATION, + ) + + def find_tab_index_by_label(self, eventbox): for index, tab_eventbox in enumerate(self.iter_tabs()): if eventbox is tab_eventbox: