From 9a255691a9488cb64c4d01ab19d61e5984506651 Mon Sep 17 00:00:00 2001 From: stsdc <6031763+stsdc@users.noreply.github.com> Date: Tue, 19 Sep 2023 15:37:15 +0200 Subject: [PATCH 01/18] Update some deps for gtk4 --- meson.build | 11 ++--- src/MainWindow.vala | 16 ++++---- src/Services/Shortcuts.vala | 80 ++++++++++++++++++------------------- subprojects/live-chart | 2 +- 4 files changed, 55 insertions(+), 54 deletions(-) diff --git a/meson.build b/meson.build index 2c47b0f3..40991789 100644 --- a/meson.build +++ b/meson.build @@ -16,6 +16,7 @@ add_global_arguments('-DGETTEXT_PACKAGE="@0@"'.format(meson.project_name()), lan add_project_arguments(['--vapidir', vapidir], language: 'vala') add_project_arguments(['-DWNCK_I_KNOW_THIS_IS_UNSTABLE', '-w'], language: 'c') +# add_project_arguments(['-DGDK_DISABLE_DEPRECATED -DGTK_DISABLE_DEPRECATED'], language: 'c') livechart_proj = subproject('live-chart') @@ -24,16 +25,16 @@ livechart_proj = subproject('live-chart') # elementary_stylesheet = subproject('stylesheet') app_dependencies = [ - dependency('granite', version: '>= 5.2.0'), + dependency('granite-7'), dependency('glib-2.0'), - dependency('gtk+-3.0'), + dependency('gtk4'), dependency('gee-0.8'), dependency('gio-2.0'), dependency('gobject-2.0'), dependency('libgtop-2.0'), - dependency('libwnck-3.0'), - dependency('libhandy-1', version: '>=0.90.0'), - dependency('gdk-x11-3.0'), + dependency('libwnck-3.0', version: '>=40.1'), + dependency('libadwaita-1', version: '>=1.0.0'), + dependency('gtk4-x11'), dependency('x11'), dependency('udisks2'), dependency('json-glib-1.0'), diff --git a/src/MainWindow.vala b/src/MainWindow.vala index eba8a92b..2a09d7dc 100644 --- a/src/MainWindow.vala +++ b/src/MainWindow.vala @@ -7,8 +7,8 @@ public class Monitor.MainWindow : Hdy.ApplicationWindow { // Widgets public Headerbar headerbar; - public ProcessView process_view; - public SystemView system_view; + // public ProcessView process_view; + // public SystemView system_view; public ContainerView container_view; private Gtk.Stack stack; @@ -30,14 +30,14 @@ public class Monitor.MainWindow : Hdy.ApplicationWindow { resources = new Resources (); - process_view = new ProcessView (); - system_view = new SystemView (resources); + // process_view = new ProcessView (); + // system_view = new SystemView (resources); container_view = new ContainerView (); stack = new Gtk.Stack (); stack.set_transition_type (Gtk.StackTransitionType.SLIDE_LEFT_RIGHT); - stack.add_titled (process_view, "process_view", _("Processes")); - stack.add_titled (system_view, "system_view", _("System")); + // stack.add_titled (process_view, "process_view", _("Processes")); + // stack.add_titled (system_view, "system_view", _("System")); if (MonitorApp.settings.get_boolean ("containers-view-state")) { stack.add_titled (container_view, "container_view", _("Containers")); @@ -77,14 +77,14 @@ public class Monitor.MainWindow : Hdy.ApplicationWindow { new Thread ("upd", () => { Timeout.add_seconds (MonitorApp.settings.get_int ("update-time"), () => { - process_view.update (); + // process_view.update (); container_view.update (); Idle.add (() => { - system_view.update (); + // system_view.update (); dbusserver.indicator_state (MonitorApp.settings.get_boolean ("indicator-state")); var res = resources.serialize (); statusbar.update (res); diff --git a/src/Services/Shortcuts.vala b/src/Services/Shortcuts.vala index 5abfb5c7..7e46f46c 100644 --- a/src/Services/Shortcuts.vala +++ b/src/Services/Shortcuts.vala @@ -15,47 +15,47 @@ public class Monitor.Shortcuts : Object { handled = true; } - if ((e.state & Gdk.ModifierType.CONTROL_MASK) != 0) { - switch (e.keyval) { - case Gdk.Key.f: - window.headerbar.search.activate_entry (); - handled = true; - break; - case Gdk.Key.e: - window.process_view.process_tree_view.end_process (); - handled = true; - break; - case Gdk.Key.k: - window.process_view.process_tree_view.kill_process (); - handled = true; - break; - case Gdk.Key.comma: - handled = true; - break; - case Gdk.Key.period: - handled = true; - break; - default: - break; - } - } + // if ((e.state & Gdk.ModifierType.CONTROL_MASK) != 0) { + // switch (e.keyval) { + // case Gdk.Key.f: + // window.headerbar.search.activate_entry (); + // handled = true; + // break; + // case Gdk.Key.e: + // // window.process_view.process_tree_view.end_process (); + // handled = true; + // break; + // case Gdk.Key.k: + // // window.process_view.process_tree_view.kill_process (); + // handled = true; + // break; + // case Gdk.Key.comma: + // handled = true; + // break; + // case Gdk.Key.period: + // handled = true; + // break; + // default: + // break; + // } + // } - switch (e.keyval) { - case Gdk.Key.Return: - window.process_view.process_tree_view.focus_on_first_row (); - handled = true; - break; - case Gdk.Key.Left: - window.process_view.process_tree_view.collapse (); - handled = true; - break; - case Gdk.Key.Right: - window.process_view.process_tree_view.expanded (); - handled = true; - break; - default: - break; - } + // switch (e.keyval) { + // case Gdk.Key.Return: + // // window.process_view.process_tree_view.focus_on_first_row (); + // handled = true; + // break; + // case Gdk.Key.Left: + // // window.process_view.process_tree_view.collapse (); + // handled = true; + // break; + // case Gdk.Key.Right: + // // window.process_view.process_tree_view.expanded (); + // handled = true; + // break; + // default: + // break; + // } return handled; } diff --git a/subprojects/live-chart b/subprojects/live-chart index 5f8ddce7..843efd30 160000 --- a/subprojects/live-chart +++ b/subprojects/live-chart @@ -1 +1 @@ -Subproject commit 5f8ddce715f6a9130955bc5f08437050265a317c +Subproject commit 843efd30f129e62b0251a2d89d2655eb948dcd44 From a396210c90e26d47ee333ee6b5636cc159f2fa52 Mon Sep 17 00:00:00 2001 From: stsdc <6031763+stsdc@users.noreply.github.com> Date: Sun, 29 Oct 2023 22:11:04 +0100 Subject: [PATCH 02/18] wip --- meson.build | 4 +- src/MainWindow.vala | 58 ++++++++------- src/Managers/Process.vala | 8 +- src/Monitor.vala | 5 +- src/Services/Appearance.vala | 6 +- src/Services/Shortcuts.vala | 12 +-- .../ProcessInfoView/Preventor.vala | 8 +- .../ProcessInfoView/ProcessInfoCPURAM.vala | 4 +- .../ProcessInfoView/ProcessInfoHeader.vala | 14 ++-- .../ProcessInfoView/ProcessInfoIOStats.vala | 4 +- .../ProcessInfoView/ProcessInfoView.vala | 31 ++++---- src/Views/ProcessView/ProcessView.vala | 14 ++-- .../SystemView/SystemCPUInfoPopover.vala | 53 +++++++------ src/Views/SystemView/SystemCPUView.vala | 24 ++++-- src/Views/SystemView/SystemGPUView.vala | 24 ++++-- src/Views/SystemView/SystemMemoryView.vala | 5 +- src/Views/SystemView/SystemNetworkView.vala | 22 ++++-- src/Views/SystemView/SystemStorageView.vala | 74 ++++++++++++------- src/Views/SystemView/SystemView.vala | 23 +++--- src/Widgets/Headerbar/Headerbar.vala | 18 ++--- src/Widgets/Labels/LabelVertical.vala | 14 ++-- src/Widgets/Statusbar/Statusbar.vala | 6 +- .../WidgetResource/WidgetResource.vala | 42 ++++++----- subprojects/live-chart | 2 +- 24 files changed, 280 insertions(+), 195 deletions(-) diff --git a/meson.build b/meson.build index 40991789..e1b020e8 100644 --- a/meson.build +++ b/meson.build @@ -32,10 +32,10 @@ app_dependencies = [ dependency('gio-2.0'), dependency('gobject-2.0'), dependency('libgtop-2.0'), - dependency('libwnck-3.0', version: '>=40.1'), + #dependency('libwnck-3.0', version: '>=40.1'), dependency('libadwaita-1', version: '>=1.0.0'), dependency('gtk4-x11'), - dependency('x11'), + # dependency('x11'), dependency('udisks2'), dependency('json-glib-1.0'), dependency('flatpak'), diff --git a/src/MainWindow.vala b/src/MainWindow.vala index 2a09d7dc..81e6e79c 100644 --- a/src/MainWindow.vala +++ b/src/MainWindow.vala @@ -1,4 +1,4 @@ -public class Monitor.MainWindow : Hdy.ApplicationWindow { +public class Monitor.MainWindow : Adw.ApplicationWindow { // application reference private Shortcuts shortcuts; @@ -19,7 +19,7 @@ public class Monitor.MainWindow : Hdy.ApplicationWindow { // Constructs a main window public MainWindow (MonitorApp app) { - Hdy.init (); + Adw.init (); this.set_application (app); setup_window_state (); @@ -49,10 +49,9 @@ public class Monitor.MainWindow : Hdy.ApplicationWindow { stack_switcher.set_stack (stack); headerbar = new Headerbar (this); - headerbar.set_custom_title (stack_switcher); - var sv = new PreferencesView (); - headerbar.preferences_grid.add (sv); - sv.show_all (); + headerbar.set_title_widget (stack_switcher); + headerbar.preferences_grid.attach (new PreferencesView (), 0, 0, 1, 1); + // sv.show_all (); statusbar = new Statusbar (); @@ -60,13 +59,13 @@ public class Monitor.MainWindow : Hdy.ApplicationWindow { orientation = Gtk.Orientation.VERTICAL }; - grid.add (headerbar); - grid.add (stack); - grid.add (statusbar); + grid.attach (headerbar, 0, 0, 1, 1); + grid.attach (stack, 0, 1, 1, 1); + grid.attach (statusbar, 0, 2, 1, 1); - add (grid); + set_content (grid); - show_all (); + present (); dbusserver = DBusServer.get_default (); @@ -98,35 +97,38 @@ public class Monitor.MainWindow : Hdy.ApplicationWindow { dbusserver.quit.connect (() => app.quit ()); dbusserver.show.connect (() => { - this.deiconify (); + // this.deiconify (); this.present (); setup_window_state (); - this.show_all (); + this.present (); }); shortcuts = new Shortcuts (this); key_press_event.connect ((e) => shortcuts.handle (e)); - this.delete_event.connect (() => { - int window_width, window_height, position_x, position_y; - get_size (out window_width, out window_height); - get_position (out position_x, out position_y); + app.window_removed.connect (() => { + int position_x, position_y; + int window_width = get_size (Gtk.Orientation.HORIZONTAL); + int window_height = get_size (Gtk.Orientation.VERTICAL); + // get_position (out position_x, out position_y); MonitorApp.settings.set_int ("window-width", window_width); MonitorApp.settings.set_int ("window-height", window_height); MonitorApp.settings.set_int ("position-x", position_x); MonitorApp.settings.set_int ("position-y", position_y); - MonitorApp.settings.set_boolean ("is-maximized", this.is_maximized); + // MonitorApp.settings.set_boolean ("is-maximized", this.is_maximized); MonitorApp.settings.set_string ("opened-view", stack.visible_child_name); if (MonitorApp.settings.get_boolean ("indicator-state")) { - this.hide_on_delete (); + // Read: https://discourse.gnome.org/t/how-to-hide-widget-instead-removing-them-in-gtk-4/8176 + // this.hide_on_delete (); + } else { dbusserver.indicator_state (false); app.quit (); } - return true; + // return true; }); dbusserver.indicator_state (MonitorApp.settings.get_boolean ("indicator-state")); @@ -144,12 +146,16 @@ public class Monitor.MainWindow : Hdy.ApplicationWindow { int position_x = MonitorApp.settings.get_int ("position-x"); int position_y = MonitorApp.settings.get_int ("position-y"); - if (position_x == -1 || position_y == -1) { - // -1 is default value of these keys, which means this is the first launch - this.window_position = Gtk.WindowPosition.CENTER; - } else { - move (position_x, position_y); - } + + // Can't move window to a specific position in GTK4 + // Read: https://discourse.gnome.org/t/how-to-center-gtkwindows-in-gtk4/3112 + + // if (position_x == -1 || position_y == -1) { + // // -1 is default value of these keys, which means this is the first launch + // this.window_position = Gtk.WindowPosition.CENTER; + // } else { + // move (position_x, position_y); + // } } } diff --git a/src/Managers/Process.vala b/src/Managers/Process.vala index ff55c5f1..7e538817 100644 --- a/src/Managers/Process.vala +++ b/src/Managers/Process.vala @@ -318,10 +318,10 @@ public class Monitor.Process : GLib.Object { mem_usage = (proc_mem.resident - proc_mem.share) / 1024; // in KiB // also if it is using X Window Server - if (Gdk.Display.get_default () is Gdk.X11.Display) { - Wnck.ResourceUsage resu = Wnck.ResourceUsage.pid_read (Gdk.Display.get_default (), stat.pid); - mem_usage += (resu.total_bytes_estimate / 1024); - } + // if (Gdk.Display.get_default () is Gdk.X11.Display) { + // Wnck.ResourceUsage resu = Wnck.ResourceUsage.pid_read (Gdk.Display.get_default (), stat.pid); + // mem_usage += (resu.total_bytes_estimate / 1024); + // } var total_installed_memory = (double) mem.total / 1024; mem_percentage = (mem_usage / total_installed_memory) * 100; diff --git a/src/Monitor.vala b/src/Monitor.vala index 4d2d1aad..172b1de6 100644 --- a/src/Monitor.vala +++ b/src/Monitor.vala @@ -29,7 +29,6 @@ namespace Monitor { public override void activate () { // only have one window if (get_windows () != null) { - window.show_all (); window.present (); return; } @@ -60,10 +59,10 @@ namespace Monitor { window.hide (); MonitorApp.settings.set_boolean ("background-state", true); } else { - window.show_all (); + window.present (); } - window.process_view.process_tree_view.focus_on_first_row (); + // window.process_view.process_tree_view.focus_on_first_row (); var quit_action = new SimpleAction ("quit", null); add_action (quit_action); diff --git a/src/Services/Appearance.vala b/src/Services/Appearance.vala index dda40d2d..b127f520 100644 --- a/src/Services/Appearance.vala +++ b/src/Services/Appearance.vala @@ -15,7 +15,8 @@ public class Monitor.Appearance : Object { provider.load_from_resource ("/com/github/stsdc/monitor/monitor-light.css"); } - Gtk.StyleContext.add_provider_for_screen (Gdk.Screen.get_default (), provider, Gtk.STYLE_PROVIDER_PRIORITY_APPLICATION); + // @TODO: Fix styles + // Gtk.StyleContext.add_provider_for_screen (Gdk.Screen.get_default (), provider, Gtk.STYLE_PROVIDER_PRIORITY_APPLICATION); // We listen to changes in Granite.Settings and update our app if the user changes their preference granite_settings.notify["prefers-color-scheme"].connect (() => { @@ -37,7 +38,8 @@ public class Monitor.Appearance : Object { debug ("Retrofitting styles to make Monitor usable with a current theme."); var provider = new Gtk.CssProvider (); provider.load_from_resource ("/com/github/stsdc/monitor/monitor-retrofit.css"); - Gtk.StyleContext.add_provider_for_screen (Gdk.Screen.get_default (), provider, Gtk.STYLE_PROVIDER_PRIORITY_APPLICATION); + // @TODO: Fix retrofitting styles + // Gtk.StyleContext.add_provider_for_screen (Gdk.Screen.get_default (), provider, Gtk.STYLE_PROVIDER_PRIORITY_APPLICATION); } } } diff --git a/src/Services/Shortcuts.vala b/src/Services/Shortcuts.vala index 7e46f46c..a8e6962d 100644 --- a/src/Services/Shortcuts.vala +++ b/src/Services/Shortcuts.vala @@ -6,14 +6,14 @@ public class Monitor.Shortcuts : Object { this.window = window; } - public bool handle (Gdk.EventKey e) { + public bool handle (Gdk.KeyEvent e) { handled = false; - char typed = e.str[0]; + // char typed = e.str[0]; - if (typed.isalnum () && !window.headerbar.search.is_focus) { - window.headerbar.search.activate_entry (e.str); - handled = true; - } + // if (typed.isalnum () && !window.headerbar.search.is_focus) { + // window.headerbar.search.activate_entry (e.str); + // handled = true; + // } // if ((e.state & Gdk.ModifierType.CONTROL_MASK) != 0) { // switch (e.keyval) { diff --git a/src/Views/ProcessView/ProcessInfoView/Preventor.vala b/src/Views/ProcessView/ProcessInfoView/Preventor.vala index 2270c5e3..8ebc8a34 100644 --- a/src/Views/ProcessView/ProcessInfoView/Preventor.vala +++ b/src/Views/ProcessView/ProcessInfoView/Preventor.vala @@ -22,13 +22,13 @@ public class Monitor.Preventor : Gtk.Stack { confirm_button = new Gtk.Button.with_label (_("Yes")); confirm_button.margin_end = 10; - confirm_button.get_style_context ().add_class (Gtk.STYLE_CLASS_DESTRUCTIVE_ACTION); + // confirm_button.get_style_context ().add_class (Gtk.STYLE_CLASS_DESTRUCTIVE_ACTION); deny_button = new Gtk.Button.with_label (_("No")); - preventive_action_bar.add (confirmation_label); - preventive_action_bar.add (confirm_button); - preventive_action_bar.add (deny_button); + preventive_action_bar.append (confirmation_label); + preventive_action_bar.append (confirm_button); + preventive_action_bar.append (deny_button); } public Preventor (Gtk.Widget _child, string name) { diff --git a/src/Views/ProcessView/ProcessInfoView/ProcessInfoCPURAM.vala b/src/Views/ProcessView/ProcessInfoView/ProcessInfoCPURAM.vala index 3e98578b..22887513 100644 --- a/src/Views/ProcessView/ProcessInfoView/ProcessInfoCPURAM.vala +++ b/src/Views/ProcessView/ProcessInfoView/ProcessInfoCPURAM.vala @@ -21,10 +21,10 @@ public class Monitor.ProcessInfoCPURAM : Gtk.Grid { ram_chart.height_request = 60; var cpu_graph_box = new Gtk.Box (Gtk.Orientation.HORIZONTAL, 0); - cpu_graph_box.add (cpu_chart); + cpu_graph_box.append (cpu_chart); var mem_graph_box = new Gtk.Box (Gtk.Orientation.HORIZONTAL, 0); - mem_graph_box.add (ram_chart); + mem_graph_box.append (ram_chart); cpu_label = new Gtk.Label ("CPU: " + Utils.NO_DATA); cpu_label.get_style_context ().add_class (Granite.STYLE_CLASS_H4_LABEL); diff --git a/src/Views/ProcessView/ProcessInfoView/ProcessInfoHeader.vala b/src/Views/ProcessView/ProcessInfoView/ProcessInfoHeader.vala index 84f5aa43..b4840181 100644 --- a/src/Views/ProcessView/ProcessInfoView/ProcessInfoHeader.vala +++ b/src/Views/ProcessView/ProcessInfoView/ProcessInfoHeader.vala @@ -20,7 +20,7 @@ public class Monitor.ProcessInfoHeader : Gtk.Grid { regex = /(?i:^.*\.(xpm|png)$)/; // vala-lint=space-before-paren, /* *INDENT-ON* */ - icon = new Gtk.Image.from_icon_name ("application-x-executable", Gtk.IconSize.DIALOG); + icon = new Gtk.Image.from_icon_name ("application-x-executable"); icon.set_pixel_size (64); icon.valign = Gtk.Align.END; @@ -50,11 +50,11 @@ public class Monitor.ProcessInfoHeader : Gtk.Grid { username = new LabelRoundy (""); var wrapper = new Gtk.Box (Gtk.Orientation.HORIZONTAL, 0); - wrapper.add (pid); - wrapper.add (priority); - wrapper.add (nice); - wrapper.add (num_threads); - wrapper.add (username); + wrapper.append (pid); + wrapper.append (priority); + wrapper.append (nice); + wrapper.append (num_threads); + wrapper.append (username); attach (icon_container, 0, 0, 1, 2); attach (application_name, 1, 0, 3, 1); @@ -96,7 +96,7 @@ public class Monitor.ProcessInfoHeader : Gtk.Grid { var icon_name = process.icon.to_string (); if (!regex.match (icon_name)) { - icon.set_from_icon_name (icon_name, Gtk.IconSize.DIALOG); + icon.set_from_icon_name (icon_name); } else { try { var pixbuf = new Gdk.Pixbuf.from_file_at_size (icon_name, 48, -1); diff --git a/src/Views/ProcessView/ProcessInfoView/ProcessInfoIOStats.vala b/src/Views/ProcessView/ProcessInfoView/ProcessInfoIOStats.vala index 7576e021..177eaf21 100644 --- a/src/Views/ProcessView/ProcessInfoView/ProcessInfoIOStats.vala +++ b/src/Views/ProcessView/ProcessInfoView/ProcessInfoIOStats.vala @@ -49,9 +49,9 @@ public class Monitor.ProcessInfoIOStats : Gtk.Grid { // attach (opened_files_label, 0, 3, 3, 1); var model = new OpenFilesTreeViewModel (); - var open_files_tree_view_scrolled = new Gtk.ScrolledWindow (null, null); + var open_files_tree_view_scrolled = new Gtk.ScrolledWindow (); open_files_tree_view = new OpenFilesTreeView (model); - open_files_tree_view_scrolled.add (open_files_tree_view); + open_files_tree_view_scrolled.set_child (open_files_tree_view); attach (open_files_tree_view_scrolled, 0, 4, 3, 1); } diff --git a/src/Views/ProcessView/ProcessInfoView/ProcessInfoView.vala b/src/Views/ProcessView/ProcessInfoView/ProcessInfoView.vala index 04fac337..b14b8821 100644 --- a/src/Views/ProcessView/ProcessInfoView/ProcessInfoView.vala +++ b/src/Views/ProcessView/ProcessInfoView/ProcessInfoView.vala @@ -16,7 +16,7 @@ public class Monitor.ProcessInfoView : Gtk.Box { process_info_header.update (_process); - this.show_all (); + // this.show_all (); if (_process.uid != Posix.getuid ()) { process_info_cpu_ram.hide (); process_info_io_stats.hide (); @@ -32,7 +32,7 @@ public class Monitor.ProcessInfoView : Gtk.Box { permission_error_infobar.revealed = false; process_info_io_stats.open_files_tree_view.model.process = _process; - process_info_io_stats.open_files_tree_view.show_all (); + // process_info_io_stats.open_files_tree_view.show_all (); } } } @@ -55,22 +55,28 @@ public class Monitor.ProcessInfoView : Gtk.Box { permission_error_infobar.message_type = Gtk.MessageType.ERROR; permission_error_infobar.revealed = false; permission_error_label = new Gtk.Label (Utils.NO_DATA); - permission_error_infobar.get_content_area ().add (permission_error_label); - add (permission_error_infobar); + permission_error_infobar.add_child (permission_error_label); + append (permission_error_infobar); var grid = new Gtk.Grid () { - margin = 12, + margin_start = 12, + margin_end = 12, + margin_top = 12, + margin_bottom = 12, hexpand = true, column_spacing = 12 }; - add (grid); + append (grid); process_info_header = new ProcessInfoHeader (); grid.attach (process_info_header, 0, 0, 1, 1); var separator = new Gtk.Separator (Gtk.Orientation.HORIZONTAL) { - margin = 12, + margin_start = 12, + margin_end = 12, + margin_top = 12, + margin_bottom = 12, hexpand = true }; grid.attach (separator, 0, 1, 1, 1); @@ -91,15 +97,15 @@ public class Monitor.ProcessInfoView : Gtk.Box { end_process_button.margin_end = 10; end_process_button.tooltip_markup = Granite.markup_accel_tooltip ({ "E" }, _("End selected process")); var end_process_button_context = end_process_button.get_style_context (); - end_process_button_context.add_class (Gtk.STYLE_CLASS_SUGGESTED_ACTION); + // end_process_button_context.add_class (Gtk.STYLE_CLASS_SUGGESTED_ACTION); kill_process_button = new Gtk.Button.with_label (_("Kill Process")); kill_process_button.tooltip_markup = Granite.markup_accel_tooltip ({ "K" }, _("Kill selected process")); var kill_process_button_context = kill_process_button.get_style_context (); - kill_process_button_context.add_class (Gtk.STYLE_CLASS_DESTRUCTIVE_ACTION); + // kill_process_button_context.add_class (Gtk.STYLE_CLASS_DESTRUCTIVE_ACTION); - process_action_bar.add (end_process_button); - process_action_bar.add (kill_process_button); + process_action_bar.append (end_process_button); + process_action_bar.append (kill_process_button); preventor = new Preventor (process_action_bar, "process_action_bar"); @@ -119,7 +125,6 @@ public class Monitor.ProcessInfoView : Gtk.Box { grid.attach (preventor, 0, 5, 1, 1); - show_all (); process_info_cpu_ram.hide (); process_info_io_stats.hide (); preventor.hide (); @@ -139,7 +144,7 @@ public class Monitor.ProcessInfoView : Gtk.Box { process_info_io_stats.update (process); process_info_io_stats.open_files_tree_view.model.process = _process; - process_info_io_stats.open_files_tree_view.show_all (); + // process_info_io_stats.open_files_tree_view.show_all (); } } diff --git a/src/Views/ProcessView/ProcessView.vala b/src/Views/ProcessView/ProcessView.vala index 02cacbb2..b6dabdac 100644 --- a/src/Views/ProcessView/ProcessView.vala +++ b/src/Views/ProcessView/ProcessView.vala @@ -8,7 +8,7 @@ public class Monitor.ProcessView : Gtk.Box { process_info_view = new ProcessInfoView (); // hide on startup - process_info_view.no_show_all = true; + // process_info_view.no_show_all = true; } public ProcessView () { @@ -18,22 +18,22 @@ public class Monitor.ProcessView : Gtk.Box { process_tree_view.process_selected.connect ((process) => on_process_selected (process)); // making tree view scrollable - var process_tree_view_scrolled = new Gtk.ScrolledWindow (null, null); - process_tree_view_scrolled.add (process_tree_view); + var process_tree_view_scrolled = new Gtk.ScrolledWindow (); + process_tree_view_scrolled.set_child (process_tree_view); var paned = new Gtk.Paned (Gtk.Orientation.HORIZONTAL); - paned.pack1 (process_tree_view_scrolled, true, false); - paned.pack2 (process_info_view, false, false); + paned.set_start_child (process_tree_view_scrolled); + paned.set_end_child (process_info_view); // paned.set_min_position (200); paned.set_position (paned.max_position); paned.set_hexpand (true); - add (paned); + append (paned); } public void on_process_selected (Process process) { process_info_view.process = process; - process_info_view.no_show_all = false; + // process_info_view.no_show_all = false; // process_info_view.show_all (); } diff --git a/src/Views/SystemView/SystemCPUInfoPopover.vala b/src/Views/SystemView/SystemCPUInfoPopover.vala index 69a2c42c..7da61218 100755 --- a/src/Views/SystemView/SystemCPUInfoPopover.vala +++ b/src/Views/SystemView/SystemCPUInfoPopover.vala @@ -2,7 +2,10 @@ public class Monitor.SystemCPUInfoPopover : Gtk.Box { private CPU cpu; construct { - margin = 12; + margin_start = 12; + margin_end = 12; + margin_top = 12; + margin_bottom = 12; orientation = Gtk.Orientation.VERTICAL; } @@ -28,8 +31,8 @@ public class Monitor.SystemCPUInfoPopover : Gtk.Box { }; stack_switcher.set_stack (stack); - add (stack_switcher); - add (stack); + append (stack_switcher); + append (stack); } private Gtk.Label label (string text) { @@ -37,7 +40,10 @@ public class Monitor.SystemCPUInfoPopover : Gtk.Box { halign = Gtk.Align.START, valign = Gtk.Align.CENTER, wrap = true, - margin = 6, + margin_start = 6, + margin_end = 6, + margin_top = 6, + margin_bottom = 6, }; return label; @@ -48,31 +54,31 @@ public class Monitor.SystemCPUInfoPopover : Gtk.Box { activate_on_single_click = false }; - listbox.add (label (_("Model:") + " " + cpu.model)); - listbox.add (label (_("Family:") + " " + cpu.family)); - listbox.add (label (_("Microcode ver.:") + " " + cpu.microcode)); - listbox.add (label (_("Bogomips:") + " " + cpu.bogomips)); + listbox.append (label (_("Model:") + " " + cpu.model)); + listbox.append (label (_("Family:") + " " + cpu.family)); + listbox.append (label (_("Microcode ver.:") + " " + cpu.microcode)); + listbox.append (label (_("Bogomips:") + " " + cpu.bogomips)); if (cpu.core_list[0].caches.has_key ("L1Instruction")) { var value = cpu.cache_multipliers["L1Instruction"].to_string () + "×" + cpu.core_list[0].caches["L1Instruction"].size; - listbox.add (label (_("L1 Instruction cache: ") + value)); + listbox.append (label (_("L1 Instruction cache: ") + value)); } if (cpu.core_list[0].caches.has_key ("L1Data")) { var value = cpu.cache_multipliers["L1Data"].to_string () + "×" + cpu.core_list[0].caches["L1Data"].size; - listbox.add (label (_("L1 Data cache: ") + value)); + listbox.append (label (_("L1 Data cache: ") + value)); } if (cpu.core_list[0].caches.has_key ("L1")) { var value = cpu.cache_multipliers["L1"].to_string () + "×" + cpu.core_list[0].caches["L1"].size; - listbox.add (label (_("L1 cache: ") + value)); + listbox.append (label (_("L1 cache: ") + value)); } if (cpu.core_list[0].caches.has_key ("L2")) { - listbox.add (label (_("L2 Cache size: ") + cpu.cache_multipliers["L2"].to_string () + "×" + cpu.core_list[0].caches["L2"].size)); + listbox.append (label (_("L2 Cache size: ") + cpu.cache_multipliers["L2"].to_string () + "×" + cpu.core_list[0].caches["L2"].size)); } if (cpu.core_list[0].caches.has_key ("L3")) { - listbox.add (label (_("L3 Cache size: ") + cpu.cache_multipliers["L3"].to_string () + "×" + cpu.core_list[0].caches["L3"].size)); + listbox.append (label (_("L3 Cache size: ") + cpu.cache_multipliers["L3"].to_string () + "×" + cpu.core_list[0].caches["L3"].size)); } - listbox.add (label (_("Address sizes: ") + cpu.address_sizes)); + listbox.append (label (_("Address sizes: ") + cpu.address_sizes)); return listbox; } @@ -83,11 +89,11 @@ public class Monitor.SystemCPUInfoPopover : Gtk.Box { }; foreach (var feature in cpu.features) { - listbox.add (create_row (feature.key, feature.value)); + listbox.append (create_row (feature.key, feature.value)); } - var scrolled_window = new Gtk.ScrolledWindow (null, null); - scrolled_window.add (listbox); + var scrolled_window = new Gtk.ScrolledWindow (); + scrolled_window.set_child (listbox); return scrolled_window; } @@ -98,11 +104,11 @@ public class Monitor.SystemCPUInfoPopover : Gtk.Box { }; foreach (var bug in cpu.bugs) { - listbox.add (create_row (bug.key, bug.value)); + listbox.append (create_row (bug.key, bug.value)); } - var scrolled_window = new Gtk.ScrolledWindow (null, null); - scrolled_window.add (listbox); + var scrolled_window = new Gtk.ScrolledWindow (); + scrolled_window.set_child (listbox); return scrolled_window; } @@ -117,14 +123,17 @@ public class Monitor.SystemCPUInfoPopover : Gtk.Box { halign = Gtk.Align.START, valign = Gtk.Align.CENTER, wrap = true, - margin = 6, + margin_start = 6, + margin_end = 6, + margin_top = 6, + margin_bottom = 6, }; flag_label.get_style_context ().add_class ("flags_badge"); grid.attach (flag_label, 0, 0, 1, 1); grid.attach (label (flag_description), 1, 0, 1, 1); - row.add (grid); + row.set_child (grid); return row; } diff --git a/src/Views/SystemView/SystemCPUView.vala b/src/Views/SystemView/SystemCPUView.vala index efbd2435..07aaa80b 100644 --- a/src/Views/SystemView/SystemCPUView.vala +++ b/src/Views/SystemView/SystemCPUView.vala @@ -14,13 +14,20 @@ public class Monitor.SystemCPUView : Monitor.WidgetResource { construct { core_label_list = new Gee.ArrayList (); - cpu_frequency_label = new LabelRoundy (_("Frequency")); - cpu_frequency_label.margin = 6; - cpu_frequency_label.margin_top = 2; + cpu_frequency_label = new LabelRoundy (_("Frequency")) { + margin_start = 6, + margin_end = 6, + margin_top = 2, + margin_bottom = 6, + }; + + cpu_temperature_label = new LabelRoundy (_("Temperature")) { + margin_start = 6, + margin_end = 6, + margin_top = 2, + margin_bottom = 6, + }; - cpu_temperature_label = new LabelRoundy (_("Temperature")); - cpu_temperature_label.margin = 6; - cpu_temperature_label.margin_top = 2; cpu_frequency_chart = new Chart (1); cpu_frequency_chart.set_serie_color (0, Utils.Colors.get_rgba_color (Utils.Colors.LIME_500)); @@ -130,7 +137,10 @@ public class Monitor.SystemCPUView : Monitor.WidgetResource { Gtk.Grid grid = new Gtk.Grid () { column_spacing = 8, row_spacing = 4, - margin = 6 + margin_start = 6, + margin_end = 6, + margin_top = 6, + margin_bottom = 6, }; int column = 0; diff --git a/src/Views/SystemView/SystemGPUView.vala b/src/Views/SystemView/SystemGPUView.vala index 27cfc26c..1267d134 100644 --- a/src/Views/SystemView/SystemGPUView.vala +++ b/src/Views/SystemView/SystemGPUView.vala @@ -9,13 +9,20 @@ public class Monitor.SystemGPUView : Monitor.WidgetResource { construct { - gpu_vram_percentage_label = new LabelRoundy (_("VRAM")); - gpu_vram_percentage_label.margin = 6; - gpu_vram_percentage_label.margin_top = 2; + gpu_vram_percentage_label = new LabelRoundy (_("VRAM")) { + margin_top = 2, + margin_bottom = 6, + margin_start = 6, + margin_end = 6 + }; + - gpu_temperature_label = new LabelRoundy (_("TEMPERATURE")); - gpu_temperature_label.margin = 6; - gpu_temperature_label.margin_top = 2; + gpu_temperature_label = new LabelRoundy (_("TEMPERATURE")) { + margin_top = 2, + margin_bottom = 6, + margin_start = 6, + margin_end = 6 + }; gpu_vram_percentage_chart = new Chart (1); gpu_vram_percentage_chart.set_serie_color (0, Utils.Colors.get_rgba_color (Utils.Colors.LIME_500)); @@ -63,7 +70,10 @@ public class Monitor.SystemGPUView : Monitor.WidgetResource { Gtk.Grid grid = new Gtk.Grid () { column_spacing = 8, row_spacing = 4, - margin = 6 + margin_top = 6, + margin_bottom = 6, + margin_start = 6, + margin_end = 6 }; return grid; diff --git a/src/Views/SystemView/SystemMemoryView.vala b/src/Views/SystemView/SystemMemoryView.vala index cd835ae9..1cebded1 100644 --- a/src/Views/SystemView/SystemMemoryView.vala +++ b/src/Views/SystemView/SystemMemoryView.vala @@ -36,7 +36,10 @@ public class Monitor.SystemMemoryView : Monitor.WidgetResource { Gtk.Grid grid = new Gtk.Grid () { column_spacing = 8, row_spacing = 4, - margin = 6 + margin_start = 6, + margin_end = 6, + margin_top = 6, + margin_bottom = 6, }; grid.attach (memory_used_label, 0, 0, 1, 1); diff --git a/src/Views/SystemView/SystemNetworkView.vala b/src/Views/SystemView/SystemNetworkView.vala index 9982bbd9..08eecf8e 100644 --- a/src/Views/SystemView/SystemNetworkView.vala +++ b/src/Views/SystemView/SystemNetworkView.vala @@ -7,7 +7,10 @@ public class Monitor.SystemNetworkView : Gtk.Grid { private LabelRoundy network_download_label; construct { - margin = 12; + margin_start = 12; + margin_end = 12; + margin_top = 12; + margin_bottom = 12; column_spacing = 12; set_vexpand (false); } @@ -28,13 +31,18 @@ public class Monitor.SystemNetworkView : Gtk.Grid { network_chart = new Chart (2); network_chart.config.y_axis.fixed_max = null; - network_chart.set_serie_color (0, { 155 / 255.0, 219 / 255.0, 77 / 255.0, 1.0 }); - network_chart.set_serie_color (1, { 100 / 255.0, 186 / 255.0, 255 / 255.0, 1.0 }); + network_chart.set_serie_color (0, { 155 / 255.0f, 219 / 255.0f, 77 / 255.0f, 1.0f }); + network_chart.set_serie_color (1, { 100 / 255.0f, 186 / 255.0f, 255 / 255.0f, 1.0f }); + + var labels_grid = new Gtk.Grid () { + row_spacing = 6, + column_spacing = 6, + margin_start = 6, + margin_end = 6, + margin_top = 6, + margin_bottom = 6, + }; - var labels_grid = new Gtk.Grid (); - labels_grid.row_spacing = 6; - labels_grid.column_spacing = 6; - labels_grid.margin = 6; labels_grid.attach (network_download_label, 0, 0, 1, 1); labels_grid.attach (network_upload_label, 1, 0, 1, 1); diff --git a/src/Views/SystemView/SystemStorageView.vala b/src/Views/SystemView/SystemStorageView.vala index 1344076c..87e1295d 100644 --- a/src/Views/SystemView/SystemStorageView.vala +++ b/src/Views/SystemView/SystemStorageView.vala @@ -9,7 +9,10 @@ public class Monitor.SystemStorageView : Gtk.Grid { private Gtk.Box drive_cards_container; construct { - margin = 12; + margin_top = 12; + margin_bottom = 12; + margin_start = 12; + margin_end = 12; column_spacing = 12; set_vexpand (false); } @@ -29,13 +32,18 @@ public class Monitor.SystemStorageView : Gtk.Grid { storage_chart = new Chart (2); storage_chart.config.y_axis.fixed_max = null; - storage_chart.set_serie_color (0, { 155 / 255.0, 219 / 255.0, 77 / 255.0, 1.0 }); - storage_chart.set_serie_color (1, { 100 / 255.0, 186 / 255.0, 255 / 255.0, 1.0 }); + storage_chart.set_serie_color (0, { 155 / 255.0f, 219 / 255.0f, 77 / 255.0f, 1.0f }); + storage_chart.set_serie_color (1, { 100 / 255.0f, 186 / 255.0f, 255 / 255.0f, 1.0f }); + + var labels_grid = new Gtk.Grid () { + margin_top = 6, + margin_bottom = 6, + margin_start = 6, + margin_end = 6, + row_spacing = 6, + column_spacing = 6 + }; - var labels_grid = new Gtk.Grid (); - labels_grid.row_spacing = 6; - labels_grid.column_spacing = 6; - labels_grid.margin = 6; labels_grid.attach (storage_write_label, 0, 0, 1, 1); labels_grid.attach (storage_read_label, 1, 0, 1, 1); @@ -49,8 +57,8 @@ public class Monitor.SystemStorageView : Gtk.Grid { attach (storage_chart, 0, 2, 2, 2); } - private bool add_drive_card (owned Disk? drive) { - drive_cards_container.add (build_drive_card (drive.model, drive.device, drive.size, drive.free)); + private bool add_drive_card (owned Disk ? drive) { + drive_cards_container.append (build_drive_card (drive.model, drive.device, drive.size, drive.free)); return true; } @@ -64,16 +72,22 @@ public class Monitor.SystemStorageView : Gtk.Grid { drive_card.margin_top = 6; drive_card.margin_bottom = 12; - var drive_grid = new Gtk.Grid (); - // drive_grid.row_spacing = 6; - drive_grid.column_spacing = 6; - drive_grid.margin = 6; - - var drive_name_label = new Gtk.Label (model); + var drive_grid = new Gtk.Grid () { + margin_top = 6, + margin_bottom = 6, + margin_start = 6, + margin_end = 6, + column_spacing = 6 + }; + + var drive_name_label = new Gtk.Label (model) { + margin_top = 0, + margin_bottom = 6, + margin_start = 6, + margin_end = 6, + halign = Gtk.Align.START + }; drive_name_label.get_style_context ().add_class ("h3"); - drive_name_label.margin = 6; - drive_name_label.margin_bottom = 0; - drive_name_label.halign = Gtk.Align.START; string size_string = Utils.HumanUnitFormatter.double_bytes_to_human (size); string used_string = Utils.HumanUnitFormatter.double_bytes_to_human ((size - free)); @@ -82,22 +96,29 @@ public class Monitor.SystemStorageView : Gtk.Grid { if (free == 0) drive_block_name_and_size_string = "%s 𐄁 %s".printf (device, size_string); - var drive_block_name_and_size_label = new Gtk.Label (drive_block_name_and_size_string); + var drive_block_name_and_size_label = new Gtk.Label (drive_block_name_and_size_string) { + margin_top = 0, + margin_bottom = 6, + margin_start = 6, + margin_end = 6, + halign = Gtk.Align.START + }; drive_block_name_and_size_label.get_style_context ().add_class ("h4"); drive_block_name_and_size_label.get_style_context ().add_class ("text-secondary"); - drive_block_name_and_size_label.margin = 6; - drive_block_name_and_size_label.margin_top = 0; - drive_block_name_and_size_label.halign = Gtk.Align.START; var drive_not_mounted_label = new Gtk.Label (_("Not mounted")); drive_not_mounted_label.halign = Gtk.Align.START; drive_not_mounted_label.get_style_context ().add_class ("h4"); drive_not_mounted_label.margin_start = 6; - var usagebar = new Gtk.LevelBar (); + var usagebar = new Gtk.LevelBar () { + margin_top = 0, + margin_bottom = 6, + margin_start = 6, + margin_end = 6, + }; usagebar.get_style_context ().add_class ("flat"); - usagebar.margin = 6; - usagebar.margin_top = 0; + usagebar.set_max_value (100.0); usagebar.set_min_value (0.0); usagebar.set_value (100.0 * (size - free) / size); @@ -109,7 +130,7 @@ public class Monitor.SystemStorageView : Gtk.Grid { } else { drive_grid.attach (usagebar, 0, 2, 1, 1); } - drive_card.add (drive_grid); + drive_card.append (drive_grid); return drive_card; } @@ -124,4 +145,5 @@ public class Monitor.SystemStorageView : Gtk.Grid { storage_chart.update (1, down_bytes); } } + } diff --git a/src/Views/SystemView/SystemView.vala b/src/Views/SystemView/SystemView.vala index 2531dc97..2d079172 100644 --- a/src/Views/SystemView/SystemView.vala +++ b/src/Views/SystemView/SystemView.vala @@ -20,23 +20,26 @@ public class Monitor.SystemView : Gtk.Box { network_view = new SystemNetworkView (resources.network); storage_view = new SystemStorageView (resources.storage); - var scrolled_window = new Gtk.ScrolledWindow (null, null); - var wrapper = new Gtk.Box (Gtk.Orientation.VERTICAL, 0); - wrapper.expand = true; - scrolled_window.add (wrapper); + var wrapper = new Gtk.Box (Gtk.Orientation.VERTICAL, 0) { + hexpand = true, + vexpand = true + }; + var scrolled_window = new Gtk.ScrolledWindow () { + child = wrapper + }; - wrapper.add (cpu_view); - wrapper.add (memory_view); - wrapper.add (network_view); - wrapper.add (storage_view); + wrapper.append (cpu_view); + wrapper.append (memory_view); + wrapper.append (network_view); + wrapper.append (storage_view); if (resources.gpu != null) { gpu_view = new SystemGPUView (resources.gpu); - wrapper.add (gpu_view); + wrapper.append (gpu_view); } - add (scrolled_window); + append (scrolled_window); } public void update () { diff --git a/src/Widgets/Headerbar/Headerbar.vala b/src/Widgets/Headerbar/Headerbar.vala index 5dd9940d..5dc18fff 100644 --- a/src/Widgets/Headerbar/Headerbar.vala +++ b/src/Widgets/Headerbar/Headerbar.vala @@ -1,4 +1,4 @@ -public class Monitor.Headerbar : Hdy.HeaderBar { +public class Monitor.Headerbar : Gtk.HeaderBar { private MainWindow window; public Search search; @@ -9,9 +9,9 @@ public class Monitor.Headerbar : Hdy.HeaderBar { }; construct { - show_close_button = true; - has_subtitle = false; - title = _("Monitor"); + show_title_buttons = true; + // has_subtitle = false; + // title_widget = new Gtk.Label(_("Monitor")); } public Headerbar (MainWindow window) { @@ -20,24 +20,24 @@ public class Monitor.Headerbar : Hdy.HeaderBar { var preferences_button = new Gtk.MenuButton (); preferences_button.has_tooltip = true; preferences_button.tooltip_text = (_("Settings")); - preferences_button.set_image (new Gtk.Image.from_icon_name ("open-menu", Gtk.IconSize.LARGE_TOOLBAR)); + preferences_button.set_icon_name ("open-menu"); pack_end (preferences_button); preferences_grid = new Gtk.Grid () { orientation = Gtk.Orientation.VERTICAL }; - var preferences_popover = new Gtk.Popover (null); - preferences_popover.add (preferences_grid); + var preferences_popover = new Gtk.Popover (); + preferences_popover.set_child (preferences_grid); preferences_button.popover = preferences_popover; - preferences_grid.show_all (); + // preferences_grid.show_all (); search = new Search (window) { valign = Gtk.Align.CENTER }; - search_revealer.add (search); + search_revealer.set_child (search); pack_start (search_revealer); diff --git a/src/Widgets/Labels/LabelVertical.vala b/src/Widgets/Labels/LabelVertical.vala index 76096355..e0500069 100644 --- a/src/Widgets/Labels/LabelVertical.vala +++ b/src/Widgets/Labels/LabelVertical.vala @@ -1,4 +1,4 @@ -public class Monitor.LabelVertical : Gtk.EventBox { +public class Monitor.LabelVertical : Gtk.Box { private Gtk.Grid grid; public signal void clicked (); @@ -25,14 +25,14 @@ public class Monitor.LabelVertical : Gtk.EventBox { grid.attach (desc, 0, 0, 1, 1); grid.attach (val, 0, 1, 1, 1); - add (grid); + append (grid); - events |= Gdk.EventMask.BUTTON_RELEASE_MASK; + // events |= Gdk.EventMask.BUTTON_RELEASE_MASK; - button_release_event.connect ((event) => { - clicked (); - return false; - }); + // button_release_event.connect ((event) => { + // clicked (); + // return false; + // }); } public void set_text (string text) { diff --git a/src/Widgets/Statusbar/Statusbar.vala b/src/Widgets/Statusbar/Statusbar.vala index ed45634c..081dd99e 100644 --- a/src/Widgets/Statusbar/Statusbar.vala +++ b/src/Widgets/Statusbar/Statusbar.vala @@ -4,15 +4,15 @@ public class Monitor.Statusbar : Gtk.ActionBar { Gtk.Label swap_usage_label; construct { - var cpu_icon = new Gtk.Image.from_icon_name ("cpu-symbolic", Gtk.IconSize.SMALL_TOOLBAR) { + var cpu_icon = new Gtk.Image.from_icon_name ("cpu-symbolic") { tooltip_text = _("CPU") }; - var ram_icon = new Gtk.Image.from_icon_name ("ram-symbolic", Gtk.IconSize.SMALL_TOOLBAR) { + var ram_icon = new Gtk.Image.from_icon_name ("ram-symbolic") { tooltip_text = _("Memory") }; - var swap_icon = new Gtk.Image.from_icon_name ("swap-symbolic", Gtk.IconSize.SMALL_TOOLBAR) { + var swap_icon = new Gtk.Image.from_icon_name ("swap-symbolic") { tooltip_text = _("Swap") }; diff --git a/src/Widgets/WidgetResource/WidgetResource.vala b/src/Widgets/WidgetResource/WidgetResource.vala index 383a56da..6c22a07a 100644 --- a/src/Widgets/WidgetResource/WidgetResource.vala +++ b/src/Widgets/WidgetResource/WidgetResource.vala @@ -24,7 +24,9 @@ public class Monitor.WidgetResource : Gtk.Box { construct { - margin = 12; + margin_bottom = 12; + margin_start = 12; + margin_end = 12; margin_top = 6; set_vexpand (false); orientation = Gtk.Orientation.VERTICAL; @@ -35,22 +37,25 @@ public class Monitor.WidgetResource : Gtk.Box { column_spacing = 6, }; grid_header.attach (_title, 0, 0, 1, 1); - add (grid_header); + append (grid_header); grid_main_chart_container = new Gtk.Grid (); grid_main_chart_container.attach (build_grid_main_onchart_info_container (), 0, 0, 1, 1); - charts_container.pack_start (grid_main_chart_container, true, true, 0); + charts_container.prepend (grid_main_chart_container); - add (charts_container); + append (charts_container); } private Gtk.Grid build_grid_main_onchart_info_container () { grid_main_onchart_info_container = new Gtk.Grid () { column_spacing = 6, - margin = 6, + margin_start = 6, + margin_end = 6, + margin_top = 6, + margin_bottom = 6, valign = Gtk.Align.START, halign = Gtk.Align.START, }; @@ -70,31 +75,34 @@ public class Monitor.WidgetResource : Gtk.Box { } public void add_charts_container (Gtk.Widget widget) { - charts_container.pack_start (widget, false, false, 0); + charts_container.prepend (widget); } public void set_popover_more_info (Gtk.Widget widget) { - var button_more_info = new Gtk.ToggleButton () { - has_focus = false, + var button_more_info = new Gtk.MenuButton () { + focusable = false, valign = Gtk.Align.START, halign = Gtk.Align.START }; + // button_more_info.set_focusable (false) button_more_info.get_style_context ().add_class ("circular"); // button_more_info.get_style_context ().add_class ("popup"); - var icon = new Gtk.Image (); - icon.gicon = new ThemedIcon ("dialog-information"); - icon.pixel_size = 16; - button_more_info.set_image (icon); - popover_more_info = new Gtk.Popover (button_more_info) { + button_more_info.set_icon_name ("dialog-information"); + + popover_more_info = new Gtk.Popover () { position = Gtk.PositionType.BOTTOM, - modal = true, visible = false, }; - popover_more_info.closed.connect (() => { button_more_info.set_active (false); }); - button_more_info.clicked.connect (() => { popover_more_info.show_all (); }); + popover_more_info.set_autohide (true); + + button_more_info.set_popover (popover_more_info); + + // Note: `Gtk.MenuButton.set_active' is not available in gtk4 4.6.9. Use gtk4 >= 4.10 + // popover_more_info.closed.connect (() => { button_more_info.set_active (false); }); + // button_more_info.clicked.connect (() => { popover_more_info.present (); }); - popover_more_info.add (widget); + popover_more_info.set_child (widget); grid_header.attach (button_more_info, 1, 0, 1, 1); } diff --git a/subprojects/live-chart b/subprojects/live-chart index 843efd30..ef49124c 160000 --- a/subprojects/live-chart +++ b/subprojects/live-chart @@ -1 +1 @@ -Subproject commit 843efd30f129e62b0251a2d89d2655eb948dcd44 +Subproject commit ef49124c50fe8973c25f3cace5bf5a1ee2325f19 From cd618996df93e8ee3090eed3a4f6841cb8ffd2d7 Mon Sep 17 00:00:00 2001 From: stsdc <6031763+stsdc@users.noreply.github.com> Date: Sat, 11 Nov 2023 00:50:17 +0100 Subject: [PATCH 03/18] it compiles! --- src/MainWindow.vala | 43 +++++++++++-------- .../ContainerInfoCharts.vala | 4 +- .../ContainerInfoHeader.vala | 2 +- .../ContainerInfoView/ContainerInfoView.vala | 7 ++- src/Views/ContainerView/ContainerView.vala | 8 ++-- .../PreferencesGeneralPage.vala | 16 ++++--- .../PreferencesView/PreferencesView.vala | 11 +++-- src/Views/SystemView/SystemNetworkView.vala | 4 +- src/Views/SystemView/SystemStorageView.vala | 4 +- src/Widgets/Chart/Chart.vala | 6 +-- .../{Headerbar.vala => HeaderbarContent.vala} | 4 +- src/Widgets/Headerbar/Search.vala | 14 +++--- .../WidgetResource/WidgetResource.vala | 2 +- src/meson.build | 14 +++--- 14 files changed, 78 insertions(+), 61 deletions(-) rename src/Widgets/Headerbar/{Headerbar.vala => HeaderbarContent.vala} (92%) diff --git a/src/MainWindow.vala b/src/MainWindow.vala index 81e6e79c..21e606aa 100644 --- a/src/MainWindow.vala +++ b/src/MainWindow.vala @@ -1,25 +1,25 @@ -public class Monitor.MainWindow : Adw.ApplicationWindow { +public class Monitor.MainWindow : Gtk.ApplicationWindow { // application reference private Shortcuts shortcuts; private Resources resources; // Widgets - public Headerbar headerbar; + // public HeaderbarContent headerbar_content; // public ProcessView process_view; // public SystemView system_view; public ContainerView container_view; private Gtk.Stack stack; - private Statusbar statusbar; + // private Statusbar statusbar; public DBusServer dbusserver; // Constructs a main window public MainWindow (MonitorApp app) { - Adw.init (); + // Adw.init (); this.set_application (app); setup_window_state (); @@ -48,12 +48,22 @@ public class Monitor.MainWindow : Adw.ApplicationWindow { stack_switcher.valign = Gtk.Align.CENTER; stack_switcher.set_stack (stack); - headerbar = new Headerbar (this); - headerbar.set_title_widget (stack_switcher); - headerbar.preferences_grid.attach (new PreferencesView (), 0, 0, 1, 1); + var headerbar = new Gtk.HeaderBar () { + title_widget = stack_switcher, + hexpand = true + }; + + // headerbar.search_revealer.set_reveal_child (stack.visible_child_name == "process_view"); + // stack.notify["visible-child-name"].connect (() => { + // headerbar.search_revealer.set_reveal_child (stack.visible_child_name == "process_view"); + // }); + + // headerbar_content = new HeaderbarContent (this); + // headerbar.set_title_widget (stack_switcher); + // headerbar.preferences_grid.attach (new PreferencesView (), 0, 0, 1, 1); // sv.show_all (); - statusbar = new Statusbar (); + // statusbar = new Statusbar (); var grid = new Gtk.Grid () { orientation = Gtk.Orientation.VERTICAL @@ -61,18 +71,15 @@ public class Monitor.MainWindow : Adw.ApplicationWindow { grid.attach (headerbar, 0, 0, 1, 1); grid.attach (stack, 0, 1, 1, 1); - grid.attach (statusbar, 0, 2, 1, 1); + // grid.attach (statusbar, 0, 2, 1, 1); - set_content (grid); + // set_content (grid); + set_child (grid); present (); dbusserver = DBusServer.get_default (); - headerbar.search_revealer.set_reveal_child (stack.visible_child_name == "process_view"); - stack.notify["visible-child-name"].connect (() => { - headerbar.search_revealer.set_reveal_child (stack.visible_child_name == "process_view"); - }); new Thread ("upd", () => { Timeout.add_seconds (MonitorApp.settings.get_int ("update-time"), () => { @@ -86,7 +93,7 @@ public class Monitor.MainWindow : Adw.ApplicationWindow { // system_view.update (); dbusserver.indicator_state (MonitorApp.settings.get_boolean ("indicator-state")); var res = resources.serialize (); - statusbar.update (res); + // statusbar.update (res); dbusserver.update (res); return false; }); @@ -104,7 +111,7 @@ public class Monitor.MainWindow : Adw.ApplicationWindow { }); shortcuts = new Shortcuts (this); - key_press_event.connect ((e) => shortcuts.handle (e)); + // key_press_event.connect ((e) => shortcuts.handle (e)); app.window_removed.connect (() => { int position_x, position_y; @@ -113,8 +120,8 @@ public class Monitor.MainWindow : Adw.ApplicationWindow { // get_position (out position_x, out position_y); MonitorApp.settings.set_int ("window-width", window_width); MonitorApp.settings.set_int ("window-height", window_height); - MonitorApp.settings.set_int ("position-x", position_x); - MonitorApp.settings.set_int ("position-y", position_y); + // MonitorApp.settings.set_int ("position-x", position_x); + // MonitorApp.settings.set_int ("position-y", position_y); // MonitorApp.settings.set_boolean ("is-maximized", this.is_maximized); MonitorApp.settings.set_string ("opened-view", stack.visible_child_name); diff --git a/src/Views/ContainerView/ContainerInfoView/ContainerInfoCharts.vala b/src/Views/ContainerView/ContainerInfoView/ContainerInfoCharts.vala index 8ad2f651..13559c01 100644 --- a/src/Views/ContainerView/ContainerInfoView/ContainerInfoCharts.vala +++ b/src/Views/ContainerView/ContainerInfoView/ContainerInfoCharts.vala @@ -22,10 +22,10 @@ public class Monitor.ContainerInfoCharts : Gtk.Grid { ram_chart.height_request = 60; var cpu_graph_box = new Gtk.Box (Gtk.Orientation.HORIZONTAL, 0); - cpu_graph_box.add (cpu_chart); + cpu_graph_box.append (cpu_chart); var mem_graph_box = new Gtk.Box (Gtk.Orientation.HORIZONTAL, 0); - mem_graph_box.add (ram_chart); + mem_graph_box.append (ram_chart); cpu_label = new Gtk.Label ("CPU: " + Utils.NO_DATA); cpu_label.get_style_context ().add_class (Granite.STYLE_CLASS_H4_LABEL); diff --git a/src/Views/ContainerView/ContainerInfoView/ContainerInfoHeader.vala b/src/Views/ContainerView/ContainerInfoView/ContainerInfoHeader.vala index bff68aa9..9943abdb 100644 --- a/src/Views/ContainerView/ContainerInfoView/ContainerInfoHeader.vala +++ b/src/Views/ContainerView/ContainerInfoView/ContainerInfoHeader.vala @@ -21,7 +21,7 @@ public class Monitor.ContainerInfoHeader : Gtk.Grid { regex = /(?i:^.*\.(xpm|png)$)/; // vala-lint=space-before-paren, /* *INDENT-ON* */ - icon = new Gtk.Image.from_icon_name ("application-x-executable", Gtk.IconSize.DIALOG); + icon = new Gtk.Image.from_icon_name ("application-x-executable"); icon.set_pixel_size (64); icon.valign = Gtk.Align.END; diff --git a/src/Views/ContainerView/ContainerInfoView/ContainerInfoView.vala b/src/Views/ContainerView/ContainerInfoView/ContainerInfoView.vala index 7e38cf8f..69139ce6 100644 --- a/src/Views/ContainerView/ContainerInfoView/ContainerInfoView.vala +++ b/src/Views/ContainerView/ContainerInfoView/ContainerInfoView.vala @@ -20,13 +20,16 @@ public class Monitor.ContainerInfoView : Gtk.Grid { private Gtk.Label ram_label; construct { - this.expand = false; + // this.expand = false; this.width_request = 200; column_spacing = 6; row_spacing = 6; vexpand = false; - margin = 12; + margin_start = 12; + margin_end = 12; + margin_top = 12; + margin_bottom = 12; column_homogeneous = true; row_homogeneous = false; diff --git a/src/Views/ContainerView/ContainerView.vala b/src/Views/ContainerView/ContainerView.vala index 3993f66f..a443eb1b 100644 --- a/src/Views/ContainerView/ContainerView.vala +++ b/src/Views/ContainerView/ContainerView.vala @@ -15,16 +15,16 @@ public class Monitor.ContainerView : Gtk.Box { public ContainerView () { - var container_tree_view_scrolled = new Gtk.ScrolledWindow (null, null); - container_tree_view_scrolled.add (container_treeview); + var container_tree_view_scrolled = new Gtk.ScrolledWindow (); + container_tree_view_scrolled.set_child (container_treeview); var paned = new Gtk.Paned (Gtk.Orientation.HORIZONTAL); - paned.pack1 (container_tree_view_scrolled, true, false); + paned.set_start_child (container_tree_view_scrolled); // paned.pack2 (container_info_view, true, false); paned.set_position (paned.max_position); - add (paned); + append (paned); } private void set_container_container_info_view (DockerContainer container) { diff --git a/src/Views/PreferencesView/PreferencesGeneralPage.vala b/src/Views/PreferencesView/PreferencesGeneralPage.vala index bdcc4553..a4c49c97 100644 --- a/src/Views/PreferencesView/PreferencesGeneralPage.vala +++ b/src/Views/PreferencesView/PreferencesGeneralPage.vala @@ -13,7 +13,7 @@ public PreferencesGeneralPage () { - var icon = new Gtk.Image.from_icon_name ("preferences-system", Gtk.IconSize.DND); + var icon = new Gtk.Image.from_icon_name ("preferences-system"); Object ( display_widget: icon, @@ -66,10 +66,14 @@ hexpand = true }; - var content_area = new Gtk.Grid (); - content_area.column_spacing = 12; - content_area.row_spacing = 12; - content_area.margin = 12; + var content_area = new Gtk.Grid () { + column_spacing = 12, + row_spacing = 12, + margin_start = 12, + margin_end = 12, + margin_top = 12, + margin_bottom = 12, + }; content_area.attach (background_label, 0, 1, 1, 1); content_area.attach (background_switch, 1, 1, 1, 1); content_area.attach (enable_smooth_lines_label, 0, 2, 1, 1); @@ -79,7 +83,7 @@ content_area.attach (enable_containers_view_label, 0, 5, 1, 1); content_area.attach (enable_containers_view_switch, 1, 5, 1, 1); - add (content_area); + append (content_area); background_switch.notify["active"].connect (() => { MonitorApp.settings.set_boolean ("background-state", background_switch.state); diff --git a/src/Views/PreferencesView/PreferencesView.vala b/src/Views/PreferencesView/PreferencesView.vala index bfe1b7bc..3da934fa 100644 --- a/src/Views/PreferencesView/PreferencesView.vala +++ b/src/Views/PreferencesView/PreferencesView.vala @@ -3,7 +3,7 @@ * SPDX-License-Identifier: LGPL-3.0-or-later */ - public class Monitor.PreferencesView : Gtk.Paned { + public class Monitor.PreferencesView : Gtk.Box { private PreferencesGeneralPage general_page = new PreferencesGeneralPage (); private PreferencesIndicatorPage indicator_page = new PreferencesIndicatorPage (); @@ -12,9 +12,11 @@ general_page.background_switch.notify["active"].connect (() => set_background_switch_state ()); indicator_page.status_switch.notify["active"].connect (() => set_background_switch_state ()); + var paned = new Gtk.Paned (Gtk.Orientation.HORIZONTAL); + height_request = 300; width_request = 500; - set_position (135); + paned.set_position (135); var stack = new Gtk.Stack (); stack.add_named (indicator_page, "indicator_page"); @@ -24,8 +26,9 @@ width_request = 135 }; - pack1 (settings_sidebar, true, false); - pack2 (stack, true, false); + paned.set_start_child (settings_sidebar); + paned.set_end_child (stack); + append (paned); } private void set_background_switch_state () { diff --git a/src/Views/SystemView/SystemNetworkView.vala b/src/Views/SystemView/SystemNetworkView.vala index 08eecf8e..b32d178d 100644 --- a/src/Views/SystemView/SystemNetworkView.vala +++ b/src/Views/SystemView/SystemNetworkView.vala @@ -2,7 +2,7 @@ public class Monitor.SystemNetworkView : Gtk.Grid { private Chart network_chart; private Network network; - private LabelH4 network_name_label; + private Gtk.Label network_name_label; private LabelRoundy network_upload_label; private LabelRoundy network_download_label; @@ -18,7 +18,7 @@ public class Monitor.SystemNetworkView : Gtk.Grid { public SystemNetworkView (Network _network) { network = _network; - network_name_label = new LabelH4 (_("Network")); + network_name_label = new Gtk.Label (_("Network")); network_download_label = new LabelRoundy (_("DOWN")); network_download_label.val.set_width_chars (7); diff --git a/src/Views/SystemView/SystemStorageView.vala b/src/Views/SystemView/SystemStorageView.vala index 87e1295d..7872dac7 100644 --- a/src/Views/SystemView/SystemStorageView.vala +++ b/src/Views/SystemView/SystemStorageView.vala @@ -2,7 +2,7 @@ public class Monitor.SystemStorageView : Gtk.Grid { private Chart storage_chart; private Storage storage; - private LabelH4 storage_name_label; + private Gtk.Label storage_name_label; private LabelRoundy storage_read_label; private LabelRoundy storage_write_label; @@ -20,7 +20,7 @@ public class Monitor.SystemStorageView : Gtk.Grid { public SystemStorageView (Storage _storage) { storage = _storage; - storage_name_label = new LabelH4 (_("Storage")); + storage_name_label = new Gtk.Label (_("Storage")); storage_write_label = new LabelRoundy (_("WRITE")); storage_write_label.val.set_width_chars (7); diff --git a/src/Widgets/Chart/Chart.vala b/src/Widgets/Chart/Chart.vala index 0099b706..7163a068 100644 --- a/src/Widgets/Chart/Chart.vala +++ b/src/Widgets/Chart/Chart.vala @@ -27,7 +27,7 @@ public class Monitor.Chart : Gtk.Box { }; live_chart = new LiveChart.Chart (config); - live_chart.expand = true; + // live_chart.expand = true; live_chart.legend.visible = false; live_chart.grid.visible = true; live_chart.background.visible = false; @@ -60,7 +60,7 @@ public class Monitor.Chart : Gtk.Box { live_chart.add_serie (serie); } - add (live_chart); + append (live_chart); return this; } @@ -73,7 +73,7 @@ public class Monitor.Chart : Gtk.Box { serie.line.color = colors.get_color_by_index (i); live_chart.add_serie (serie); } - add (live_chart); + append (live_chart); return this; } diff --git a/src/Widgets/Headerbar/Headerbar.vala b/src/Widgets/Headerbar/HeaderbarContent.vala similarity index 92% rename from src/Widgets/Headerbar/Headerbar.vala rename to src/Widgets/Headerbar/HeaderbarContent.vala index 5dc18fff..7b6b142a 100644 --- a/src/Widgets/Headerbar/Headerbar.vala +++ b/src/Widgets/Headerbar/HeaderbarContent.vala @@ -1,4 +1,4 @@ -public class Monitor.Headerbar : Gtk.HeaderBar { +public class Monitor.HeaderbarContent { private MainWindow window; public Search search; @@ -14,7 +14,7 @@ public class Monitor.Headerbar : Gtk.HeaderBar { // title_widget = new Gtk.Label(_("Monitor")); } - public Headerbar (MainWindow window) { + public HeaderbarContent (MainWindow window) { this.window = window; var preferences_button = new Gtk.MenuButton (); diff --git a/src/Widgets/Headerbar/Search.vala b/src/Widgets/Headerbar/Search.vala index 922f00f6..16388533 100644 --- a/src/Widgets/Headerbar/Search.vala +++ b/src/Widgets/Headerbar/Search.vala @@ -24,9 +24,9 @@ public class Monitor.Search : Gtk.SearchEntry { private void connect_signal () { this.search_changed.connect (() => { // collapse tree only when search is focused and changed - if (this.is_focus) { - process_tree_view.collapse_all (); - } + // if (this.is_focus) { + // process_tree_view.collapse_all (); + // } filter_model.refilter (); @@ -34,9 +34,9 @@ public class Monitor.Search : Gtk.SearchEntry { process_tree_view.focus_on_child_row (); this.grab_focus (); - if (this.text != "") { - this.insert_at_cursor (""); - } + // if (this.text != "") { + // this.insert_at_cursor (""); + // } }); } @@ -87,7 +87,7 @@ public class Monitor.Search : Gtk.SearchEntry { public void activate_entry (string search_text = "") { this.text = ""; this.search_changed (); - this.insert_at_cursor (search_text); + // this.insert_at_cursor (search_text); } } diff --git a/src/Widgets/WidgetResource/WidgetResource.vala b/src/Widgets/WidgetResource/WidgetResource.vala index 6c22a07a..ff71de5a 100644 --- a/src/Widgets/WidgetResource/WidgetResource.vala +++ b/src/Widgets/WidgetResource/WidgetResource.vala @@ -1,5 +1,5 @@ public class Monitor.WidgetResource : Gtk.Box { - private LabelH4 _title = new LabelH4 (Utils.NO_DATA); + private Gtk.Label _title = new Gtk.Label (Utils.NO_DATA); public string title { set { diff --git a/src/meson.build b/src/meson.build index 24ef83a5..a3370e00 100644 --- a/src/meson.build +++ b/src/meson.build @@ -4,8 +4,8 @@ source_app_files = [ 'Utils.vala', # Views - 'Views/ProcessView/ProcessView.vala', - 'Views/ProcessView/ProcessInfoView/ProcessInfoView.vala', + # 'Views/ProcessView/ProcessView.vala', + # 'Views/ProcessView/ProcessInfoView/ProcessInfoView.vala', 'Views/ProcessView/ProcessTreeView/CPUProcessTreeView.vala', 'Views/PreferencesView/PreferencesView.vala', @@ -27,19 +27,19 @@ source_app_files = [ 'Views/ContainerView/ContainerInfoView/ContainerInfoCharts.vala', # Widgets related only to ProcessInfoView - 'Views/ProcessView/ProcessInfoView/Preventor.vala', + # 'Views/ProcessView/ProcessInfoView/Preventor.vala', 'Views/ProcessView/ProcessInfoView/ProcessInfoHeader.vala', 'Views/ProcessView/ProcessInfoView/ProcessInfoCPURAM.vala', 'Views/ProcessView/ProcessInfoView/ProcessInfoIOStats.vala', 'Views/ProcessView/ProcessInfoView/OpenFilesTreeView.vala', # Widgets - 'Widgets/Headerbar/Headerbar.vala', - 'Widgets/Headerbar/Search.vala', - 'Widgets/Statusbar/Statusbar.vala', + # 'Widgets/Headerbar/HeaderbarContent.vala', + # 'Widgets/Headerbar/Search.vala', + # 'Widgets/Statusbar/Statusbar.vala', 'Widgets/Labels/LabelVertical.vala', 'Widgets/Labels/LabelRoundy.vala', - 'Widgets/Labels/LabelH4.vala', + # 'Widgets/Labels/LabelH4.vala', 'Widgets/Chart/Chart.vala', 'Widgets/WidgetResource/WidgetResource.vala', From ec12c066e8c5719b96073ee984be393a672db409 Mon Sep 17 00:00:00 2001 From: stsdc <6031763+stsdc@users.noreply.github.com> Date: Tue, 21 Nov 2023 22:30:22 +0100 Subject: [PATCH 04/18] Statusbar ported --- src/MainWindow.vala | 8 ++--- src/Widgets/Statusbar/Statusbar.vala | 50 ++++++++++++++++------------ src/meson.build | 2 +- 3 files changed, 34 insertions(+), 26 deletions(-) diff --git a/src/MainWindow.vala b/src/MainWindow.vala index 21e606aa..b19fcd5a 100644 --- a/src/MainWindow.vala +++ b/src/MainWindow.vala @@ -12,7 +12,7 @@ public class Monitor.MainWindow : Gtk.ApplicationWindow { public ContainerView container_view; private Gtk.Stack stack; - // private Statusbar statusbar; + private Statusbar statusbar; public DBusServer dbusserver; @@ -63,7 +63,7 @@ public class Monitor.MainWindow : Gtk.ApplicationWindow { // headerbar.preferences_grid.attach (new PreferencesView (), 0, 0, 1, 1); // sv.show_all (); - // statusbar = new Statusbar (); + statusbar = new Statusbar (); var grid = new Gtk.Grid () { orientation = Gtk.Orientation.VERTICAL @@ -71,7 +71,7 @@ public class Monitor.MainWindow : Gtk.ApplicationWindow { grid.attach (headerbar, 0, 0, 1, 1); grid.attach (stack, 0, 1, 1, 1); - // grid.attach (statusbar, 0, 2, 1, 1); + grid.attach (statusbar, 0, 2, 1, 1); // set_content (grid); set_child (grid); @@ -93,7 +93,7 @@ public class Monitor.MainWindow : Gtk.ApplicationWindow { // system_view.update (); dbusserver.indicator_state (MonitorApp.settings.get_boolean ("indicator-state")); var res = resources.serialize (); - // statusbar.update (res); + statusbar.update (res); dbusserver.update (res); return false; }); diff --git a/src/Widgets/Statusbar/Statusbar.vala b/src/Widgets/Statusbar/Statusbar.vala index 081dd99e..12af227b 100644 --- a/src/Widgets/Statusbar/Statusbar.vala +++ b/src/Widgets/Statusbar/Statusbar.vala @@ -1,9 +1,14 @@ -public class Monitor.Statusbar : Gtk.ActionBar { +public class Monitor.Statusbar : Gtk.Box { Gtk.Label cpu_usage_label; Gtk.Label memory_usage_label; Gtk.Label swap_usage_label; construct { + + var actionbar = new Gtk.ActionBar () { + hexpand = true, + }; + var cpu_icon = new Gtk.Image.from_icon_name ("cpu-symbolic") { tooltip_text = _("CPU") }; @@ -16,25 +21,19 @@ public class Monitor.Statusbar : Gtk.ActionBar { tooltip_text = _("Swap") }; - cpu_usage_label = new Gtk.Label (_("Calculating…")); - cpu_usage_label.set_width_chars (4); - cpu_usage_label.xalign = 0; - pack_start (cpu_icon); - pack_start (cpu_usage_label); + cpu_usage_label = build_label (); + actionbar.pack_start (cpu_icon); + actionbar.pack_start (cpu_usage_label); - memory_usage_label = new Gtk.Label (_("Calculating…")); - memory_usage_label.set_width_chars (4); - memory_usage_label.xalign = 0; + memory_usage_label = build_label (); ram_icon.margin_start = 6; - pack_start (ram_icon); - pack_start (memory_usage_label); + actionbar.pack_start (ram_icon); + actionbar.pack_start (memory_usage_label); - swap_usage_label = new Gtk.Label (_("Calculating…")); - swap_usage_label.set_width_chars (4); - swap_usage_label.xalign = 0; + swap_usage_label = build_label (); swap_icon.margin_start = 6; - pack_start (swap_icon); - pack_start (swap_usage_label); + actionbar.pack_start (swap_icon); + actionbar.pack_start (swap_usage_label); var support_ua_label = new Gtk.LinkButton.with_label ("http://stand-with-ukraine.pp.ua/", _("🇺🇦")); var github_label = new Gtk.LinkButton.with_label ("https://github.com/stsdc/monitor", _("Check on Github")); @@ -45,12 +44,21 @@ public class Monitor.Statusbar : Gtk.ActionBar { version_label.get_style_context ().add_class ("dim-label"); // pack_end (build_separator_middot ()); - pack_end (github_label); - pack_end (build_separator_middot ()); - pack_end (version_label); - pack_end (build_separator_middot ()); - pack_end (support_ua_label); + actionbar.pack_end (github_label); + actionbar.pack_end (build_separator_middot ()); + actionbar.pack_end (version_label); + actionbar.pack_end (build_separator_middot ()); + actionbar.pack_end (support_ua_label); + append (actionbar); + } + + private Gtk.Label build_label () { + return new Gtk.Label (_("Calculating…")) { + width_chars = 4, + xalign = 0, + margin_start = 6, + }; } private Gtk.Label build_separator_middot () { diff --git a/src/meson.build b/src/meson.build index a3370e00..4da3ab5a 100644 --- a/src/meson.build +++ b/src/meson.build @@ -36,7 +36,7 @@ source_app_files = [ # Widgets # 'Widgets/Headerbar/HeaderbarContent.vala', # 'Widgets/Headerbar/Search.vala', - # 'Widgets/Statusbar/Statusbar.vala', + 'Widgets/Statusbar/Statusbar.vala', 'Widgets/Labels/LabelVertical.vala', 'Widgets/Labels/LabelRoundy.vala', # 'Widgets/Labels/LabelH4.vala', From 36a288d47f209011e52c9c9b11eaaeb2b2425d76 Mon Sep 17 00:00:00 2001 From: stsdc <6031763+stsdc@users.noreply.github.com> Date: Tue, 21 Nov 2023 22:34:20 +0100 Subject: [PATCH 05/18] try to fix CI --- .github/workflows/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 56c5845e..6daeacac 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -19,7 +19,7 @@ jobs: - name: Install Dependencies run: | apt update - apt install -y libgala-dev libgee-0.8-dev libglib2.0-dev libgranite-dev libgtk-3-dev libhandy-1-dev + apt install -y libgala-dev libgee-0.8-dev libglib2.0-dev libgranite-dev libgtk-4-dev libadwaita-1-dev apt install -y libdbus-glib-1-dev libwnck-3-dev libgtop2-dev libwingpanel-3.0-dev libudisks2-dev apt install -y libxnvctrl0 libxnvctrl-dev libcurl4-gnutls-dev libflatpak-dev apt install -y meson valac sassc git From 09ab1db8da3924df9d94585ad65b015d2cc30c29 Mon Sep 17 00:00:00 2001 From: stsdc <6031763+stsdc@users.noreply.github.com> Date: Tue, 21 Nov 2023 23:00:08 +0100 Subject: [PATCH 06/18] use gtk4 stylesheet --- data/stylesheet/_index.scss | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/data/stylesheet/_index.scss b/data/stylesheet/_index.scss index 5573eeb3..797044fd 100644 --- a/data/stylesheet/_index.scss +++ b/data/stylesheet/_index.scss @@ -1,5 +1,5 @@ -@import "../../subprojects/stylesheet/src/gtk-3.0/palette"; -@import "../../subprojects/stylesheet/src/gtk-3.0/index"; +@import "../../subprojects/stylesheet/src/gtk-4.0/palette"; +@import "../../subprojects/stylesheet/src/gtk-4.0/index"; $text_color: $fg_color; From ad002a11673c4015d07c505cdc2f16b6077c4cf9 Mon Sep 17 00:00:00 2001 From: stsdc <6031763+stsdc@users.noreply.github.com> Date: Tue, 21 Nov 2023 23:01:36 +0100 Subject: [PATCH 07/18] disable indicator building in CI --- src/MainWindow.vala | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/MainWindow.vala b/src/MainWindow.vala index b19fcd5a..c85e6f82 100644 --- a/src/MainWindow.vala +++ b/src/MainWindow.vala @@ -48,10 +48,10 @@ public class Monitor.MainWindow : Gtk.ApplicationWindow { stack_switcher.valign = Gtk.Align.CENTER; stack_switcher.set_stack (stack); - var headerbar = new Gtk.HeaderBar () { - title_widget = stack_switcher, - hexpand = true - }; + // var headerbar = new Gtk.HeaderBar () { + // title_widget = stack_switcher, + // hexpand = true + // }; // headerbar.search_revealer.set_reveal_child (stack.visible_child_name == "process_view"); // stack.notify["visible-child-name"].connect (() => { @@ -69,7 +69,7 @@ public class Monitor.MainWindow : Gtk.ApplicationWindow { orientation = Gtk.Orientation.VERTICAL }; - grid.attach (headerbar, 0, 0, 1, 1); + // grid.attach (headerbar, 0, 0, 1, 1); grid.attach (stack, 0, 1, 1, 1); grid.attach (statusbar, 0, 2, 1, 1); From 18f3c864c7fd676e94a671735815ececeb408cc7 Mon Sep 17 00:00:00 2001 From: stsdc <6031763+stsdc@users.noreply.github.com> Date: Tue, 21 Nov 2023 23:29:14 +0100 Subject: [PATCH 08/18] disable indicator for CI build --- .github/workflows/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 6daeacac..9e35391e 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -27,7 +27,7 @@ jobs: env: DESTDIR: out run: | - meson --prefix=/usr -Dindicator-wingpanel=enabled build + meson --prefix=/usr -Dindicator-wingpanel=disabled build cd build ninja From cea210d005d316629f00d0ca1371b34d703c8db2 Mon Sep 17 00:00:00 2001 From: stsdc <6031763+stsdc@users.noreply.github.com> Date: Wed, 22 Nov 2023 00:21:31 +0100 Subject: [PATCH 09/18] Headerbar ported --- src/MainWindow.vala | 9 ++++-- src/Models/TreeViewModel.vala | 4 +++ .../{HeaderbarContent.vala => Headerbar.vala} | 23 +++++++++------ src/Widgets/Headerbar/Search.vala | 28 +++++++++---------- src/meson.build | 4 +-- 5 files changed, 40 insertions(+), 28 deletions(-) rename src/Widgets/Headerbar/{HeaderbarContent.vala => Headerbar.vala} (66%) diff --git a/src/MainWindow.vala b/src/MainWindow.vala index c85e6f82..b4b834fa 100644 --- a/src/MainWindow.vala +++ b/src/MainWindow.vala @@ -5,7 +5,7 @@ public class Monitor.MainWindow : Gtk.ApplicationWindow { private Resources resources; // Widgets - // public HeaderbarContent headerbar_content; + public Headerbar headerbar; // public ProcessView process_view; // public SystemView system_view; @@ -36,8 +36,8 @@ public class Monitor.MainWindow : Gtk.ApplicationWindow { stack = new Gtk.Stack (); stack.set_transition_type (Gtk.StackTransitionType.SLIDE_LEFT_RIGHT); - // stack.add_titled (process_view, "process_view", _("Processes")); - // stack.add_titled (system_view, "system_view", _("System")); + stack.add_titled (new Gtk.Label ("string? str"), "process_view", _("Processes")); + stack.add_titled (new Gtk.Label ("string? str"), "system_view", _("System")); if (MonitorApp.settings.get_boolean ("containers-view-state")) { stack.add_titled (container_view, "container_view", _("Containers")); @@ -48,6 +48,9 @@ public class Monitor.MainWindow : Gtk.ApplicationWindow { stack_switcher.valign = Gtk.Align.CENTER; stack_switcher.set_stack (stack); + headerbar = new Headerbar (stack_switcher); + set_titlebar (headerbar); + // var headerbar = new Gtk.HeaderBar () { // title_widget = stack_switcher, // hexpand = true diff --git a/src/Models/TreeViewModel.vala b/src/Models/TreeViewModel.vala index 4394f823..cc469528 100644 --- a/src/Models/TreeViewModel.vala +++ b/src/Models/TreeViewModel.vala @@ -8,6 +8,10 @@ public enum Monitor.Column { } public class Monitor.TreeViewModel : Gtk.TreeStore { + private static GLib.Once instance; + public static unowned TreeViewModel get_default () { + return instance.once (() => { return new TreeViewModel (); }); + } public ProcessManager process_manager; private Gee.Map process_rows; public signal void added_first_row (); diff --git a/src/Widgets/Headerbar/HeaderbarContent.vala b/src/Widgets/Headerbar/Headerbar.vala similarity index 66% rename from src/Widgets/Headerbar/HeaderbarContent.vala rename to src/Widgets/Headerbar/Headerbar.vala index 7b6b142a..34fdf6c9 100644 --- a/src/Widgets/Headerbar/HeaderbarContent.vala +++ b/src/Widgets/Headerbar/Headerbar.vala @@ -1,5 +1,4 @@ -public class Monitor.HeaderbarContent { - private MainWindow window; +public class Monitor.Headerbar : Gtk.Box { public Search search; public Gtk.Grid preferences_grid; @@ -9,19 +8,23 @@ public class Monitor.HeaderbarContent { }; construct { - show_title_buttons = true; + // show_title_buttons = true; // has_subtitle = false; // title_widget = new Gtk.Label(_("Monitor")); } - public HeaderbarContent (MainWindow window) { - this.window = window; + public Headerbar (Gtk.Widget widget) { + + var headerbar = new Gtk.HeaderBar () { + hexpand = true, + }; + headerbar.set_title_widget (widget); var preferences_button = new Gtk.MenuButton (); preferences_button.has_tooltip = true; preferences_button.tooltip_text = (_("Settings")); preferences_button.set_icon_name ("open-menu"); - pack_end (preferences_button); + headerbar.pack_end (preferences_button); preferences_grid = new Gtk.Grid () { orientation = Gtk.Orientation.VERTICAL @@ -33,13 +36,17 @@ public class Monitor.HeaderbarContent { // preferences_grid.show_all (); - search = new Search (window) { + search = new Search () { valign = Gtk.Align.CENTER }; search_revealer.set_child (search); - pack_start (search_revealer); + headerbar.pack_start (search_revealer); + append (headerbar); + } + + public void set_title_widget (Gtk.Widget widget) { } } diff --git a/src/Widgets/Headerbar/Search.vala b/src/Widgets/Headerbar/Search.vala index 16388533..bef2767d 100644 --- a/src/Widgets/Headerbar/Search.vala +++ b/src/Widgets/Headerbar/Search.vala @@ -1,28 +1,26 @@ -public class Monitor.Search : Gtk.SearchEntry { - public MainWindow window { get; construct; } +public class Monitor.Search : Gtk.Box { private Gtk.TreeModelFilter filter_model; private CPUProcessTreeView process_tree_view; - - public Search (MainWindow window) { - Object (window: window); - } + private Gtk.SearchEntry search_entry; construct { - this.process_tree_view = window.process_view.process_tree_view; - this.placeholder_text = _("Search Process"); - this.tooltip_markup = Granite.markup_accel_tooltip ({ "F" }, _("Type process name or PID to search")); + search_entry = new Gtk.SearchEntry () { + tooltip_markup = Granite.markup_accel_tooltip ({ "F" }, _("Type process name or PID to search")), + }; + search_entry.placeholder_text = _("Search Process"); - filter_model = new Gtk.TreeModelFilter (window.process_view.treeview_model, null); + filter_model = new Gtk.TreeModelFilter (Monitor.TreeViewModel.get_default (), null); connect_signal (); filter_model.set_visible_func (filter_func); // process_tree_view.set_model (filter_model); var sort_model = new Gtk.TreeModelSort.with_model (filter_model); process_tree_view.set_model (sort_model); + append (search_entry); } private void connect_signal () { - this.search_changed.connect (() => { + search_entry.search_changed.connect (() => { // collapse tree only when search is focused and changed // if (this.is_focus) { // process_tree_view.collapse_all (); @@ -32,7 +30,7 @@ public class Monitor.Search : Gtk.SearchEntry { // focus on child row to avoid the app crashes by clicking "Kill/End Process" buttons in headerbar process_tree_view.focus_on_child_row (); - this.grab_focus (); + search_entry.grab_focus (); // if (this.text != "") { // this.insert_at_cursor (""); @@ -45,7 +43,7 @@ public class Monitor.Search : Gtk.SearchEntry { int pid_haystack; string cmd_haystack; bool found = false; - var needle = this.text; + var needle = search_entry.text; // should help with assertion errors, donno // if (needle == null) return true; @@ -85,8 +83,8 @@ public class Monitor.Search : Gtk.SearchEntry { // reset filter, grab focus and insert the character public void activate_entry (string search_text = "") { - this.text = ""; - this.search_changed (); + search_entry.text = ""; + search_entry.search_changed (); // this.insert_at_cursor (search_text); } diff --git a/src/meson.build b/src/meson.build index 4da3ab5a..73a5f30e 100644 --- a/src/meson.build +++ b/src/meson.build @@ -34,8 +34,8 @@ source_app_files = [ 'Views/ProcessView/ProcessInfoView/OpenFilesTreeView.vala', # Widgets - # 'Widgets/Headerbar/HeaderbarContent.vala', - # 'Widgets/Headerbar/Search.vala', + 'Widgets/Headerbar/Headerbar.vala', + 'Widgets/Headerbar/Search.vala', 'Widgets/Statusbar/Statusbar.vala', 'Widgets/Labels/LabelVertical.vala', 'Widgets/Labels/LabelRoundy.vala', From ef5a39cfb51649b6eb8c07e0ae01b58742f3d74e Mon Sep 17 00:00:00 2001 From: stsdc <6031763+stsdc@users.noreply.github.com> Date: Thu, 23 Nov 2023 17:54:47 +0100 Subject: [PATCH 10/18] Part of ProcessView ported --- src/MainWindow.vala | 10 +++---- .../ProcessInfoView/ProcessInfoView.vala | 26 +++++++++---------- src/Views/ProcessView/ProcessView.vala | 2 +- src/meson.build | 4 +-- 4 files changed, 20 insertions(+), 22 deletions(-) diff --git a/src/MainWindow.vala b/src/MainWindow.vala index b4b834fa..fd79415c 100644 --- a/src/MainWindow.vala +++ b/src/MainWindow.vala @@ -7,7 +7,7 @@ public class Monitor.MainWindow : Gtk.ApplicationWindow { // Widgets public Headerbar headerbar; - // public ProcessView process_view; + public ProcessView process_view; // public SystemView system_view; public ContainerView container_view; private Gtk.Stack stack; @@ -30,13 +30,13 @@ public class Monitor.MainWindow : Gtk.ApplicationWindow { resources = new Resources (); - // process_view = new ProcessView (); + process_view = new ProcessView (); // system_view = new SystemView (resources); container_view = new ContainerView (); stack = new Gtk.Stack (); stack.set_transition_type (Gtk.StackTransitionType.SLIDE_LEFT_RIGHT); - stack.add_titled (new Gtk.Label ("string? str"), "process_view", _("Processes")); + stack.add_titled (process_view, "process_view", _("Processes")); stack.add_titled (new Gtk.Label ("string? str"), "system_view", _("System")); if (MonitorApp.settings.get_boolean ("containers-view-state")) { @@ -86,9 +86,7 @@ public class Monitor.MainWindow : Gtk.ApplicationWindow { new Thread ("upd", () => { Timeout.add_seconds (MonitorApp.settings.get_int ("update-time"), () => { - // process_view.update (); - - + process_view.update (); container_view.update (); diff --git a/src/Views/ProcessView/ProcessInfoView/ProcessInfoView.vala b/src/Views/ProcessView/ProcessInfoView/ProcessInfoView.vala index b14b8821..45a01055 100644 --- a/src/Views/ProcessView/ProcessInfoView/ProcessInfoView.vala +++ b/src/Views/ProcessView/ProcessInfoView/ProcessInfoView.vala @@ -1,5 +1,5 @@ public class Monitor.ProcessInfoView : Gtk.Box { - private Preventor preventor; + // private Preventor preventor; private ProcessInfoIOStats process_info_io_stats = new ProcessInfoIOStats (); private Process _process; @@ -20,7 +20,7 @@ public class Monitor.ProcessInfoView : Gtk.Box { if (_process.uid != Posix.getuid ()) { process_info_cpu_ram.hide (); process_info_io_stats.hide (); - preventor.hide (); + // preventor.hide (); } else { _process.fd_permission_error.connect (show_permission_error_infobar); @@ -107,27 +107,27 @@ public class Monitor.ProcessInfoView : Gtk.Box { process_action_bar.append (end_process_button); process_action_bar.append (kill_process_button); - preventor = new Preventor (process_action_bar, "process_action_bar"); + // preventor = new Preventor (process_action_bar, "process_action_bar"); kill_process_button.clicked.connect (() => { - preventor.set_prevention (_("Confirm kill of the process?")); - preventor.confirmed.connect ((is_confirmed) => { - if (is_confirmed) process.kill (); // maybe add a toast that process killed - }); + // preventor.set_prevention (_("Confirm kill of the process?")); + // preventor.confirmed.connect ((is_confirmed) => { + // if (is_confirmed) process.kill (); // maybe add a toast that process killed + // }); }); end_process_button.clicked.connect (() => { - preventor.set_prevention (_("Confirm end of the process?")); - preventor.confirmed.connect ((is_confirmed) => { - if (is_confirmed) process.end (); // maybe add a toast that process ended - }); + // preventor.set_prevention (_("Confirm end of the process?")); + // preventor.confirmed.connect ((is_confirmed) => { + // if (is_confirmed) process.end (); // maybe add a toast that process ended + // }); }); - grid.attach (preventor, 0, 5, 1, 1); + // grid.attach (preventor, 0, 5, 1, 1); process_info_cpu_ram.hide (); process_info_io_stats.hide (); - preventor.hide (); + // preventor.hide (); } private void show_permission_error_infobar (string error) { diff --git a/src/Views/ProcessView/ProcessView.vala b/src/Views/ProcessView/ProcessView.vala index b6dabdac..7e7f2092 100644 --- a/src/Views/ProcessView/ProcessView.vala +++ b/src/Views/ProcessView/ProcessView.vala @@ -12,7 +12,7 @@ public class Monitor.ProcessView : Gtk.Box { } public ProcessView () { - treeview_model = new TreeViewModel (); + treeview_model = TreeViewModel.get_default (); process_tree_view = new CPUProcessTreeView (treeview_model); process_tree_view.process_selected.connect ((process) => on_process_selected (process)); diff --git a/src/meson.build b/src/meson.build index 73a5f30e..4c90de17 100644 --- a/src/meson.build +++ b/src/meson.build @@ -4,8 +4,8 @@ source_app_files = [ 'Utils.vala', # Views - # 'Views/ProcessView/ProcessView.vala', - # 'Views/ProcessView/ProcessInfoView/ProcessInfoView.vala', + 'Views/ProcessView/ProcessView.vala', + 'Views/ProcessView/ProcessInfoView/ProcessInfoView.vala', 'Views/ProcessView/ProcessTreeView/CPUProcessTreeView.vala', 'Views/PreferencesView/PreferencesView.vala', From e84497b435618827be8565264d8687adf854e3ec Mon Sep 17 00:00:00 2001 From: stsdc <6031763+stsdc@users.noreply.github.com> Date: Thu, 23 Nov 2023 18:39:24 +0100 Subject: [PATCH 11/18] fix showing process info view sidebar --- src/MainWindow.vala | 1 - src/Views/ProcessView/ProcessView.vala | 7 ++----- 2 files changed, 2 insertions(+), 6 deletions(-) diff --git a/src/MainWindow.vala b/src/MainWindow.vala index fd79415c..9f53096e 100644 --- a/src/MainWindow.vala +++ b/src/MainWindow.vala @@ -72,7 +72,6 @@ public class Monitor.MainWindow : Gtk.ApplicationWindow { orientation = Gtk.Orientation.VERTICAL }; - // grid.attach (headerbar, 0, 0, 1, 1); grid.attach (stack, 0, 1, 1, 1); grid.attach (statusbar, 0, 2, 1, 1); diff --git a/src/Views/ProcessView/ProcessView.vala b/src/Views/ProcessView/ProcessView.vala index 7e7f2092..223c6078 100644 --- a/src/Views/ProcessView/ProcessView.vala +++ b/src/Views/ProcessView/ProcessView.vala @@ -9,10 +9,7 @@ public class Monitor.ProcessView : Gtk.Box { // hide on startup // process_info_view.no_show_all = true; - } - - public ProcessView () { - treeview_model = TreeViewModel.get_default (); + treeview_model = TreeViewModel.get_default (); process_tree_view = new CPUProcessTreeView (treeview_model); process_tree_view.process_selected.connect ((process) => on_process_selected (process)); @@ -24,7 +21,7 @@ public class Monitor.ProcessView : Gtk.Box { var paned = new Gtk.Paned (Gtk.Orientation.HORIZONTAL); paned.set_start_child (process_tree_view_scrolled); paned.set_end_child (process_info_view); - // paned.set_min_position (200); + paned.set_shrink_end_child (false); paned.set_position (paned.max_position); paned.set_hexpand (true); From 39618638563f90e789916c278b5f97b6d9877f4c Mon Sep 17 00:00:00 2001 From: stsdc <6031763+stsdc@users.noreply.github.com> Date: Fri, 24 Nov 2023 13:15:16 +0100 Subject: [PATCH 12/18] Display graphs --- .../ProcessInfoView/ProcessInfoCPURAM.vala | 12 ++++++------ src/Widgets/Chart/Chart.vala | 6 +++--- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/src/Views/ProcessView/ProcessInfoView/ProcessInfoCPURAM.vala b/src/Views/ProcessView/ProcessInfoView/ProcessInfoCPURAM.vala index 22887513..b1f09c53 100644 --- a/src/Views/ProcessView/ProcessInfoView/ProcessInfoCPURAM.vala +++ b/src/Views/ProcessView/ProcessInfoView/ProcessInfoCPURAM.vala @@ -20,11 +20,11 @@ public class Monitor.ProcessInfoCPURAM : Gtk.Grid { cpu_chart.height_request = 60; ram_chart.height_request = 60; - var cpu_graph_box = new Gtk.Box (Gtk.Orientation.HORIZONTAL, 0); - cpu_graph_box.append (cpu_chart); + // var cpu_graph_box = new Gtk.Box (Gtk.Orientation.HORIZONTAL, 0); + // cpu_graph_box.append (cpu_chart); - var mem_graph_box = new Gtk.Box (Gtk.Orientation.HORIZONTAL, 0); - mem_graph_box.append (ram_chart); + // var mem_graph_box = new Gtk.Box (Gtk.Orientation.HORIZONTAL, 0); + // mem_graph_box.append (ram_chart); cpu_label = new Gtk.Label ("CPU: " + Utils.NO_DATA); cpu_label.get_style_context ().add_class (Granite.STYLE_CLASS_H4_LABEL); @@ -37,8 +37,8 @@ public class Monitor.ProcessInfoCPURAM : Gtk.Grid { attach (cpu_label, 0, 0, 1, 1); attach (ram_label, 1, 0, 1, 1); - attach (cpu_graph_box, 0, 1, 1, 1); - attach (mem_graph_box, 1, 1, 1, 1); + attach (cpu_chart, 0, 1, 1, 1); + attach (ram_chart, 1, 1, 1, 1); } public void set_charts_data (Process process) { diff --git a/src/Widgets/Chart/Chart.vala b/src/Widgets/Chart/Chart.vala index 7163a068..c81884b5 100644 --- a/src/Widgets/Chart/Chart.vala +++ b/src/Widgets/Chart/Chart.vala @@ -6,7 +6,7 @@ public class Monitor.Chart : Gtk.Box { construct { - get_style_context ().add_class ("graph"); + this.add_css_class ("graph"); vexpand = true; height_request = 120; @@ -27,12 +27,12 @@ public class Monitor.Chart : Gtk.Box { }; live_chart = new LiveChart.Chart (config); - // live_chart.expand = true; + live_chart.hexpand = true; live_chart.legend.visible = false; live_chart.grid.visible = true; live_chart.background.visible = false; // live_chart.background.color = Gdk.RGBA () { - // red = 1, green = 1, blue = 1, alpha = 1 + // red = 1f, green = 1f, blue = 1f, alpha = 1f // }; // White background } From 3783fd37ba28434a800b8c9db2bd2367352ebd87 Mon Sep 17 00:00:00 2001 From: stsdc <6031763+stsdc@users.noreply.github.com> Date: Fri, 24 Nov 2023 14:56:28 +0100 Subject: [PATCH 13/18] ProcessInfoView ported --- src/Services/Appearance.vala | 24 +++++---- .../ProcessInfoView/Preventor.vala | 19 +++---- .../ProcessInfoView/ProcessInfoHeader.vala | 1 + .../ProcessInfoView/ProcessInfoIOStats.vala | 4 +- .../ProcessInfoView/ProcessInfoView.vala | 49 +++++++++---------- src/Views/ProcessView/ProcessView.vala | 5 +- src/Widgets/Headerbar/Search.vala | 2 +- src/meson.build | 2 +- 8 files changed, 53 insertions(+), 53 deletions(-) diff --git a/src/Services/Appearance.vala b/src/Services/Appearance.vala index b127f520..371df0ac 100644 --- a/src/Services/Appearance.vala +++ b/src/Services/Appearance.vala @@ -6,29 +6,27 @@ public class Monitor.Appearance : Object { bool is_dark = granite_settings.prefers_color_scheme == Granite.Settings.ColorScheme.DARK; gtk_settings.gtk_application_prefer_dark_theme = is_dark; - - var provider = new Gtk.CssProvider (); - - if (is_dark) { - provider.load_from_resource ("/com/github/stsdc/monitor/monitor-dark.css"); - } else { - provider.load_from_resource ("/com/github/stsdc/monitor/monitor-light.css"); - } - - // @TODO: Fix styles - // Gtk.StyleContext.add_provider_for_screen (Gdk.Screen.get_default (), provider, Gtk.STYLE_PROVIDER_PRIORITY_APPLICATION); + load_style (is_dark); // We listen to changes in Granite.Settings and update our app if the user changes their preference granite_settings.notify["prefers-color-scheme"].connect (() => { is_dark = granite_settings.prefers_color_scheme == Granite.Settings.ColorScheme.DARK; gtk_settings.gtk_application_prefer_dark_theme = is_dark; + load_style (is_dark); + }); + } + + private static void load_style (bool is_dark) { + var provider = new Gtk.CssProvider (); if (is_dark) { provider.load_from_resource ("/com/github/stsdc/monitor/monitor-dark.css"); } else { provider.load_from_resource ("/com/github/stsdc/monitor/monitor-light.css"); } - }); + // @TODO: Fix styles + Gtk.StyleContext.add_provider_for_display (Gdk.Display.get_default (), provider, Gtk.STYLE_PROVIDER_PRIORITY_APPLICATION); + } public static void retrofit () { @@ -39,7 +37,7 @@ public class Monitor.Appearance : Object { var provider = new Gtk.CssProvider (); provider.load_from_resource ("/com/github/stsdc/monitor/monitor-retrofit.css"); // @TODO: Fix retrofitting styles - // Gtk.StyleContext.add_provider_for_screen (Gdk.Screen.get_default (), provider, Gtk.STYLE_PROVIDER_PRIORITY_APPLICATION); + Gtk.StyleContext.add_provider_for_display (Gdk.Display.get_default (), provider, Gtk.STYLE_PROVIDER_PRIORITY_APPLICATION); } } } diff --git a/src/Views/ProcessView/ProcessInfoView/Preventor.vala b/src/Views/ProcessView/ProcessInfoView/Preventor.vala index 8ebc8a34..19d58cde 100644 --- a/src/Views/ProcessView/ProcessInfoView/Preventor.vala +++ b/src/Views/ProcessView/ProcessInfoView/Preventor.vala @@ -1,4 +1,4 @@ -public class Monitor.Preventor : Gtk.Stack { +public class Monitor.Preventor : Gtk.Box { private Gtk.Box preventive_action_bar; private Gtk.Label confirmation_label; private Gtk.Button confirm_button; @@ -33,26 +33,27 @@ public class Monitor.Preventor : Gtk.Stack { public Preventor (Gtk.Widget _child, string name) { child_widget = _child; - add_named (child_widget, name); - add_named (preventive_action_bar, "preventive_action_bar"); + append (child_widget); + append (preventive_action_bar); deny_button.clicked.connect (() => { - set_transition_type (Gtk.StackTransitionType.SLIDE_UP); - set_visible_child (child_widget); + // set_transition_type (Gtk.StackTransitionType.SLIDE_UP); + // set_visible_child (child_widget); confirmed (false); }); confirm_button.clicked.connect (() => { - set_transition_type (Gtk.StackTransitionType.SLIDE_UP); - set_visible_child (child_widget); + // set_transition_type (Gtk.StackTransitionType.SLIDE_UP); + // set_visible_child (child_widget); confirmed (true); }); } public void set_prevention (string confirmation_text) { - set_transition_type (Gtk.StackTransitionType.SLIDE_DOWN); + // set_transition_type (Gtk.StackTransitionType.SLIDE_DOWN); confirmation_label.set_text (_(confirmation_text)); - set_visible_child (preventive_action_bar); + // set_visible_child (preventive_action_bar); + preventive_action_bar.visible = true; } } diff --git a/src/Views/ProcessView/ProcessInfoView/ProcessInfoHeader.vala b/src/Views/ProcessView/ProcessInfoView/ProcessInfoHeader.vala index b4840181..5cd6ebb2 100644 --- a/src/Views/ProcessView/ProcessInfoView/ProcessInfoHeader.vala +++ b/src/Views/ProcessView/ProcessInfoView/ProcessInfoHeader.vala @@ -15,6 +15,7 @@ public class Monitor.ProcessInfoHeader : Gtk.Grid { construct { column_spacing = 12; + width_request = 270; /* *INDENT-OFF* */ regex = /(?i:^.*\.(xpm|png)$)/; // vala-lint=space-before-paren, diff --git a/src/Views/ProcessView/ProcessInfoView/ProcessInfoIOStats.vala b/src/Views/ProcessView/ProcessInfoView/ProcessInfoIOStats.vala index 177eaf21..1a52a2fe 100644 --- a/src/Views/ProcessView/ProcessInfoView/ProcessInfoIOStats.vala +++ b/src/Views/ProcessView/ProcessInfoView/ProcessInfoIOStats.vala @@ -14,6 +14,8 @@ public class Monitor.ProcessInfoIOStats : Gtk.Grid { row_spacing = 6; column_homogeneous = true; row_homogeneous = false; + width_request = 270; + vexpand = true; var opened_files_label = create_label (_("Opened files")); opened_files_label.get_style_context ().add_class (Granite.STYLE_CLASS_H4_LABEL); @@ -52,7 +54,7 @@ public class Monitor.ProcessInfoIOStats : Gtk.Grid { var open_files_tree_view_scrolled = new Gtk.ScrolledWindow (); open_files_tree_view = new OpenFilesTreeView (model); open_files_tree_view_scrolled.set_child (open_files_tree_view); - attach (open_files_tree_view_scrolled, 0, 4, 3, 1); + // attach (open_files_tree_view_scrolled, 0, 4, 3, 1); } public void update (Process process) { diff --git a/src/Views/ProcessView/ProcessInfoView/ProcessInfoView.vala b/src/Views/ProcessView/ProcessInfoView/ProcessInfoView.vala index 45a01055..58c68700 100644 --- a/src/Views/ProcessView/ProcessInfoView/ProcessInfoView.vala +++ b/src/Views/ProcessView/ProcessInfoView/ProcessInfoView.vala @@ -1,5 +1,4 @@ public class Monitor.ProcessInfoView : Gtk.Box { - // private Preventor preventor; private ProcessInfoIOStats process_info_io_stats = new ProcessInfoIOStats (); private Process _process; @@ -20,7 +19,8 @@ public class Monitor.ProcessInfoView : Gtk.Box { if (_process.uid != Posix.getuid ()) { process_info_cpu_ram.hide (); process_info_io_stats.hide (); - // preventor.hide (); + end_process_button.hide (); + kill_process_button.hide (); } else { _process.fd_permission_error.connect (show_permission_error_infobar); @@ -32,7 +32,11 @@ public class Monitor.ProcessInfoView : Gtk.Box { permission_error_infobar.revealed = false; process_info_io_stats.open_files_tree_view.model.process = _process; - // process_info_io_stats.open_files_tree_view.show_all (); + process_info_io_stats.open_files_tree_view.set_visible (true); + process_info_cpu_ram.set_visible (true); + process_info_io_stats.set_visible (true); + end_process_button.show (); + kill_process_button.show (); } } } @@ -56,7 +60,7 @@ public class Monitor.ProcessInfoView : Gtk.Box { permission_error_infobar.revealed = false; permission_error_label = new Gtk.Label (Utils.NO_DATA); permission_error_infobar.add_child (permission_error_label); - append (permission_error_infobar); + // append (permission_error_infobar); var grid = new Gtk.Grid () { margin_start = 12, @@ -82,52 +86,45 @@ public class Monitor.ProcessInfoView : Gtk.Box { grid.attach (separator, 0, 1, 1, 1); process_info_cpu_ram = new ProcessInfoCPURAM (); - process_info_cpu_ram.hide (); grid.attach (process_info_cpu_ram, 0, 2, 1, 1); grid.attach (process_info_io_stats, 0, 4, 1, 1); - var process_action_bar = new Gtk.Box (Gtk.Orientation.HORIZONTAL, 0); - process_action_bar.margin_top = 12; - process_action_bar.valign = Gtk.Align.END; - process_action_bar.halign = Gtk.Align.END; + var process_action_bar = new Gtk.Box (Gtk.Orientation.HORIZONTAL, 0) { + margin_top = 12, + margin_bottom = 12, + margin_end = 12, + valign = Gtk.Align.END, + halign = Gtk.Align.END + }; end_process_button = new Gtk.Button.with_label (_("End Process")); end_process_button.margin_end = 10; end_process_button.tooltip_markup = Granite.markup_accel_tooltip ({ "E" }, _("End selected process")); var end_process_button_context = end_process_button.get_style_context (); - // end_process_button_context.add_class (Gtk.STYLE_CLASS_SUGGESTED_ACTION); + end_process_button_context.add_class (Granite.STYLE_CLASS_SUGGESTED_ACTION); kill_process_button = new Gtk.Button.with_label (_("Kill Process")); kill_process_button.tooltip_markup = Granite.markup_accel_tooltip ({ "K" }, _("Kill selected process")); var kill_process_button_context = kill_process_button.get_style_context (); - // kill_process_button_context.add_class (Gtk.STYLE_CLASS_DESTRUCTIVE_ACTION); + kill_process_button_context.add_class (Granite.STYLE_CLASS_DESTRUCTIVE_ACTION); process_action_bar.append (end_process_button); process_action_bar.append (kill_process_button); - // preventor = new Preventor (process_action_bar, "process_action_bar"); + append (grid); + append (process_action_bar); + kill_process_button.clicked.connect (() => { - // preventor.set_prevention (_("Confirm kill of the process?")); - // preventor.confirmed.connect ((is_confirmed) => { - // if (is_confirmed) process.kill (); // maybe add a toast that process killed - // }); + process.kill (); // maybe add a toast that process killed }); end_process_button.clicked.connect (() => { - // preventor.set_prevention (_("Confirm end of the process?")); - // preventor.confirmed.connect ((is_confirmed) => { - // if (is_confirmed) process.end (); // maybe add a toast that process ended - // }); + process.end (); // maybe add a toast that process ended }); - // grid.attach (preventor, 0, 5, 1, 1); - - process_info_cpu_ram.hide (); - process_info_io_stats.hide (); - // preventor.hide (); } private void show_permission_error_infobar (string error) { @@ -144,7 +141,7 @@ public class Monitor.ProcessInfoView : Gtk.Box { process_info_io_stats.update (process); process_info_io_stats.open_files_tree_view.model.process = _process; - // process_info_io_stats.open_files_tree_view.show_all (); + process_info_io_stats.open_files_tree_view.set_visible (true); } } diff --git a/src/Views/ProcessView/ProcessView.vala b/src/Views/ProcessView/ProcessView.vala index 223c6078..637acd90 100644 --- a/src/Views/ProcessView/ProcessView.vala +++ b/src/Views/ProcessView/ProcessView.vala @@ -9,7 +9,7 @@ public class Monitor.ProcessView : Gtk.Box { // hide on startup // process_info_view.no_show_all = true; - treeview_model = TreeViewModel.get_default (); + treeview_model = TreeViewModel.get_default (); process_tree_view = new CPUProcessTreeView (treeview_model); process_tree_view.process_selected.connect ((process) => on_process_selected (process)); @@ -22,7 +22,8 @@ public class Monitor.ProcessView : Gtk.Box { paned.set_start_child (process_tree_view_scrolled); paned.set_end_child (process_info_view); paned.set_shrink_end_child (false); - paned.set_position (paned.max_position); + paned.set_resize_end_child (false); + paned.set_position (paned.max_position - 200); paned.set_hexpand (true); append (paned); diff --git a/src/Widgets/Headerbar/Search.vala b/src/Widgets/Headerbar/Search.vala index bef2767d..9ec42b62 100644 --- a/src/Widgets/Headerbar/Search.vala +++ b/src/Widgets/Headerbar/Search.vala @@ -15,7 +15,7 @@ public class Monitor.Search : Gtk.Box { // process_tree_view.set_model (filter_model); var sort_model = new Gtk.TreeModelSort.with_model (filter_model); - process_tree_view.set_model (sort_model); + // process_tree_view.set_model (sort_model); append (search_entry); } diff --git a/src/meson.build b/src/meson.build index 4c90de17..beb1a0f9 100644 --- a/src/meson.build +++ b/src/meson.build @@ -27,7 +27,7 @@ source_app_files = [ 'Views/ContainerView/ContainerInfoView/ContainerInfoCharts.vala', # Widgets related only to ProcessInfoView - # 'Views/ProcessView/ProcessInfoView/Preventor.vala', + 'Views/ProcessView/ProcessInfoView/Preventor.vala', 'Views/ProcessView/ProcessInfoView/ProcessInfoHeader.vala', 'Views/ProcessView/ProcessInfoView/ProcessInfoCPURAM.vala', 'Views/ProcessView/ProcessInfoView/ProcessInfoIOStats.vala', From 1546c4ec513a4361c1bf69abfe3a0f2d2979d517 Mon Sep 17 00:00:00 2001 From: stsdc <6031763+stsdc@users.noreply.github.com> Date: Sat, 25 Nov 2023 00:05:20 +0100 Subject: [PATCH 14/18] Preventor ported --- .../ProcessInfoView/Preventor.vala | 46 ++++++++++--------- .../ProcessInfoView/ProcessInfoView.vala | 18 ++++++-- 2 files changed, 40 insertions(+), 24 deletions(-) diff --git a/src/Views/ProcessView/ProcessInfoView/Preventor.vala b/src/Views/ProcessView/ProcessInfoView/Preventor.vala index 19d58cde..5b6f50b5 100644 --- a/src/Views/ProcessView/ProcessInfoView/Preventor.vala +++ b/src/Views/ProcessView/ProcessInfoView/Preventor.vala @@ -4,25 +4,28 @@ public class Monitor.Preventor : Gtk.Box { private Gtk.Button confirm_button; private Gtk.Button deny_button; - private Gtk.Widget child_widget; + private Gtk.Stack stack; public signal void confirmed (bool is_confirmed); construct { valign = Gtk.Align.END; + halign = Gtk.Align.END; - preventive_action_bar = new Gtk.Box (Gtk.Orientation.HORIZONTAL, 0); - preventive_action_bar.valign = Gtk.Align.START; - preventive_action_bar.halign = Gtk.Align.END; - preventive_action_bar.margin_top = 10; + preventive_action_bar = new Gtk.Box (Gtk.Orientation.HORIZONTAL, 0){ + valign = Gtk.Align.START, + halign = Gtk.Align.END, + margin_top = 10 + }; + confirmation_label = new Gtk.Label (_("Are you sure you want to do this?")){ + margin_end = 10 + }; - confirmation_label = new Gtk.Label (_("Are you sure you want to do this?")); - confirmation_label.margin_end = 10; - - confirm_button = new Gtk.Button.with_label (_("Yes")); - confirm_button.margin_end = 10; - // confirm_button.get_style_context ().add_class (Gtk.STYLE_CLASS_DESTRUCTIVE_ACTION); + confirm_button = new Gtk.Button.with_label (_("Yes")) { + margin_end = 10 + }; + confirm_button.add_css_class (Granite.STYLE_CLASS_DESTRUCTIVE_ACTION); deny_button = new Gtk.Button.with_label (_("No")); @@ -31,28 +34,29 @@ public class Monitor.Preventor : Gtk.Box { preventive_action_bar.append (deny_button); } - public Preventor (Gtk.Widget _child, string name) { - child_widget = _child; - append (child_widget); - append (preventive_action_bar); + public Preventor (Gtk.Widget child_widget, string name) { + stack = new Gtk.Stack (); + append (stack); + stack.add_named (child_widget, name); + stack.add_named (preventive_action_bar, "preventive_action_bar"); deny_button.clicked.connect (() => { - // set_transition_type (Gtk.StackTransitionType.SLIDE_UP); - // set_visible_child (child_widget); + stack.set_transition_type (Gtk.StackTransitionType.SLIDE_UP); + stack.set_visible_child (child_widget); confirmed (false); }); confirm_button.clicked.connect (() => { - // set_transition_type (Gtk.StackTransitionType.SLIDE_UP); - // set_visible_child (child_widget); + stack.set_transition_type (Gtk.StackTransitionType.SLIDE_UP); + stack.set_visible_child (child_widget); confirmed (true); }); } public void set_prevention (string confirmation_text) { - // set_transition_type (Gtk.StackTransitionType.SLIDE_DOWN); + stack.set_transition_type (Gtk.StackTransitionType.SLIDE_DOWN); confirmation_label.set_text (_(confirmation_text)); - // set_visible_child (preventive_action_bar); + stack.set_visible_child (preventive_action_bar); preventive_action_bar.visible = true; } diff --git a/src/Views/ProcessView/ProcessInfoView/ProcessInfoView.vala b/src/Views/ProcessView/ProcessInfoView/ProcessInfoView.vala index 58c68700..54917bc9 100644 --- a/src/Views/ProcessView/ProcessInfoView/ProcessInfoView.vala +++ b/src/Views/ProcessView/ProcessInfoView/ProcessInfoView.vala @@ -1,4 +1,5 @@ public class Monitor.ProcessInfoView : Gtk.Box { + private Preventor preventor; private ProcessInfoIOStats process_info_io_stats = new ProcessInfoIOStats (); private Process _process; @@ -21,6 +22,7 @@ public class Monitor.ProcessInfoView : Gtk.Box { process_info_io_stats.hide (); end_process_button.hide (); kill_process_button.hide (); + preventor.hide (); } else { _process.fd_permission_error.connect (show_permission_error_infobar); @@ -37,6 +39,7 @@ public class Monitor.ProcessInfoView : Gtk.Box { process_info_io_stats.set_visible (true); end_process_button.show (); kill_process_button.show (); + preventor.show(); } } } @@ -114,15 +117,24 @@ public class Monitor.ProcessInfoView : Gtk.Box { process_action_bar.append (kill_process_button); append (grid); - append (process_action_bar); + + preventor = new Preventor (process_action_bar, "process_action_bar"); + grid.attach (preventor, 0, 5, 1, 1); + preventor.hide (); kill_process_button.clicked.connect (() => { - process.kill (); // maybe add a toast that process killed + preventor.set_prevention (_("Confirm kill of the process?")); + preventor.confirmed.connect ((is_confirmed) => { + if (is_confirmed) process.kill (); // maybe add a toast that process killed + }); }); end_process_button.clicked.connect (() => { - process.end (); // maybe add a toast that process ended + preventor.set_prevention (_("Confirm end of the process?")); + preventor.confirmed.connect ((is_confirmed) => { + if (is_confirmed) process.end (); // maybe add a toast that process ended + }); }); } From 5b1ddcf9e9ee35cb51b5f6a2275c98d3837ea043 Mon Sep 17 00:00:00 2001 From: stsdc <6031763+stsdc@users.noreply.github.com> Date: Sat, 25 Nov 2023 00:34:28 +0100 Subject: [PATCH 15/18] Headerbar is now built in MainWindow --- src/MainWindow.vala | 63 +++++++++++++++++++++++++++++++-------------- src/meson.build | 2 +- 2 files changed, 45 insertions(+), 20 deletions(-) diff --git a/src/MainWindow.vala b/src/MainWindow.vala index 9f53096e..5ff198f2 100644 --- a/src/MainWindow.vala +++ b/src/MainWindow.vala @@ -3,9 +3,10 @@ public class Monitor.MainWindow : Gtk.ApplicationWindow { private Shortcuts shortcuts; private Resources resources; + // private Adw.HeaderBar headerbar; // Widgets - public Headerbar headerbar; + // public Headerbar headerbar; public ProcessView process_view; // public SystemView system_view; @@ -43,29 +44,13 @@ public class Monitor.MainWindow : Gtk.ApplicationWindow { stack.add_titled (container_view, "container_view", _("Containers")); } - Gtk.StackSwitcher stack_switcher = new Gtk.StackSwitcher (); stack_switcher.valign = Gtk.Align.CENTER; stack_switcher.set_stack (stack); - headerbar = new Headerbar (stack_switcher); + var headerbar = this.build_headerbar (stack_switcher); set_titlebar (headerbar); - // var headerbar = new Gtk.HeaderBar () { - // title_widget = stack_switcher, - // hexpand = true - // }; - - // headerbar.search_revealer.set_reveal_child (stack.visible_child_name == "process_view"); - // stack.notify["visible-child-name"].connect (() => { - // headerbar.search_revealer.set_reveal_child (stack.visible_child_name == "process_view"); - // }); - - // headerbar_content = new HeaderbarContent (this); - // headerbar.set_title_widget (stack_switcher); - // headerbar.preferences_grid.attach (new PreferencesView (), 0, 0, 1, 1); - // sv.show_all (); - statusbar = new Statusbar (); var grid = new Gtk.Grid () { @@ -75,7 +60,6 @@ public class Monitor.MainWindow : Gtk.ApplicationWindow { grid.attach (stack, 0, 1, 1, 1); grid.attach (statusbar, 0, 2, 1, 1); - // set_content (grid); set_child (grid); present (); @@ -142,6 +126,47 @@ public class Monitor.MainWindow : Gtk.ApplicationWindow { stack.visible_child_name = MonitorApp.settings.get_string ("opened-view"); } + private Adw.HeaderBar build_headerbar (Gtk.Widget widget) { + // The headerbar + var headerbar = new Adw.HeaderBar (); + headerbar.set_title_widget (widget); + + // Preferences button + var preferences_button = new Gtk.MenuButton (); + preferences_button.has_tooltip = true; + preferences_button.tooltip_text = (_("Settings")); + preferences_button.set_icon_name ("open-menu"); + headerbar.pack_end (preferences_button); + + var preferences_grid = new Gtk.Grid () { + orientation = Gtk.Orientation.VERTICAL + }; + + var preferences_popover = new Gtk.Popover (); + preferences_popover.set_child (preferences_grid); + preferences_button.popover = preferences_popover; + + preferences_grid.attach (new PreferencesView (), 0, 0, 1, 1); + + // Search entry + var search = new Search () { + valign = Gtk.Align.CENTER + }; + + Gtk.Revealer search_revealer = new Gtk.Revealer () { + transition_type = Gtk.RevealerTransitionType.SLIDE_LEFT, + }; + search_revealer.set_child (search); + headerbar.pack_start (search_revealer); + + search_revealer.set_reveal_child (stack.visible_child_name == "process_view"); + stack.notify["visible-child-name"].connect (() => { + search_revealer.set_reveal_child (stack.visible_child_name == "process_view"); + }); + + return headerbar; + } + private void setup_window_state () { int window_width = MonitorApp.settings.get_int ("window-width"); int window_height = MonitorApp.settings.get_int ("window-height"); diff --git a/src/meson.build b/src/meson.build index beb1a0f9..9667c9c2 100644 --- a/src/meson.build +++ b/src/meson.build @@ -34,7 +34,7 @@ source_app_files = [ 'Views/ProcessView/ProcessInfoView/OpenFilesTreeView.vala', # Widgets - 'Widgets/Headerbar/Headerbar.vala', + # 'Widgets/Headerbar/Headerbar.vala', 'Widgets/Headerbar/Search.vala', 'Widgets/Statusbar/Statusbar.vala', 'Widgets/Labels/LabelVertical.vala', From 3cb548fec07496e6ef7e33bf545478becc03295d Mon Sep 17 00:00:00 2001 From: stsdc <6031763+stsdc@users.noreply.github.com> Date: Sat, 25 Nov 2023 21:29:42 +0100 Subject: [PATCH 16/18] Fix search --- src/MainWindow.vala | 4 ++-- .../ProcessView/ProcessInfoView/Preventor.vala | 6 +++--- src/Widgets/Headerbar/Search.vala | 18 ++++++++++-------- 3 files changed, 15 insertions(+), 13 deletions(-) diff --git a/src/MainWindow.vala b/src/MainWindow.vala index 5ff198f2..5bc94e7a 100644 --- a/src/MainWindow.vala +++ b/src/MainWindow.vala @@ -149,8 +149,8 @@ public class Monitor.MainWindow : Gtk.ApplicationWindow { preferences_grid.attach (new PreferencesView (), 0, 0, 1, 1); // Search entry - var search = new Search () { - valign = Gtk.Align.CENTER + var search = new Search (process_view.process_tree_view) { + valign = Gtk.Align.CENTER, }; Gtk.Revealer search_revealer = new Gtk.Revealer () { diff --git a/src/Views/ProcessView/ProcessInfoView/Preventor.vala b/src/Views/ProcessView/ProcessInfoView/Preventor.vala index 5b6f50b5..b676e626 100644 --- a/src/Views/ProcessView/ProcessInfoView/Preventor.vala +++ b/src/Views/ProcessView/ProcessInfoView/Preventor.vala @@ -12,13 +12,13 @@ public class Monitor.Preventor : Gtk.Box { valign = Gtk.Align.END; halign = Gtk.Align.END; - preventive_action_bar = new Gtk.Box (Gtk.Orientation.HORIZONTAL, 0){ + preventive_action_bar = new Gtk.Box (Gtk.Orientation.HORIZONTAL, 0) { valign = Gtk.Align.START, halign = Gtk.Align.END, margin_top = 10 }; - confirmation_label = new Gtk.Label (_("Are you sure you want to do this?")){ + confirmation_label = new Gtk.Label (_("Are you sure you want to do this?")) { margin_end = 10 }; @@ -35,7 +35,7 @@ public class Monitor.Preventor : Gtk.Box { } public Preventor (Gtk.Widget child_widget, string name) { - stack = new Gtk.Stack (); + stack = new Gtk.Stack (); append (stack); stack.add_named (child_widget, name); stack.add_named (preventive_action_bar, "preventive_action_bar"); diff --git a/src/Widgets/Headerbar/Search.vala b/src/Widgets/Headerbar/Search.vala index 9ec42b62..d052b33e 100644 --- a/src/Widgets/Headerbar/Search.vala +++ b/src/Widgets/Headerbar/Search.vala @@ -1,9 +1,11 @@ public class Monitor.Search : Gtk.Box { private Gtk.TreeModelFilter filter_model; - private CPUProcessTreeView process_tree_view; + public CPUProcessTreeView process_tree_view; private Gtk.SearchEntry search_entry; - construct { + public Search (CPUProcessTreeView _process_tree_view) { + this.process_tree_view = _process_tree_view; + search_entry = new Gtk.SearchEntry () { tooltip_markup = Granite.markup_accel_tooltip ({ "F" }, _("Type process name or PID to search")), }; @@ -15,16 +17,16 @@ public class Monitor.Search : Gtk.Box { // process_tree_view.set_model (filter_model); var sort_model = new Gtk.TreeModelSort.with_model (filter_model); - // process_tree_view.set_model (sort_model); + process_tree_view.set_model (sort_model); append (search_entry); } private void connect_signal () { search_entry.search_changed.connect (() => { // collapse tree only when search is focused and changed - // if (this.is_focus) { - // process_tree_view.collapse_all (); - // } + if (search_entry.is_focus()) { + process_tree_view.collapse_all (); + } filter_model.refilter (); @@ -32,8 +34,8 @@ public class Monitor.Search : Gtk.Box { process_tree_view.focus_on_child_row (); search_entry.grab_focus (); - // if (this.text != "") { - // this.insert_at_cursor (""); + // if (search_entry.text != "") { + // search_entry.insert_at_cursor (""); // } }); } From d8f03cb5121c71b022962ca71d789a373d193b86 Mon Sep 17 00:00:00 2001 From: stsdc <6031763+stsdc@users.noreply.github.com> Date: Sun, 26 Nov 2023 18:15:20 +0100 Subject: [PATCH 17/18] Port SystemView --- src/MainWindow.vala | 15 +++++-------- src/Views/SystemView/SystemCPUView.vala | 17 +++++++------- src/Views/SystemView/SystemNetworkView.vala | 8 ++++++- src/Views/SystemView/SystemStorageView.vala | 8 ++++++- src/Widgets/Headerbar/Search.vala | 10 ++++----- src/Widgets/Labels/LabelH4.vala | 2 +- .../WidgetResource/WidgetResource.vala | 22 ++++++++++++------- 7 files changed, 49 insertions(+), 33 deletions(-) diff --git a/src/MainWindow.vala b/src/MainWindow.vala index 5bc94e7a..53fa2f2d 100644 --- a/src/MainWindow.vala +++ b/src/MainWindow.vala @@ -3,13 +3,9 @@ public class Monitor.MainWindow : Gtk.ApplicationWindow { private Shortcuts shortcuts; private Resources resources; - // private Adw.HeaderBar headerbar; - - // Widgets - // public Headerbar headerbar; public ProcessView process_view; - // public SystemView system_view; + public SystemView system_view; public ContainerView container_view; private Gtk.Stack stack; @@ -21,6 +17,8 @@ public class Monitor.MainWindow : Gtk.ApplicationWindow { // Constructs a main window public MainWindow (MonitorApp app) { // Adw.init (); + Granite.init (); + this.set_application (app); setup_window_state (); @@ -32,13 +30,13 @@ public class Monitor.MainWindow : Gtk.ApplicationWindow { resources = new Resources (); process_view = new ProcessView (); - // system_view = new SystemView (resources); + system_view = new SystemView (resources); container_view = new ContainerView (); stack = new Gtk.Stack (); stack.set_transition_type (Gtk.StackTransitionType.SLIDE_LEFT_RIGHT); stack.add_titled (process_view, "process_view", _("Processes")); - stack.add_titled (new Gtk.Label ("string? str"), "system_view", _("System")); + stack.add_titled (system_view, "system_view", _("System")); if (MonitorApp.settings.get_boolean ("containers-view-state")) { stack.add_titled (container_view, "container_view", _("Containers")); @@ -74,7 +72,7 @@ public class Monitor.MainWindow : Gtk.ApplicationWindow { Idle.add (() => { - // system_view.update (); + system_view.update (); dbusserver.indicator_state (MonitorApp.settings.get_boolean ("indicator-state")); var res = resources.serialize (); statusbar.update (res); @@ -88,7 +86,6 @@ public class Monitor.MainWindow : Gtk.ApplicationWindow { dbusserver.quit.connect (() => app.quit ()); dbusserver.show.connect (() => { - // this.deiconify (); this.present (); setup_window_state (); this.present (); diff --git a/src/Views/SystemView/SystemCPUView.vala b/src/Views/SystemView/SystemCPUView.vala index 07aaa80b..d1e42d32 100644 --- a/src/Views/SystemView/SystemCPUView.vala +++ b/src/Views/SystemView/SystemCPUView.vala @@ -14,14 +14,14 @@ public class Monitor.SystemCPUView : Monitor.WidgetResource { construct { core_label_list = new Gee.ArrayList (); - cpu_frequency_label = new LabelRoundy (_("Frequency")) { + cpu_frequency_label = new LabelRoundy (_("FREQUENCY")) { margin_start = 6, margin_end = 6, margin_top = 2, margin_bottom = 6, }; - cpu_temperature_label = new LabelRoundy (_("Temperature")) { + cpu_temperature_label = new LabelRoundy (_("TEMPERATURE")) { margin_start = 6, margin_end = 6, margin_top = 2, @@ -77,12 +77,12 @@ public class Monitor.SystemCPUView : Monitor.WidgetResource { public void update () { cpu_frequency_chart.update (0, cpu.frequency); - // int temperature_index = 0; - // foreach (var temperature in cpu.paths_temperatures.values) { - // debug (temperature.input); - // cpu_temperature_chart.update (temperature_index, int.parse (temperature.input) / 1000); - // temperature_index++; - // }] + // int temperature_index = 0; + // foreach (var temperature in cpu.paths_temperatures.values) { + // debug (temperature.input); + // cpu_temperature_chart.update (temperature_index, int.parse (temperature.input) / 1000); + // temperature_index++; + // }] cpu_temperature_chart.update (0, cpu.temperature_mean); cpu_temperature_label.set_text (("%.2f %s").printf (cpu.temperature_mean, _("℃"))); @@ -166,4 +166,5 @@ public class Monitor.SystemCPUView : Monitor.WidgetResource { return grid; } + } diff --git a/src/Views/SystemView/SystemNetworkView.vala b/src/Views/SystemView/SystemNetworkView.vala index b32d178d..a49a7ce6 100644 --- a/src/Views/SystemView/SystemNetworkView.vala +++ b/src/Views/SystemView/SystemNetworkView.vala @@ -18,7 +18,13 @@ public class Monitor.SystemNetworkView : Gtk.Grid { public SystemNetworkView (Network _network) { network = _network; - network_name_label = new Gtk.Label (_("Network")); + network_name_label = new Gtk.Label (_("Network")) { + valign = Gtk.Align.START, + halign = Gtk.Align.START, + margin_start = 6, + ellipsize = Pango.EllipsizeMode.END, + }; + network_name_label.add_css_class ("h4"); network_download_label = new LabelRoundy (_("DOWN")); network_download_label.val.set_width_chars (7); diff --git a/src/Views/SystemView/SystemStorageView.vala b/src/Views/SystemView/SystemStorageView.vala index 7872dac7..bd0b36a1 100644 --- a/src/Views/SystemView/SystemStorageView.vala +++ b/src/Views/SystemView/SystemStorageView.vala @@ -20,7 +20,13 @@ public class Monitor.SystemStorageView : Gtk.Grid { public SystemStorageView (Storage _storage) { storage = _storage; - storage_name_label = new Gtk.Label (_("Storage")); + storage_name_label = new Gtk.Label (_("Storage")) { + valign = Gtk.Align.START, + halign = Gtk.Align.START, + margin_start = 6, + ellipsize = Pango.EllipsizeMode.END, + }; + storage_name_label.add_css_class ("h4"); storage_write_label = new LabelRoundy (_("WRITE")); storage_write_label.val.set_width_chars (7); diff --git a/src/Widgets/Headerbar/Search.vala b/src/Widgets/Headerbar/Search.vala index d052b33e..a4577218 100644 --- a/src/Widgets/Headerbar/Search.vala +++ b/src/Widgets/Headerbar/Search.vala @@ -24,7 +24,7 @@ public class Monitor.Search : Gtk.Box { private void connect_signal () { search_entry.search_changed.connect (() => { // collapse tree only when search is focused and changed - if (search_entry.is_focus()) { + if (search_entry.is_focus ()) { process_tree_view.collapse_all (); } @@ -34,9 +34,9 @@ public class Monitor.Search : Gtk.Box { process_tree_view.focus_on_child_row (); search_entry.grab_focus (); - // if (search_entry.text != "") { - // search_entry.insert_at_cursor (""); - // } + // if (search_entry.text != "") { + // search_entry.insert_at_cursor (""); + // } }); } @@ -87,7 +87,7 @@ public class Monitor.Search : Gtk.Box { public void activate_entry (string search_text = "") { search_entry.text = ""; search_entry.search_changed (); - // this.insert_at_cursor (search_text); + // this.insert_at_cursor (search_text); } } diff --git a/src/Widgets/Labels/LabelH4.vala b/src/Widgets/Labels/LabelH4.vala index f281fb6f..ef6071be 100644 --- a/src/Widgets/Labels/LabelH4.vala +++ b/src/Widgets/Labels/LabelH4.vala @@ -1,4 +1,4 @@ -public class LabelH4 : Gtk.Label { +public class LabelH4 : Object { construct { get_style_context ().add_class ("h4"); valign = Gtk.Align.START; diff --git a/src/Widgets/WidgetResource/WidgetResource.vala b/src/Widgets/WidgetResource/WidgetResource.vala index ff71de5a..fd123873 100644 --- a/src/Widgets/WidgetResource/WidgetResource.vala +++ b/src/Widgets/WidgetResource/WidgetResource.vala @@ -1,5 +1,10 @@ public class Monitor.WidgetResource : Gtk.Box { - private Gtk.Label _title = new Gtk.Label (Utils.NO_DATA); + private Gtk.Label _title = new Gtk.Label (Utils.NO_DATA) { + valign = Gtk.Align.START, + halign = Gtk.Align.START, + margin_start = 6, + ellipsize = Pango.EllipsizeMode.END, + }; public string title { set { @@ -31,7 +36,7 @@ public class Monitor.WidgetResource : Gtk.Box { set_vexpand (false); orientation = Gtk.Orientation.VERTICAL; - + _title.add_css_class ("h4"); grid_header = new Gtk.Grid () { column_spacing = 6, @@ -75,7 +80,7 @@ public class Monitor.WidgetResource : Gtk.Box { } public void add_charts_container (Gtk.Widget widget) { - charts_container.prepend (widget); + charts_container.append (widget); } public void set_popover_more_info (Gtk.Widget widget) { @@ -84,9 +89,9 @@ public class Monitor.WidgetResource : Gtk.Box { valign = Gtk.Align.START, halign = Gtk.Align.START }; - // button_more_info.set_focusable (false) + // button_more_info.set_focusable (false) button_more_info.get_style_context ().add_class ("circular"); - // button_more_info.get_style_context ().add_class ("popup"); + // button_more_info.get_style_context ().add_class ("popup"); button_more_info.set_icon_name ("dialog-information"); @@ -98,12 +103,13 @@ public class Monitor.WidgetResource : Gtk.Box { button_more_info.set_popover (popover_more_info); - // Note: `Gtk.MenuButton.set_active' is not available in gtk4 4.6.9. Use gtk4 >= 4.10 - // popover_more_info.closed.connect (() => { button_more_info.set_active (false); }); - // button_more_info.clicked.connect (() => { popover_more_info.present (); }); + // Note: `Gtk.MenuButton.set_active' is not available in gtk4 4.6.9. Use gtk4 >= 4.10 + // popover_more_info.closed.connect (() => { button_more_info.set_active (false); }); + // button_more_info.clicked.connect (() => { popover_more_info.present (); }); popover_more_info.set_child (widget); grid_header.attach (button_more_info, 1, 0, 1, 1); } + } From 9c16b206c512f043df51957a03bb6f70304d89c3 Mon Sep 17 00:00:00 2001 From: stsdc <6031763+stsdc@users.noreply.github.com> Date: Sun, 26 Nov 2023 21:24:22 +0100 Subject: [PATCH 18/18] small fixes --- src/MainWindow.vala | 7 ++++--- src/Monitor.vala | 2 +- src/Views/PreferencesView/PreferencesGeneralPage.vala | 1 + src/Views/PreferencesView/PreferencesView.vala | 2 +- src/Views/ProcessView/ProcessInfoView/ProcessInfoView.vala | 6 ++---- src/Views/ProcessView/ProcessView.vala | 2 +- 6 files changed, 10 insertions(+), 10 deletions(-) diff --git a/src/MainWindow.vala b/src/MainWindow.vala index 53fa2f2d..05f08f5f 100644 --- a/src/MainWindow.vala +++ b/src/MainWindow.vala @@ -16,9 +16,10 @@ public class Monitor.MainWindow : Gtk.ApplicationWindow { // Constructs a main window public MainWindow (MonitorApp app) { - // Adw.init (); Granite.init (); + // Adw.init (); + this.set_application (app); setup_window_state (); @@ -67,7 +68,7 @@ public class Monitor.MainWindow : Gtk.ApplicationWindow { new Thread ("upd", () => { Timeout.add_seconds (MonitorApp.settings.get_int ("update-time"), () => { - process_view.update (); + // process_view.update (); container_view.update (); @@ -109,7 +110,7 @@ public class Monitor.MainWindow : Gtk.ApplicationWindow { if (MonitorApp.settings.get_boolean ("indicator-state")) { // Read: https://discourse.gnome.org/t/how-to-hide-widget-instead-removing-them-in-gtk-4/8176 - // this.hide_on_delete (); + this.hide (); } else { dbusserver.indicator_state (false); diff --git a/src/Monitor.vala b/src/Monitor.vala index 172b1de6..7bd95f14 100644 --- a/src/Monitor.vala +++ b/src/Monitor.vala @@ -62,7 +62,7 @@ namespace Monitor { window.present (); } - // window.process_view.process_tree_view.focus_on_first_row (); + window.process_view.process_tree_view.focus_on_first_row (); var quit_action = new SimpleAction ("quit", null); add_action (quit_action); diff --git a/src/Views/PreferencesView/PreferencesGeneralPage.vala b/src/Views/PreferencesView/PreferencesGeneralPage.vala index a4c49c97..d9c82f59 100644 --- a/src/Views/PreferencesView/PreferencesGeneralPage.vala +++ b/src/Views/PreferencesView/PreferencesGeneralPage.vala @@ -14,6 +14,7 @@ public PreferencesGeneralPage () { var icon = new Gtk.Image.from_icon_name ("preferences-system"); + icon.icon_size = Gtk.IconSize.LARGE; Object ( display_widget: icon, diff --git a/src/Views/PreferencesView/PreferencesView.vala b/src/Views/PreferencesView/PreferencesView.vala index 3da934fa..bcc4f883 100644 --- a/src/Views/PreferencesView/PreferencesView.vala +++ b/src/Views/PreferencesView/PreferencesView.vala @@ -16,7 +16,7 @@ height_request = 300; width_request = 500; - paned.set_position (135); + paned.set_position (245); var stack = new Gtk.Stack (); stack.add_named (indicator_page, "indicator_page"); diff --git a/src/Views/ProcessView/ProcessInfoView/ProcessInfoView.vala b/src/Views/ProcessView/ProcessInfoView/ProcessInfoView.vala index 54917bc9..251ef445 100644 --- a/src/Views/ProcessView/ProcessInfoView/ProcessInfoView.vala +++ b/src/Views/ProcessView/ProcessInfoView/ProcessInfoView.vala @@ -39,7 +39,7 @@ public class Monitor.ProcessInfoView : Gtk.Box { process_info_io_stats.set_visible (true); end_process_button.show (); kill_process_button.show (); - preventor.show(); + preventor.show (); } } } @@ -63,7 +63,7 @@ public class Monitor.ProcessInfoView : Gtk.Box { permission_error_infobar.revealed = false; permission_error_label = new Gtk.Label (Utils.NO_DATA); permission_error_infobar.add_child (permission_error_label); - // append (permission_error_infobar); + // append (permission_error_infobar); var grid = new Gtk.Grid () { margin_start = 12, @@ -73,8 +73,6 @@ public class Monitor.ProcessInfoView : Gtk.Box { hexpand = true, column_spacing = 12 }; - append (grid); - process_info_header = new ProcessInfoHeader (); grid.attach (process_info_header, 0, 0, 1, 1); diff --git a/src/Views/ProcessView/ProcessView.vala b/src/Views/ProcessView/ProcessView.vala index 637acd90..711e46d4 100644 --- a/src/Views/ProcessView/ProcessView.vala +++ b/src/Views/ProcessView/ProcessView.vala @@ -20,7 +20,7 @@ public class Monitor.ProcessView : Gtk.Box { var paned = new Gtk.Paned (Gtk.Orientation.HORIZONTAL); paned.set_start_child (process_tree_view_scrolled); - paned.set_end_child (process_info_view); + // paned.set_end_child (process_info_view); paned.set_shrink_end_child (false); paned.set_resize_end_child (false); paned.set_position (paned.max_position - 200);