diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 09b402baf..c81e959d3 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -24,10 +24,10 @@ 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 \ libdbus-glib-1-dev libgtop2-dev libwingpanel-3.0-dev libudisks2-dev \ libxnvctrl0 libxnvctrl-dev libcurl4-gnutls-dev libflatpak-dev libjson-glib-dev \ - liblivechart-1-dev libpci-dev \ + liblivechart-2-dev libpci-dev \ meson valac sassc git - name: Build run: | diff --git a/data/stylesheet/_index.scss b/data/stylesheet/_index.scss index 406181353..ab6fc664a 100644 --- a/data/stylesheet/_index.scss +++ b/data/stylesheet/_index.scss @@ -12,10 +12,6 @@ roundy-label:selected:focus, roundy-label:hover:selected { margin: 0 3px; - .small-label { - padding: 0; - } - .value { color: #{'alpha(@text_color, 0.7)'}; font-feature-settings: "tnum"; @@ -51,6 +47,27 @@ roundy-label:hover:selected { } } +.small-label { + padding: 0; + font-weight: bold; + font-size: 9px; + + @if $color-scheme == "light" { + color: grey; + } @else if $color-scheme == "dark" { + color: $SILVER_500; + } +} + +.label-vertical { + &-val { + color: $text_color; + font-size: 30px; + font-weight: 200; + border-width: 0; + } +} + .grape_500 { background-color: rgba($GRAPE_500, 0.6); } @@ -91,24 +108,23 @@ roundy-label:hover:selected { .core_badge { border-radius: 8px; padding-right: 4px; - padding-left:2px; + padding-left: 2px; font-size: 10px; @if $color-scheme == "light" { border: 1px solid $SILVER_300; background-color: $SILVER_100; - } @else if $color-scheme == "dark" { border: 1px solid $SILVER_700; background-color: $SILVER_900; } - + &-mild-warning { @if $color-scheme == "light" { background-color: rgba($BANANA_100, 0.7); color: $BANANA_900; - border: 1px solid rgba($BANANA_300, 0.7); + border: 1px solid rgba($BANANA_300, 0.7); } @else if $color-scheme == "dark" { background-color: rgba($BANANA_900, 0.7); color: $BANANA_300; @@ -192,7 +208,7 @@ roundy-label:hover:selected { } @else if $color-scheme == "dark" { border-bottom: 1px $SILVER_900 solid; } - + label { font-family: monospace; /* background-color: $SILVER_300; */ @@ -213,4 +229,4 @@ roundy-label:hover:selected { .text-secondary { color: $SILVER_700; -} +} \ No newline at end of file diff --git a/meson.build b/meson.build index 1e6600fc7..0384c7bba 100644 --- a/meson.build +++ b/meson.build @@ -21,24 +21,22 @@ add_project_arguments(['--vapidir', vapidir], language: 'vala') # elementary_stylesheet = subproject('stylesheet') app_dependencies = [ - dependency('granite', version: '>= 5.2.0'), + dependency('granite-7', version: '>=7.7.0'), 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('libhandy-1', version: '>=0.90.0'), - dependency('gdk-x11-3.0'), - dependency('x11'), + dependency('libadwaita-1', version: '>=1.0.0'), + dependency('gtk4-x11'), dependency('udisks2'), dependency('json-glib-1.0'), dependency('flatpak'), - # FIXME Bump required version to >= 1.10.0 when GTK 4 porting dependency( - 'livechart', - version: '< 1.10.0', + 'livechart-2', + version: '>= 1.10.0', fallback: ['live-chart', 'livechart_dep'], ), diff --git a/src/MainWindow.vala b/src/MainWindow.vala index 9ca63f633..f87d7cf52 100644 --- a/src/MainWindow.vala +++ b/src/MainWindow.vala @@ -3,7 +3,7 @@ * SPDX-FileCopyrightText: 2025 elementary, Inc. (https://elementary.io) */ -public class Monitor.MainWindow : Hdy.ApplicationWindow { +public class Monitor.MainWindow : Gtk.ApplicationWindow { public ProcessView process_view { get; private set; } public MainWindow (MonitorApp app) { @@ -11,8 +11,6 @@ public class Monitor.MainWindow : Hdy.ApplicationWindow { } construct { - setup_window_state (); - title = _("Monitor"); var resources = new Resources (); @@ -31,48 +29,49 @@ public class Monitor.MainWindow : Hdy.ApplicationWindow { valign = CENTER }; - var sv = new PreferencesView (); - sv.show_all (); + var preferences_view = new PreferencesView (); - var preferences_popover = new Gtk.Popover (null) { - child = sv + var preferences_popover = new Gtk.Popover () { + child = preferences_view }; var preferences_button = new Gtk.MenuButton () { - image = new Gtk.Image.from_icon_name ("open-menu", Gtk.IconSize.LARGE_TOOLBAR), + icon_name = "open-menu", + primary = true, popover = preferences_popover, - tooltip_text = (_("Settings")) + tooltip_markup = ("%s\n" + Granite.TOOLTIP_SECONDARY_TEXT_MARKUP).printf ( + _("Settings"), + "F10" + ) }; + preferences_button.add_css_class (Granite.STYLE_CLASS_LARGE_ICONS); var search_entry = new Gtk.SearchEntry () { placeholder_text = _("Search process name or PID"), valign = CENTER }; + search_entry.set_key_capture_widget (this); var search_revealer = new Gtk.Revealer () { child = search_entry, - transition_type = SLIDE_LEFT + transition_type = SLIDE_LEFT, + overflow = VISIBLE }; - var headerbar = new Hdy.HeaderBar () { - has_subtitle = false, - show_close_button = true, - title = _("Monitor") - }; + var headerbar = new Adw.HeaderBar (); headerbar.pack_start (search_revealer); - headerbar.set_custom_title (stack_switcher); + headerbar.set_title_widget (stack_switcher); headerbar.pack_end (preferences_button); var statusbar = new Statusbar (); - var box = new Gtk.Box (VERTICAL, 0); - box.add (headerbar); - box.add (stack); - box.add (statusbar); + var main_container = new Gtk.Box (Gtk.Orientation.VERTICAL, 0); - child = box; + set_titlebar (headerbar); + main_container.append (stack); + main_container.append (statusbar); - show_all (); + child = main_container; var dbusserver = DBusServer.get_default (); @@ -97,29 +96,13 @@ public class Monitor.MainWindow : Hdy.ApplicationWindow { }); }); - key_press_event.connect (search_entry.handle_event); - - this.delete_event.connect (() => { - int window_width, window_height; - get_size (out window_width, out window_height); - MonitorApp.settings.set_int ("window-width", window_width); - MonitorApp.settings.set_int ("window-height", window_height); - MonitorApp.settings.set_boolean ("is-maximized", this.is_maximized); - - if (!MonitorApp.settings.get_boolean ("indicator-state")) { - dbusserver.indicator_state (false); - } - - return Gdk.EVENT_PROPAGATE; - }); - dbusserver.indicator_state (MonitorApp.settings.get_boolean ("indicator-state")); MonitorApp.settings.bind ("opened-view", stack, "visible-child-name", DEFAULT); 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_view.process_tree_view.collapse_all (); } @@ -128,10 +111,6 @@ public class Monitor.MainWindow : Hdy.ApplicationWindow { // focus on child row to avoid the app crashes by clicking "Kill/End Process" buttons in headerbar process_view.process_tree_view.focus_on_child_row (); search_entry.grab_focus (); - - if (search_entry.text != "") { - search_entry.insert_at_cursor (""); - } }); search_entry.activate.connect (() => { @@ -146,14 +125,4 @@ public class Monitor.MainWindow : Hdy.ApplicationWindow { add_action (search_action); } - - private void setup_window_state () { - int window_width = MonitorApp.settings.get_int ("window-width"); - int window_height = MonitorApp.settings.get_int ("window-height"); - this.set_default_size (window_width, window_height); - - if (MonitorApp.settings.get_boolean ("is-maximized")) { - this.maximize (); - } - } } diff --git a/src/Models/OpenFilesTreeViewModel.vala b/src/Models/OpenFilesTreeViewModel.vala index a9660445d..48cdea28c 100644 --- a/src/Models/OpenFilesTreeViewModel.vala +++ b/src/Models/OpenFilesTreeViewModel.vala @@ -4,7 +4,7 @@ */ public class Monitor.OpenFilesTreeViewModel : Gtk.TreeStore { - private Gee.Map open_files_paths = new Gee.HashMap (); + private Gee.Map open_files_paths = new Gee.HashMap (); private Process _process; @@ -41,11 +41,9 @@ public class Monitor.OpenFilesTreeViewModel : Gtk.TreeStore { Gtk.TreeIter iter; append (out iter, null); - set (iter, - Column.NAME, path, - -1); + set (iter, Column.NAME, path, -1); - // open_files_paths.set (path, iter); + // open_files_paths.set (path, iter); return true; } return false; diff --git a/src/Monitor.vala b/src/Monitor.vala index b4b8155e7..3dc481cb7 100644 --- a/src/Monitor.vala +++ b/src/Monitor.vala @@ -35,7 +35,8 @@ namespace Monitor { public override void startup () { base.startup (); - Hdy.init (); + Granite.init (); + Adw.init (); Appearance.set_prefered_style (); @@ -72,12 +73,17 @@ namespace Monitor { var dbusserver = DBusServer.get_default (); dbusserver.show.connect (() => activate ()); dbusserver.quit.connect (quit); + + window_removed.connect (() => { + if (!settings.get_boolean ("indicator-state")) { + dbusserver.indicator_state (false); + } + }); } public override void activate () { // only have one window if (get_windows () != null) { - window.show_all (); window.present (); return; } @@ -108,9 +114,23 @@ namespace Monitor { window.hide (); MonitorApp.settings.set_boolean ("background-state", true); } else { - window.show_all (); + window.present (); + } + + /* + * This is very finicky. Bind size after present else set_titlebar gives us bad sizes + * Set maximize after height/width else window is min size on unmaximize + * Bind maximize as SET else get get bad sizes + */ + settings.bind ("window-height", window, "default-height", SettingsBindFlags.DEFAULT); + settings.bind ("window-width", window, "default-width", SettingsBindFlags.DEFAULT); + + if (settings.get_boolean ("is-maximized")) { + window.maximize (); } + settings.bind ("is-maximized", window, "maximized", SettingsBindFlags.SET); + window.process_view.process_tree_view.focus_on_first_row (); } @@ -127,6 +147,13 @@ namespace Monitor { PCIUtils.LIBPCI_PATCH_VER ); + print ( + "Gtk %d.%d.%d\n", + Gtk.MAJOR_VERSION, + Gtk.MINOR_VERSION, + Gtk.MICRO_VERSION + ); + // add command line options try { var opt_context = new OptionContext (""); diff --git a/src/Services/Appearance.vala b/src/Services/Appearance.vala index 36e8276fe..1089a3a5f 100644 --- a/src/Services/Appearance.vala +++ b/src/Services/Appearance.vala @@ -20,7 +20,7 @@ public class Monitor.Appearance : Object { provider.load_from_resource ("/io/elementary/monitor/monitor-light.css"); } - 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); // We listen to changes in Granite.Settings and update our app if the user changes their preference granite_settings.notify["prefers-color-scheme"].connect (() => { diff --git a/src/Views/PreferencesView.vala b/src/Views/PreferencesView.vala index 32891397d..44e19470f 100644 --- a/src/Views/PreferencesView.vala +++ b/src/Views/PreferencesView.vala @@ -3,7 +3,7 @@ * SPDX-FileCopyrightText: 2025 elementary, Inc. (https://elementary.io) */ -public class Monitor.PreferencesView : Gtk.Bin { +public class Monitor.PreferencesView : Granite.Bin { private Gtk.Adjustment update_freq_adjustment; construct { @@ -23,8 +23,8 @@ public class Monitor.PreferencesView : Gtk.Bin { halign = START, margin_bottom = 6 }; - update_freq_description.get_style_context ().add_class (Gtk.STYLE_CLASS_DIM_LABEL); - update_freq_description.get_style_context ().add_class (Granite.STYLE_CLASS_SMALL_LABEL); + update_freq_description.add_css_class (Granite.CssClass.DIM); + update_freq_description.add_css_class (Granite.CssClass.SMALL); update_freq_scale.add_mark (1.0, BOTTOM, _("1s")); update_freq_scale.add_mark (2.0, BOTTOM, _("2s")); @@ -38,9 +38,9 @@ public class Monitor.PreferencesView : Gtk.Bin { margin_top = 12, margin_bottom = 12 }; - update_freq_box.add (update_freq_label); - update_freq_box.add (update_freq_description); - update_freq_box.add (update_freq_scale); + update_freq_box.append (update_freq_label); + update_freq_box.append (update_freq_description); + update_freq_box.append (update_freq_scale); update_freq_adjustment.value_changed.connect (() => { MonitorApp.settings.set_int ("update-time", (int) update_freq_adjustment.get_value ()); @@ -112,18 +112,18 @@ public class Monitor.PreferencesView : Gtk.Bin { margin_bottom = 6, margin_start = 12 }; - indicator_options_box.add (cpu_check); - indicator_options_box.add (cpu_freq_check); - indicator_options_box.add (cpu_temp_check); - indicator_options_box.add (new Gtk.Separator (HORIZONTAL)); - indicator_options_box.add (memory_check); - indicator_options_box.add (new Gtk.Separator (HORIZONTAL)); - indicator_options_box.add (gpu_check); - indicator_options_box.add (gpu_memory_check); - indicator_options_box.add (gpu_temp_check); - indicator_options_box.add (new Gtk.Separator (HORIZONTAL)); - indicator_options_box.add (network_upload_check); - indicator_options_box.add (network_download_check); + indicator_options_box.append (cpu_check); + indicator_options_box.append (cpu_freq_check); + indicator_options_box.append (cpu_temp_check); + indicator_options_box.append (new Gtk.Separator (HORIZONTAL)); + indicator_options_box.append (memory_check); + indicator_options_box.append (new Gtk.Separator (HORIZONTAL)); + indicator_options_box.append (gpu_check); + indicator_options_box.append (gpu_memory_check); + indicator_options_box.append (gpu_temp_check); + indicator_options_box.append (new Gtk.Separator (HORIZONTAL)); + indicator_options_box.append (network_upload_check); + indicator_options_box.append (network_download_check); var indicator_options_revealer = new Gtk.Revealer () { child = indicator_options_box @@ -132,11 +132,11 @@ public class Monitor.PreferencesView : Gtk.Bin { var box = new Gtk.Box (VERTICAL, 0) { margin_bottom = 6 }; - box.add (update_freq_box); - box.add (enable_smooth_lines_switch); - box.add (background_switch); - box.add (indicator_switch); - box.add (indicator_options_revealer); + box.append (update_freq_box); + box.append (enable_smooth_lines_switch); + box.append (background_switch); + box.append (indicator_switch); + box.append (indicator_options_revealer); child = box; diff --git a/src/Views/ProcessView/ProcessInfoView/ProcessInfoCPURAM.vala b/src/Views/ProcessView/ProcessInfoView/ProcessInfoCPURAM.vala index d1fd6000a..d4a375b6d 100644 --- a/src/Views/ProcessView/ProcessInfoView/ProcessInfoCPURAM.vala +++ b/src/Views/ProcessView/ProcessInfoView/ProcessInfoCPURAM.vala @@ -26,17 +26,17 @@ 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); + cpu_label.add_css_class (Granite.STYLE_CLASS_H4_LABEL); cpu_label.halign = Gtk.Align.START; ram_label = new Gtk.Label ("RAM: " + Utils.NO_DATA); - ram_label.get_style_context ().add_class (Granite.STYLE_CLASS_H4_LABEL); + ram_label.add_css_class (Granite.STYLE_CLASS_H4_LABEL); ram_label.halign = Gtk.Align.START; attach (cpu_label, 0, 0, 1, 1); diff --git a/src/Views/ProcessView/ProcessInfoView/ProcessInfoHeader.vala b/src/Views/ProcessView/ProcessInfoView/ProcessInfoHeader.vala index acb224bdc..32319055d 100644 --- a/src/Views/ProcessView/ProcessInfoView/ProcessInfoHeader.vala +++ b/src/Views/ProcessView/ProcessInfoView/ProcessInfoHeader.vala @@ -19,7 +19,7 @@ public class Monitor.ProcessInfoHeader : Gtk.Grid { construct { column_spacing = 12; - icon = new Gtk.Image.from_icon_name ("application-x-executable", Gtk.IconSize.DIALOG) { + icon = new Gtk.Image.from_icon_name ("application-x-executable") { pixel_size = 64 }; @@ -27,7 +27,7 @@ public class Monitor.ProcessInfoHeader : Gtk.Grid { halign = START, valign = END }; - state.get_style_context ().add_class ("state_badge"); + state.add_css_class ("state_badge"); var icon_container = new Gtk.Overlay () { child = icon @@ -40,7 +40,7 @@ public class Monitor.ProcessInfoHeader : Gtk.Grid { valign = START, tooltip_text = _("N/A") }; - application_name.get_style_context ().add_class (Granite.STYLE_CLASS_H2_LABEL); + application_name.add_css_class (Granite.STYLE_CLASS_H2_LABEL); pid = new LabelRoundy (_("PID")); nice = new LabelRoundy (_("NI")); @@ -53,11 +53,11 @@ public class Monitor.ProcessInfoHeader : Gtk.Grid { username = new LabelRoundy (""); var wrapper = new Gtk.Box (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); @@ -72,14 +72,14 @@ public class Monitor.ProcessInfoHeader : Gtk.Grid { priority.text = process.stat.priority.to_string (); if (process.uid == 0) { - username.get_style_context ().add_class ("username-root"); - username.get_style_context ().remove_class ("username-other"); + username.add_css_class ("username-root"); + username.remove_css_class ("username-other"); } else if (process.uid == (int) Posix.getuid ()) { - username.get_style_context ().remove_class ("username-other"); - username.get_style_context ().remove_class ("username-root"); + username.remove_css_class ("username-other"); + username.remove_css_class ("username-root"); } else { - username.get_style_context ().add_class ("username-other"); - username.get_style_context ().remove_class ("username-root"); + username.add_css_class ("username-other"); + username.remove_css_class ("username-root"); } username.text = process.username; diff --git a/src/Views/ProcessView/ProcessInfoView/ProcessInfoIOStats.vala b/src/Views/ProcessView/ProcessInfoView/ProcessInfoIOStats.vala index c6696c169..ef592ba5f 100644 --- a/src/Views/ProcessView/ProcessInfoView/ProcessInfoIOStats.vala +++ b/src/Views/ProcessView/ProcessInfoView/ProcessInfoIOStats.vala @@ -22,7 +22,7 @@ public class Monitor.ProcessInfoIOStats : Gtk.Grid { open_files_tree_view = new OpenFilesTreeView (); - var open_files_tree_view_scrolled = new Gtk.ScrolledWindow (null, null) { + var open_files_tree_view_scrolled = new Gtk.ScrolledWindow () { child = open_files_tree_view }; @@ -53,11 +53,11 @@ public class Monitor.ProcessInfoIOStats : Gtk.Grid { } private Gtk.Box create_label_with_icon (Gtk.Label label, string icon_name) { - var image = new Gtk.Image.from_icon_name (icon_name, SMALL_TOOLBAR); + var image = new Gtk.Image.from_icon_name (icon_name); var box = new Gtk.Box (HORIZONTAL, 3); - box.add (image); - box.add (label); + box.append (image); + box.append (label); return box; } diff --git a/src/Views/ProcessView/ProcessInfoView/ProcessInfoView.vala b/src/Views/ProcessView/ProcessInfoView/ProcessInfoView.vala index 8fa6f81fe..72bd83ab6 100644 --- a/src/Views/ProcessView/ProcessInfoView/ProcessInfoView.vala +++ b/src/Views/ProcessView/ProcessInfoView/ProcessInfoView.vala @@ -21,7 +21,6 @@ public class Monitor.ProcessInfoView : Gtk.Box { process_info_header.update (_process); - this.show_all (); if (_process.uid != Posix.getuid ()) { process_info_cpu_ram.hide (); process_info_io_stats.hide (); @@ -34,10 +33,15 @@ public class Monitor.ProcessInfoView : Gtk.Box { process_info_cpu_ram.clear_graphs (); process_info_cpu_ram.set_charts_data (_process); + // Setting visibility + process_info_cpu_ram.visible = true; + process_action_bar.visible = true; + process_info_io_stats.visible = true; + 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.visible = true; } } } @@ -56,26 +60,33 @@ public class Monitor.ProcessInfoView : Gtk.Box { orientation = Gtk.Orientation.VERTICAL; hexpand = true; - permission_error_infobar = new Gtk.InfoBar (); - permission_error_infobar.message_type = Gtk.MessageType.ERROR; - permission_error_infobar.revealed = false; + permission_error_infobar = new Gtk.InfoBar () { + message_type = Gtk.MessageType.ERROR, + 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_top = 12, + margin_bottom = 12, + margin_start = 12, + margin_end = 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_top = 12, + margin_bottom = 12, + margin_start = 12, + margin_end = 12, hexpand = true }; grid.attach (separator, 0, 1, 1, 1); @@ -93,7 +104,7 @@ public class Monitor.ProcessInfoView : Gtk.Box { kill_process_button = new Gtk.Button.with_label (_("Force Quit…")) { tooltip_markup = Granite.markup_accel_tooltip ({ "K" }) }; - kill_process_button.get_style_context ().add_class (Gtk.STYLE_CLASS_DESTRUCTIVE_ACTION); + kill_process_button.add_css_class (Granite.CssClass.DESTRUCTIVE); process_action_bar = new Gtk.Box (HORIZONTAL, 12) { halign = END, @@ -101,8 +112,8 @@ public class Monitor.ProcessInfoView : Gtk.Box { homogeneous = true, margin_top = 12 }; - 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); kill_process_button.clicked.connect (() => { var confirmation_dialog = new Granite.MessageDialog ( @@ -113,15 +124,15 @@ public class Monitor.ProcessInfoView : Gtk.Box { ) { badge_icon = new ThemedIcon ("process-stop"), modal = true, - transient_for = (Gtk.Window) get_toplevel () + transient_for = (Gtk.Window) get_root () }; var accept_button = confirmation_dialog.add_button (_("Force Quit"), Gtk.ResponseType.ACCEPT); - accept_button.get_style_context ().add_class (Gtk.STYLE_CLASS_DESTRUCTIVE_ACTION); + accept_button.add_css_class (Granite.CssClass.DESTRUCTIVE); confirmation_dialog.response.connect ((response) => { if (response == Gtk.ResponseType.ACCEPT) { - // TODO: maybe add a toast that process killed + // @TODO: maybe add a toast that process killed process.kill (); } @@ -137,14 +148,14 @@ public class Monitor.ProcessInfoView : Gtk.Box { _("The process will be asked to initiate shutdown tasks and close. In some cases the process may not quit."), new ThemedIcon ("system-shutdown"), Gtk.ButtonsType.CANCEL - ) { + ) { badge_icon = new ThemedIcon ("dialog-question"), modal = true, - transient_for = (Gtk.Window) get_toplevel () + transient_for = (Gtk.Window) get_root () }; var accept_button = confirmation_dialog.add_button (_("Shut Down"), Gtk.ResponseType.ACCEPT); - accept_button.get_style_context ().add_class (Gtk.STYLE_CLASS_SUGGESTED_ACTION); + accept_button.add_css_class (Granite.CssClass.SUGGESTED); confirmation_dialog.response.connect ((response) => { if (response == Gtk.ResponseType.ACCEPT) { @@ -159,15 +170,10 @@ public class Monitor.ProcessInfoView : Gtk.Box { }); grid.attach (process_action_bar, 0, 5); - - show_all (); - process_info_cpu_ram.hide (); - process_info_io_stats.hide (); - process_action_bar.hide (); } private void show_permission_error_infobar (string error) { - if (permission_error_infobar.revealed == false) { + if (!permission_error_infobar.revealed) { permission_error_label.set_text (error); permission_error_infobar.revealed = true; } @@ -180,7 +186,8 @@ 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.visible = true; } } diff --git a/src/Views/ProcessView/ProcessTreeView/CPUProcessTreeView.vala b/src/Views/ProcessView/ProcessTreeView/CPUProcessTreeView.vala index e45ed971f..e49c1476e 100644 --- a/src/Views/ProcessView/ProcessTreeView/CPUProcessTreeView.vala +++ b/src/Views/ProcessView/ProcessTreeView/CPUProcessTreeView.vala @@ -15,6 +15,8 @@ public class Monitor.CPUProcessTreeView : Gtk.TreeView { public CPUProcessTreeView (TreeViewModel model) { this.model = model; + enable_search = false; + // setup name column name_column = new Gtk.TreeViewColumn (); name_column.title = _("Process Name"); @@ -91,7 +93,8 @@ public class Monitor.CPUProcessTreeView : Gtk.TreeView { insert_action_group ("process", action_group); - var key_controller = new Gtk.EventControllerKey (this); + var key_controller = new Gtk.EventControllerKey (); + add_controller (key_controller); key_controller.key_released.connect ((keyval, keycode, state) => { switch (keyval) { case Gdk.Key.Left: @@ -219,7 +222,7 @@ public class Monitor.CPUProcessTreeView : Gtk.TreeView { tree_model.get (iter, Column.PID, out pid); Process process = model.process_manager.get_process (pid); process_selected (process); - // debug ("cursor changed"); + debug ("cursor changed"); } } diff --git a/src/Views/ProcessView/ProcessView.vala b/src/Views/ProcessView/ProcessView.vala index 5ddf4ad9e..93b07c8f7 100644 --- a/src/Views/ProcessView/ProcessView.vala +++ b/src/Views/ProcessView/ProcessView.vala @@ -3,7 +3,7 @@ * SPDX-License-Identifier: GPL-3.0-or-later */ -public class Monitor.ProcessView : Gtk.Box { +public class Monitor.ProcessView : Granite.Bin { public string needle = ""; public CPUProcessTreeView process_tree_view { get; private set; } @@ -23,30 +23,35 @@ public class Monitor.ProcessView : Gtk.Box { process_tree_view.process_selected.connect ((process) => on_process_selected (process)); process_tree_view.set_model (sort_model); - var process_tree_view_scrolled = new Gtk.ScrolledWindow (null, null) { + var process_tree_view_scrolled = new Gtk.ScrolledWindow () { child = process_tree_view }; process_info_view = new ProcessInfoView () { - // hide on startup - no_show_all = true + // This might be useless since first process is selected + // automatically and this triggers on_process_selected (). + // Keeping it just to not forget what was the OG behavior + // in GTK3 version. + visible = false, }; var paned = new Gtk.Paned (HORIZONTAL) { + start_child = process_tree_view_scrolled, + end_child = process_info_view, + shrink_end_child = false, + resize_end_child = false, hexpand = true }; paned.position = paned.max_position; - paned.pack1 (process_tree_view_scrolled, true, false); - paned.pack2 (process_info_view, false, false); - add (paned); + child = paned; notify["needle"].connect (filter_model.refilter); } public void on_process_selected (Process process) { process_info_view.process = process; - process_info_view.no_show_all = false; + process_info_view.visible = true; } public void update () { diff --git a/src/Views/SystemView/SystemCPUInfoPopover.vala b/src/Views/SystemView/SystemCPUInfoPopover.vala index 418f9a59e..a6ba8bc4d 100755 --- a/src/Views/SystemView/SystemCPUInfoPopover.vala +++ b/src/Views/SystemView/SystemCPUInfoPopover.vala @@ -7,7 +7,10 @@ public class Monitor.SystemCPUInfoPopover : Gtk.Box { private CPU cpu; construct { - margin = 12; + margin_top = 12; + margin_bottom = 12; + margin_start = 12; + margin_end = 12; orientation = Gtk.Orientation.VERTICAL; } @@ -33,8 +36,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) { @@ -42,7 +45,10 @@ public class Monitor.SystemCPUInfoPopover : Gtk.Box { halign = Gtk.Align.START, valign = Gtk.Align.CENTER, wrap = true, - margin = 6, + margin_top = 6, + margin_bottom = 6, + margin_start = 6, + margin_end = 6, }; return label; @@ -53,31 +59,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; } @@ -88,11 +94,12 @@ 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 () { + child = listbox + }; return scrolled_window; } @@ -103,11 +110,12 @@ 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 () { + child = listbox + }; return scrolled_window; } @@ -122,14 +130,17 @@ public class Monitor.SystemCPUInfoPopover : Gtk.Box { halign = Gtk.Align.START, valign = Gtk.Align.CENTER, wrap = true, - margin = 6, + margin_top = 6, + margin_bottom = 6, + margin_start = 6, + margin_end = 6, }; - flag_label.get_style_context ().add_class ("flags_badge"); + flag_label.add_css_class ("flags_badge"); grid.attach (flag_label, 0, 0, 1, 1); grid.attach (label (flag_description), 1, 0, 1, 1); - row.add (grid); + row.child = grid; return row; } diff --git a/src/Views/SystemView/SystemCPUView.vala b/src/Views/SystemView/SystemCPUView.vala index 2e6b6412d..e8a4e471d 100644 --- a/src/Views/SystemView/SystemCPUView.vala +++ b/src/Views/SystemView/SystemCPUView.vala @@ -70,8 +70,8 @@ public class Monitor.SystemCPUView : Monitor.WidgetResource { hexpand = false, width_request = 200 }; - small_charts_box.add (freq_info_overlay); - small_charts_box.add (temp_info_overlay); + small_charts_box.append (freq_info_overlay); + small_charts_box.append (temp_info_overlay); add_charts_container (small_charts_box); } @@ -102,26 +102,26 @@ public class Monitor.SystemCPUView : Monitor.WidgetResource { string percentage_formatted = ("% 3d%%").printf ((int) core_percentage); core_label_list[i].set_text (percentage_formatted); - core_label_list[i].get_style_context ().remove_class ("core_badge-mild-warning"); - core_label_list[i].get_style_context ().remove_class ("core_badge-strong-warning"); - core_label_list[i].get_style_context ().remove_class ("core_badge-critical-warning"); + core_label_list[i].remove_css_class ("core_badge-mild-warning"); + core_label_list[i].remove_css_class ("core_badge-strong-warning"); + core_label_list[i].remove_css_class ("core_badge-critical-warning"); if (core_percentage > 75.0) { - core_label_list[i].get_style_context ().add_class ("core_badge-mild-warning"); - core_label_list[i].get_style_context ().remove_class ("core_badge-strong-warning"); - core_label_list[i].get_style_context ().remove_class ("core_badge-critical-warning"); + core_label_list[i].add_css_class ("core_badge-mild-warning"); + core_label_list[i].remove_css_class ("core_badge-strong-warning"); + core_label_list[i].remove_css_class ("core_badge-critical-warning"); } if (core_percentage > 85.0) { - core_label_list[i].get_style_context ().add_class ("core_badge-strong-warning"); - core_label_list[i].get_style_context ().remove_class ("core_badge-mild-warning"); - core_label_list[i].get_style_context ().remove_class ("core_badge-critical-warning"); + core_label_list[i].add_css_class ("core_badge-strong-warning"); + core_label_list[i].remove_css_class ("core_badge-mild-warning"); + core_label_list[i].remove_css_class ("core_badge-critical-warning"); } if (core_percentage > 90.0) { - core_label_list[i].get_style_context ().add_class ("core_badge-critical-warning"); - core_label_list[i].get_style_context ().remove_class ("core_badge-mild-warning"); - core_label_list[i].get_style_context ().remove_class ("core_badge-strong-warning"); + core_label_list[i].add_css_class ("core_badge-critical-warning"); + core_label_list[i].remove_css_class ("core_badge-mild-warning"); + core_label_list[i].remove_css_class ("core_badge-strong-warning"); } } @@ -145,7 +145,7 @@ public class Monitor.SystemCPUView : Monitor.WidgetResource { var core_label = new Gtk.Label (Utils.NO_DATA) { width_chars = 4 }; - core_label.get_style_context ().add_class ("core_badge"); + core_label.add_css_class ("core_badge"); // core_label.set_text (Utils.NO_DATA); core_label_list.add (core_label); @@ -158,10 +158,13 @@ public class Monitor.SystemCPUView : Monitor.WidgetResource { } } var threads_label = new Gtk.Label (_("THREADS")); - threads_label.get_style_context ().add_class (Gtk.STYLE_CLASS_DIM_LABEL); - threads_label.get_style_context ().add_class (Granite.STYLE_CLASS_SMALL_LABEL); + // this can be archived by Granite.CssClass.DIM and + // Granite.CssClass.SMALL, however the style is + // differs from the OG + threads_label.add_css_class ("small-label"); grid.attach (threads_label, 0, -1, column, 1); return grid; } + } diff --git a/src/Views/SystemView/SystemGPUView.vala b/src/Views/SystemView/SystemGPUView.vala index 7b1c1e8d0..57f90f66a 100644 --- a/src/Views/SystemView/SystemGPUView.vala +++ b/src/Views/SystemView/SystemGPUView.vala @@ -14,13 +14,18 @@ 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_temperature_label = new LabelRoundy (_("TEMPERATURE")); - gpu_temperature_label.margin = 6; - gpu_temperature_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")) { + 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)); @@ -68,7 +73,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 4863187be..6ea83883c 100644 --- a/src/Views/SystemView/SystemMemoryView.vala +++ b/src/Views/SystemView/SystemMemoryView.vala @@ -41,7 +41,10 @@ public class Monitor.SystemMemoryView : 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, }; grid.attach (memory_used_label, 0, 0, 1, 1); diff --git a/src/Views/SystemView/SystemNetworkView.vala b/src/Views/SystemView/SystemNetworkView.vala index 5434e067e..1a4c5ef6e 100644 --- a/src/Views/SystemView/SystemNetworkView.vala +++ b/src/Views/SystemView/SystemNetworkView.vala @@ -12,7 +12,10 @@ public class Monitor.SystemNetworkView : Gtk.Grid { private LabelRoundy network_download_label; construct { - margin = 12; + margin_top = 12; + margin_bottom = 12; + margin_start = 12; + margin_end = 12; column_spacing = 12; set_vexpand (false); } @@ -25,29 +28,32 @@ public class Monitor.SystemNetworkView : Gtk.Grid { network_download_label = new LabelRoundy (_("DOWN")) { width_chars = 7 }; - network_download_label.get_style_context ().add_class ("blue"); + network_download_label.add_css_class ("blue"); network_upload_label = new LabelRoundy (_("UP")) { width_chars = 7 }; - network_upload_label.get_style_context ().add_class ("green"); + network_upload_label.add_css_class ("green"); 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 (); - 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); + var labels_box = new Gtk.Box (Gtk.Orientation.HORIZONTAL, 6) { + margin_top = 6, + margin_end = 6, + margin_bottom = 6, + margin_start = 6 + }; + + labels_box.append (network_download_label); + labels_box.append (network_upload_label); attach (network_name_label, 0, 0, 1, 1); - attach (labels_grid, 0, 1, 2, 2); attach (network_chart, 0, 1, 2, 2); + attach (labels_box, 0, 1, 2, 2); } public void update () { diff --git a/src/Views/SystemView/SystemStorageView.vala b/src/Views/SystemView/SystemStorageView.vala index ee605e10b..069c218da 100644 --- a/src/Views/SystemView/SystemStorageView.vala +++ b/src/Views/SystemView/SystemStorageView.vala @@ -20,17 +20,20 @@ public class Monitor.SystemStorageView : Gtk.Box { storage_write_label = new LabelRoundy (_("WRITE")) { width_chars = 7 }; - storage_write_label.get_style_context ().add_class ("blue"); + storage_write_label.add_css_class ("blue"); storage_read_label = new LabelRoundy (_("READ")) { width_chars = 7 }; - storage_read_label.get_style_context ().add_class ("green"); + storage_read_label.add_css_class ("green"); - storage_chart = new Chart (2); + storage_chart = new Chart (2) { + height_request = 120, + valign = START + }; 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_box = new Gtk.Box (HORIZONTAL, 6) { margin_top = 6, @@ -38,8 +41,8 @@ public class Monitor.SystemStorageView : Gtk.Box { margin_bottom = 6, margin_start = 6 }; - labels_box.add (storage_write_label); - labels_box.add (storage_read_label); + labels_box.append (storage_write_label); + labels_box.append (storage_read_label); var chart_overlay = new Gtk.Overlay () { child = storage_chart @@ -57,12 +60,12 @@ public class Monitor.SystemStorageView : Gtk.Box { margin_start = 12; orientation = VERTICAL; - add (storage_name_label); - add (drive_cards_container); - add (chart_overlay); + append (storage_name_label); + append (drive_cards_container); + append (chart_overlay); storage.get_drives ().foreach ((drive) => { - drive_cards_container.add ( + drive_cards_container.append ( new DriveCard (drive) ); @@ -92,7 +95,7 @@ public class Monitor.SystemStorageView : Gtk.Box { var drive_name_label = new Gtk.Label (drive.model) { halign = START }; - drive_name_label.get_style_context ().add_class (Granite.STYLE_CLASS_H3_LABEL); + drive_name_label.add_css_class (Granite.STYLE_CLASS_H3_LABEL); string size_string = format_size ((uint64) drive.size, IEC_UNITS); string used_string = format_size ((uint64) (drive.size - drive.free), IEC_UNITS); @@ -107,19 +110,19 @@ public class Monitor.SystemStorageView : Gtk.Box { halign = START, margin_bottom = 6 }; - drive_block_name_and_size_label.get_style_context ().add_class (Gtk.STYLE_CLASS_DIM_LABEL); + drive_block_name_and_size_label.add_css_class (Granite.CssClass.DIM); var drive_not_mounted_label = new Gtk.Label (_("Not mounted")) { halign = START }; - drive_not_mounted_label.get_style_context ().add_class (Gtk.STYLE_CLASS_DIM_LABEL); + drive_not_mounted_label.add_css_class (Granite.CssClass.DIM); var usagebar = new Gtk.LevelBar () { max_value = 100.0, min_value = 0.0, margin_bottom = 6 }; - usagebar.get_style_context ().add_class (Gtk.STYLE_CLASS_FLAT); + usagebar.add_css_class (Granite.STYLE_CLASS_FLAT); usagebar.set_value (100.0 * (drive.size - drive.free) / drive.size); var drive_box = new Gtk.Box (VERTICAL, 0) { @@ -128,17 +131,16 @@ public class Monitor.SystemStorageView : Gtk.Box { margin_bottom = 6, margin_start = 12 }; - drive_box.add (drive_name_label); - drive_box.add (drive_block_name_and_size_label); + drive_box.append (drive_name_label); + drive_box.append (drive_block_name_and_size_label); if (drive.free == 0) { - drive_box.add (drive_not_mounted_label); + drive_box.append (drive_not_mounted_label); } else { - drive_box.add (usagebar); + drive_box.append (usagebar); } - get_style_context ().add_class (Granite.STYLE_CLASS_CARD); - get_style_context ().add_class (Granite.STYLE_CLASS_ROUNDED); - add (drive_box); + add_css_class (Granite.CssClass.CARD); + append (drive_box); } } } diff --git a/src/Views/SystemView/SystemView.vala b/src/Views/SystemView/SystemView.vala index ab320b64f..e2af50b6e 100644 --- a/src/Views/SystemView/SystemView.vala +++ b/src/Views/SystemView/SystemView.vala @@ -25,28 +25,31 @@ 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); foreach (IGPU gpu in resources.gpu_list) { if (gpu is GPUIntel || gpu is GPUNvidia) { - wrapper.add (build_no_support_label (gpu.name)); + wrapper.append (build_no_support_label (gpu.name)); } else { var gpu_view = new SystemGPUView (gpu); gpu_views.append (gpu_view); - wrapper.add (gpu_view); + wrapper.append (gpu_view); } } - add (scrolled_window); + append (scrolled_window); } public void update () { @@ -60,8 +63,10 @@ public class Monitor.SystemView : Gtk.Box { private Granite.HeaderLabel build_no_support_label (string gpu_name) { string notification_text = _("The %s GPU was detected, but is not yet supported.").printf (gpu_name); return new Granite.HeaderLabel (notification_text) { - margin = 12, + margin_top = 12, + margin_end = 12, + margin_bottom = 12, + margin_start = 12 }; } - } diff --git a/src/Widgets/Chart/Chart.vala b/src/Widgets/Chart/Chart.vala index 7133f44c7..046049672 100644 --- a/src/Widgets/Chart/Chart.vala +++ b/src/Widgets/Chart/Chart.vala @@ -11,7 +11,7 @@ public class Monitor.Chart : Gtk.Box { construct { - get_style_context ().add_class ("graph"); + add_css_class ("graph"); vexpand = true; height_request = 120; @@ -31,8 +31,10 @@ public class Monitor.Chart : Gtk.Box { left = -1 }; - live_chart = new LiveChart.Chart (config); - live_chart.expand = true; + live_chart = new LiveChart.Chart (config) { + hexpand = true, + vexpand = true, + }; live_chart.legend.visible = false; live_chart.grid.visible = true; live_chart.background.visible = false; @@ -65,7 +67,7 @@ public class Monitor.Chart : Gtk.Box { live_chart.add_serie (serie); } - add (live_chart); + append (live_chart); return this; } @@ -78,7 +80,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/Labels/LabelRoundy.vala b/src/Widgets/Labels/LabelRoundy.vala index cdfdcaecf..04efabded 100644 --- a/src/Widgets/Labels/LabelRoundy.vala +++ b/src/Widgets/Labels/LabelRoundy.vala @@ -33,15 +33,15 @@ public class Monitor.LabelRoundy : Gtk.Box { val = new Gtk.Label (Utils.NO_DATA) { selectable = true }; - val.get_style_context ().add_class ("value"); + val.add_css_class ("value"); var header_label = new Granite.HeaderLabel (title.up ()) { mnemonic_widget = val }; - header_label.get_style_context ().add_class (Granite.STYLE_CLASS_SMALL_LABEL); + header_label.add_css_class (Granite.CssClass.SMALL); orientation = VERTICAL; - add (header_label); - add (val); + append (header_label); + append (val); } } diff --git a/src/Widgets/Statusbar/Statusbar.vala b/src/Widgets/Statusbar/Statusbar.vala index 3f762f3f0..ff5527c08 100644 --- a/src/Widgets/Statusbar/Statusbar.vala +++ b/src/Widgets/Statusbar/Statusbar.vala @@ -3,14 +3,14 @@ * SPDX-License-Identifier: GPL-3.0-or-later */ -public class Monitor.Statusbar : Gtk.Bin { +public class Monitor.Statusbar : Granite.Bin { private Gtk.Label cpu_usage_label; private Gtk.Label memory_usage_label; private Gtk.Label swap_usage_label; private Gtk.Label gpu_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") }; @@ -19,7 +19,7 @@ public class Monitor.Statusbar : Gtk.Bin { xalign = 0 }; - 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") }; @@ -29,7 +29,7 @@ public class Monitor.Statusbar : Gtk.Bin { xalign = 0 }; - 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") }; @@ -39,7 +39,7 @@ public class Monitor.Statusbar : Gtk.Bin { xalign = 0 }; - var gpu_icon = new Gtk.Image.from_icon_name ("gpu-symbolic", Gtk.IconSize.SMALL_TOOLBAR) { + var gpu_icon = new Gtk.Image.from_icon_name ("gpu-symbolic") { tooltip_text = _("GPU") }; diff --git a/src/Widgets/WidgetResource/WidgetResource.vala b/src/Widgets/WidgetResource/WidgetResource.vala index 5ba1b820c..7144f1d98 100644 --- a/src/Widgets/WidgetResource/WidgetResource.vala +++ b/src/Widgets/WidgetResource/WidgetResource.vala @@ -33,35 +33,35 @@ public class Monitor.WidgetResource : Gtk.Box { _title = new Granite.HeaderLabel (Utils.NO_DATA); header_box = new Gtk.Box (HORIZONTAL, 6); - header_box.add (_title); + header_box.append (_title); var main_metric_title = new Gtk.Label (_("Utilization").up ()); - main_metric_title.get_style_context ().add_class (Gtk.STYLE_CLASS_DIM_LABEL); - main_metric_title.get_style_context ().add_class (Granite.STYLE_CLASS_SMALL_LABEL); + main_metric_title.add_css_class (Granite.CssClass.DIM); + main_metric_title.add_css_class (Granite.CssClass.SMALL); main_metric_label = new Gtk.Label (Utils.NO_DATA); - main_metric_label.get_style_context ().add_class (Granite.STYLE_CLASS_H2_LABEL); + main_metric_label.add_css_class (Granite.STYLE_CLASS_H2_LABEL); var main_metric_box = new Gtk.Box (VERTICAL, 0) { margin_top = 6, margin_bottom = 6, margin_start = 12 }; - main_metric_box.add (main_metric_title); - main_metric_box.add (main_metric_label); + main_metric_box.append (main_metric_title); + main_metric_box.append (main_metric_label); info_box = new Gtk.Box (HORIZONTAL, 6) { halign = START, valign = START }; - info_box.get_style_context ().add_class ("usage-label-container"); - info_box.add (main_metric_box); + info_box.add_css_class ("usage-label-container"); + info_box.append (main_metric_box); main_overlay = new Gtk.Overlay (); main_overlay.add_overlay (info_box); charts_box = new Gtk.Box (HORIZONTAL, 6); - charts_box.add (main_overlay); + charts_box.append (main_overlay); margin_top = 6; margin_end = 12; @@ -69,22 +69,20 @@ public class Monitor.WidgetResource : Gtk.Box { margin_start = 12; orientation = VERTICAL; - add (header_box); - add (charts_box); + append (header_box); + append (charts_box); } public void set_main_chart_overlay (Gtk.Widget widget) { - info_box.add (widget); + info_box.append (widget); } public void add_charts_container (Gtk.Widget widget) { - charts_box.add (widget); + charts_box.append (widget); } public void set_popover_more_info (Gtk.Widget widget) { - widget.show_all (); - - var popover_more_info = new Gtk.Popover (null) { + var popover_more_info = new Gtk.Popover () { child = widget, position = BOTTOM }; @@ -92,12 +90,13 @@ public class Monitor.WidgetResource : Gtk.Box { var button_more_info = new Gtk.MenuButton () { halign = START, valign = START, - has_focus = false, - image = new Gtk.Image.from_icon_name ("dialog-information", SMALL_TOOLBAR), + focusable = false, + icon_name = "dialog-information", popover = popover_more_info }; - button_more_info.get_style_context ().add_class ("circular"); + button_more_info.add_css_class (Granite.CssClass.CIRCULAR); - header_box.add (button_more_info); + header_box.append (button_more_info); } + } diff --git a/subprojects/live-chart.wrap b/subprojects/live-chart.wrap new file mode 100644 index 000000000..99524220d --- /dev/null +++ b/subprojects/live-chart.wrap @@ -0,0 +1,7 @@ +[wrap-git] +url = https://github.com/elementary/live-chart.git +revision = 1cdb953dd6313d5102e441c65be8e35c3e12cc32 +depth = 1 + +[provide] +livechart = livechart_static_dep \ No newline at end of file