From 0e940aa4f07fba94110ade781b9fde9f6c1badcf Mon Sep 17 00:00:00 2001 From: itdominator <1itdominator@gmail.com> Date: Tue, 10 Oct 2023 04:04:53 -0500 Subject: [PATCH] Updated themeing css; temporary fix for zoom + mini view conflicts; cleanup --- .../widgets/base/sourceview/source_view.py | 26 +-- .../base/sourceview/source_view_events.py | 50 ++++-- src/core/widgets/miniview_widget.py | 6 +- user_config/usr/share/newton/stylesheet.css | 164 +++++++++++++++++- 4 files changed, 214 insertions(+), 32 deletions(-) diff --git a/src/core/widgets/base/sourceview/source_view.py b/src/core/widgets/base/sourceview/source_view.py index b520636..e9f3896 100644 --- a/src/core/widgets/base/sourceview/source_view.py +++ b/src/core/widgets/base/sourceview/source_view.py @@ -25,22 +25,21 @@ class SourceView(SourceViewEventsMixin, GtkSource.View): self._language_manager = GtkSource.LanguageManager() self._style_scheme_manager = GtkSource.StyleSchemeManager() - self._general_style_tag = None self._file_loader = None self._file_change_watcher = None self._file_cdr_watcher = None - self._last_eve_in_queue = None self._current_file: Gio.File = None self._current_filename: str = "" self._current_filepath: str = None self._current_filetype: str = "buffer" - self.skip_file_load = False + self._skip_file_load = False self._is_changed = False self._ignore_internal_change = False self._buffer = self.get_buffer() self._completion = self.get_completion() + self.px_value = 16 self._multi_insert_marks = [] self.freeze_multi_line_insert = False @@ -53,6 +52,9 @@ class SourceView(SourceViewEventsMixin, GtkSource.View): def _setup_styling(self): + ctx = self.get_style_context() + ctx.add_class("source-view") + self.set_show_line_marks(True) self.set_show_line_numbers(True) self.set_smart_backspace(True) @@ -71,6 +73,7 @@ class SourceView(SourceViewEventsMixin, GtkSource.View): self.set_vexpand(True) + def _setup_signals(self): self.connect("focus", self._on_widget_focus) self.connect("focus-in-event", self._focus_in_event) @@ -108,9 +111,9 @@ class SourceView(SourceViewEventsMixin, GtkSource.View): def _create_default_tag(self): - self._general_style_tag = self._buffer.create_tag('general_style') - self._general_style_tag.set_property('size', 100) - self._general_style_tag.set_property('scale', 100) + general_style_tag = self._buffer.create_tag('general_style') + general_style_tag.set_property('size', 100) + general_style_tag.set_property('scale', 100) def _is_modified(self, *args): self._is_changed = True @@ -148,9 +151,10 @@ class SourceView(SourceViewEventsMixin, GtkSource.View): def _on_cursor_move(self, buf, cursor_iter, mark, user_data = None): if mark != buf.get_insert(): return + self.update_cursor_position() - # NOTE: Not sure but this might not be efficient if the map reloads the same view. + # NOTE: Not sure but this might not be efficient if the map reloads the same view... event_system.emit(f"set_source_view", (self,)) def _button_release_event(self, widget = None, eve = None, user_data = None): @@ -171,8 +175,7 @@ class SourceView(SourceViewEventsMixin, GtkSource.View): self.drag_dest_set_target_list(targets) def _on_drag_data_received(self, widget, drag_context, x, y, data, info, time): - if info == 70: - return + if info == 70: return if info == 80: uris = data.get_uris() @@ -209,8 +212,7 @@ class SourceView(SourceViewEventsMixin, GtkSource.View): self._file_change_watcher.connect("changed", self._file_monitor) def _file_monitor(self, file_monitor, file, other_file = None, eve_type = None, data = None): - if not file.get_path() == self._current_file.get_path(): - return + if not file.get_path() == self._current_file.get_path(): return if eve_type in [Gio.FileMonitorEvent.CREATED, Gio.FileMonitorEvent.DELETED, @@ -252,4 +254,4 @@ class SourceView(SourceViewEventsMixin, GtkSource.View): f.write(text) f.close() - return gfile \ No newline at end of file + return gfile diff --git a/src/core/widgets/base/sourceview/source_view_events.py b/src/core/widgets/base/sourceview/source_view_events.py index 81e9f1c..f8d5638 100644 --- a/src/core/widgets/base/sourceview/source_view_events.py +++ b/src/core/widgets/base/sourceview/source_view_events.py @@ -26,21 +26,39 @@ class SourceViewEventsMixin: self.set_highlight_current_line( not self.get_highlight_current_line() ) def scale_up_text(self, scale_step = 10): - current_scale = self._general_style_tag.get_property('scale') - start_itr = self._buffer.get_start_iter() - end_itr = self._buffer.get_end_iter() + ctx = self.get_style_context() - self._general_style_tag.set_property('scale', current_scale + scale_step) - self._buffer.apply_tag(self._general_style_tag, start_itr, end_itr) + if self.px_value < 99: + self.px_value += 1 + + ctx.add_class(f"px{self.px_value}") + + # NOTE: Hope to bring this or similar back after we decouple scaling issues coupled with the miniview. + # tag_table = self._buffer.get_tag_table() + # start_itr = self._buffer.get_start_iter() + # end_itr = self._buffer.get_end_iter() + # tag = tag_table.lookup('general_style') + # + # tag.set_property('scale', tag.get_property('scale') + scale_step) + # self._buffer.apply_tag(tag, start_itr, end_itr) def scale_down_text(self, scale_step = 10): - tag_table = self._buffer.get_tag_table() - start_itr = self._buffer.get_start_iter() - end_itr = self._buffer.get_end_iter() - tag = tag_table.lookup('general_style') + ctx = self.get_style_context() - tag.set_property('scale', tag.get_property('scale') - scale_step) - self._buffer.apply_tag(tag, start_itr, end_itr) + ctx.remove_class(f"px{self.px_value}") + if self.px_value > 1: + self.px_value -= 1 + + ctx.add_class(f"px{self.px_value}") + + # NOTE: Hope to bring this or similar back after we decouple scaling issues coupled with the miniview. + # tag_table = self._buffer.get_tag_table() + # start_itr = self._buffer.get_start_iter() + # end_itr = self._buffer.get_end_iter() + # tag = tag_table.lookup('general_style') + # + # tag.set_property('scale', tag.get_property('scale') - scale_step) + # self._buffer.apply_tag(tag, start_itr, end_itr) def update_cursor_position(self): iter = self._buffer.get_iter_at_mark( self._buffer.get_insert() ) @@ -103,15 +121,15 @@ class SourceViewEventsMixin: self._create_file_watcher(gfile) def save_file(self): - self.skip_file_load = True + self._skip_file_load = True gfile = event_system.emit_and_await("save_file_dialog", (self._current_filename, self._current_file)) if not self._current_file else self._current_file if not gfile: - self.skip_file_load = False + self._skip_file_load = False return self.open_file( self._write_file(gfile) ) - self.skip_file_load = False + self._skip_file_load = False def save_file_as(self): gfile = event_system.emit_and_await("save_file_dialog", (self._current_filename, self._current_file)) @@ -136,7 +154,7 @@ class SourceViewEventsMixin: self._current_filetype = info.get_content_type() def load_file_async(self, gfile, line: int = 0): - if self.skip_file_load: + if self._skip_file_load: self.update_labels(gfile) return @@ -170,4 +188,4 @@ class SourceViewEventsMixin: if not gfile: return event_system.emit("set_bottom_labels", (gfile, None, self._current_filetype, None)) - self.update_cursor_position() \ No newline at end of file + self.update_cursor_position() diff --git a/src/core/widgets/miniview_widget.py b/src/core/widgets/miniview_widget.py index 214a0d7..79b58af 100644 --- a/src/core/widgets/miniview_widget.py +++ b/src/core/widgets/miniview_widget.py @@ -24,12 +24,14 @@ class MiniViewWidget(Map): def _setup_styling(self): self.set_hexpand(False) + ctx = self.get_style_context() + ctx.add_class("mini-view") def _setup_signals(self): - event_system.subscribe(f"set_source_view", self.set_source_view) + ... def _subscribe_to_events(self): - ... + event_system.subscribe(f"set_source_view", self.set_source_view) def _load_widgets(self): ... diff --git a/user_config/usr/share/newton/stylesheet.css b/user_config/usr/share/newton/stylesheet.css index e175263..f4b05a9 100644 --- a/user_config/usr/share/newton/stylesheet.css +++ b/user_config/usr/share/newton/stylesheet.css @@ -1,8 +1,36 @@ -* { - background: rgba(39, 43, 52, 0.24); +/* Make most desired things base transparent */ +window > box, +window > box > box, +window > box > box > paned, +window > box > box > paned > notebook, +window > box > box > paned > notebook > stack, +window > box > box > paned > notebook > stack scrolledwindow > textview > * { + background: rgba(0, 0, 0, 0.0); color: rgba(255, 255, 255, 1); } +/* Top controls */ +window > box > box > button +window > box > box > buttonbox > button { + background: rgba(39, 43, 52, 0.64); + margin-left: 12px; + margin-right: 12px; +} + +/* status bar */ +window > box > statusbar { + background: rgba(39, 43, 52, 0.64); + padding-left: 96px; + padding-right: 96px; +} + +/* source code notebooks */ +window > box > box > paned > notebook > stack scrolledwindow > textview { + background: rgba(39, 43, 52, 0.64); + color: rgba(255, 255, 255, 1); +} + +/* make text selection slightly transparent */ * selection { background-color: rgba(0, 115, 115, 0.34); /* Bergundy */ @@ -11,6 +39,138 @@ } + + + +.source-view, +.mini-view { + font-family: Monospace; +} + + + + + .error_txt { color: rgb(170, 18, 18); } .warning_txt { color: rgb(255, 168, 0); } .success_txt { color: rgb(136, 204, 39); } + + + + +.mini-view { font-size: 1px; } + +/* + Need these because updating buffer with get_tag_table and tags updates minimap to the same size due to its mapping structure... + I've tried initial looks at: + https://github.com/johnfactotum/gedit-restore-minimap + which is re-adding minimap to gedit and they just used the below code snippit which still didn't work for me. + + desc = Pango.FontDescription(default_font) + desc.set_size(Pango.SCALE) # set size to 1pt + desc.set_family('BuilderBlocks,' + desc.get_family()) + self.source_map.set_property('font-desc', desc) + + So now we do this monstrocity until I can figure out what is needed to make something better work. + +*/ +.px1 { font-size: 1px; } +.px2 { font-size: 2px; } +.px3 { font-size: 3px; } +.px4 { font-size: 4px; } +.px5 { font-size: 5px; } +.px6 { font-size: 6px; } +.px7 { font-size: 7px; } +.px8 { font-size: 8px; } +.px9 { font-size: 9px; } +.px10 { font-size: 10px; } +.px11 { font-size: 11px; } +.source-view, +.px12 { font-size: 12px; } +.px13 { font-size: 13px; } +.px14 { font-size: 14px; } +.px15 { font-size: 15px; } +.px16 { font-size: 16px; } +.px17 { font-size: 17px; } +.px18 { font-size: 18px; } +.px19 { font-size: 19px; } +.px20 { font-size: 20px; } +.px21 { font-size: 21px; } +.px22 { font-size: 22px; } +.px23 { font-size: 23px; } +.px24 { font-size: 24px; } +.px25 { font-size: 25px; } +.px26 { font-size: 26px; } +.px27 { font-size: 27px; } +.px28 { font-size: 28px; } +.px29 { font-size: 29px; } +.px30 { font-size: 30px; } +.px31 { font-size: 31px; } +.px32 { font-size: 32px; } +.px33 { font-size: 33px; } +.px34 { font-size: 34px; } +.px35 { font-size: 35px; } +.px36 { font-size: 36px; } +.px37 { font-size: 37px; } +.px38 { font-size: 38px; } +.px39 { font-size: 39px; } +.px40 { font-size: 40px; } +.px41 { font-size: 41px; } +.px42 { font-size: 42px; } +.px43 { font-size: 43px; } +.px44 { font-size: 44px; } +.px45 { font-size: 45px; } +.px46 { font-size: 46px; } +.px47 { font-size: 47px; } +.px48 { font-size: 48px; } +.px49 { font-size: 49px; } +.px50 { font-size: 50px; } +.px51 { font-size: 51px; } +.px52 { font-size: 52px; } +.px53 { font-size: 53px; } +.px54 { font-size: 54px; } +.px55 { font-size: 55px; } +.px56 { font-size: 56px; } +.px57 { font-size: 57px; } +.px58 { font-size: 58px; } +.px59 { font-size: 59px; } +.px60 { font-size: 60px; } +.px61 { font-size: 61px; } +.px62 { font-size: 62px; } +.px63 { font-size: 63px; } +.px64 { font-size: 64px; } +.px65 { font-size: 65px; } +.px66 { font-size: 66px; } +.px67 { font-size: 67px; } +.px68 { font-size: 68px; } +.px69 { font-size: 69px; } +.px70 { font-size: 70px; } +.px71 { font-size: 71px; } +.px72 { font-size: 72px; } +.px73 { font-size: 73px; } +.px74 { font-size: 74px; } +.px75 { font-size: 75px; } +.px76 { font-size: 76px; } +.px77 { font-size: 77px; } +.px78 { font-size: 78px; } +.px79 { font-size: 79px; } +.px80 { font-size: 80px; } +.px81 { font-size: 81px; } +.px82 { font-size: 82px; } +.px83 { font-size: 83px; } +.px84 { font-size: 84px; } +.px85 { font-size: 85px; } +.px86 { font-size: 86px; } +.px87 { font-size: 87px; } +.px88 { font-size: 88px; } +.px89 { font-size: 89px; } +.px90 { font-size: 90px; } +.px91 { font-size: 91px; } +.px92 { font-size: 92px; } +.px93 { font-size: 93px; } +.px94 { font-size: 94px; } +.px95 { font-size: 95px; } +.px96 { font-size: 96px; } +.px97 { font-size: 97px; } +.px98 { font-size: 98px; } +.px99 { font-size: 99px; }