From 9314125a9860242588ad65c2412545cbf3d000fe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Danielle=20For=C3=A9?= Date: Thu, 17 Sep 2026 13:37:36 -0700 Subject: [PATCH 1/2] ProcessTreeView: clean up --- .../ProcessTreeView/ProcessTreeView.vala | 146 +++++++----------- 1 file changed, 57 insertions(+), 89 deletions(-) diff --git a/src/Views/ProcessView/ProcessTreeView/ProcessTreeView.vala b/src/Views/ProcessView/ProcessTreeView/ProcessTreeView.vala index dc790d1d8..d670613c7 100644 --- a/src/Views/ProcessView/ProcessTreeView/ProcessTreeView.vala +++ b/src/Views/ProcessView/ProcessTreeView/ProcessTreeView.vala @@ -4,163 +4,131 @@ */ public class Monitor.ProcessTreeView : Granite.Bin { + public TreeViewModel model { get; construct; } public ProcessTreeView (TreeViewModel model) { - var column_view = new Gtk.ColumnView (model.selection_model) { - name = "monitor-process-column-view", - reorderable = false, - hexpand = true, - vexpand = true - }; - model.sorter = column_view.sorter; + Object (model: model); + } + construct { var name_item_factory = new Gtk.SignalListItemFactory (); - name_item_factory.setup.connect (name_item_factory_setup); - name_item_factory.bind.connect (name_item_factory_bind); - name_item_factory.unbind.connect (name_item_factory_unbind); + name_item_factory.setup.connect (setup_name_item); + name_item_factory.bind.connect (bind_name_item); var cpu_item_factory = new Gtk.SignalListItemFactory (); - cpu_item_factory.setup.connect (generic_item_factory_setup); - cpu_item_factory.bind.connect (cpu_item_factory_bind); - cpu_item_factory.unbind.connect (cpu_item_factory_unbind); + cpu_item_factory.setup.connect (setup_label_item); + cpu_item_factory.bind.connect (bind_cpu_item); + cpu_item_factory.unbind.connect ((obj) => unbind_label_item (obj, "cpu")); var memory_item_factory = new Gtk.SignalListItemFactory (); - memory_item_factory.setup.connect (generic_item_factory_setup); - memory_item_factory.bind.connect (memory_item_factory_bind); - memory_item_factory.unbind.connect (memory_item_factory_unbind); + memory_item_factory.setup.connect (setup_label_item); + memory_item_factory.bind.connect (bind_memory_item); + memory_item_factory.unbind.connect ((obj) => unbind_label_item (obj, "memory")); var pid_item_factory = new Gtk.SignalListItemFactory (); - pid_item_factory.setup.connect (generic_item_factory_setup); - pid_item_factory.bind.connect (pid_item_factory_bind); - pid_item_factory.unbind.connect (pid_item_factory_unbind); + pid_item_factory.setup.connect (setup_label_item); + pid_item_factory.bind.connect (bind_pid_item); + pid_item_factory.unbind.connect ((obj) => unbind_label_item (obj, "pid")); var name_column = new Gtk.ColumnViewColumn (_("Process Name"), name_item_factory) { sorter = model.str_sorter ("name"), expand = true }; - column_view.append_column (name_column); var cpu_column = new Gtk.ColumnViewColumn (_("CPU"), cpu_item_factory) { - sorter = model.num_sorter ("cpu"), - expand = false + sorter = model.num_sorter ("cpu") }; - column_view.append_column (cpu_column); var mem_column = new Gtk.ColumnViewColumn (_("Memory"), memory_item_factory) { - sorter = model.num_sorter ("memory"), - expand = false + sorter = model.num_sorter ("memory") }; - column_view.append_column (mem_column); var pid_column = new Gtk.ColumnViewColumn (_("PID"), pid_item_factory) { - sorter = model.num_sorter ("pid"), - expand = false + sorter = model.num_sorter ("pid") + }; + + var column_view = new Gtk.ColumnView (model.selection_model) { + reorderable = false }; + column_view.append_column (name_column); + column_view.append_column (cpu_column); + column_view.append_column (mem_column); column_view.append_column (pid_column); + model.sorter = column_view.sorter; + var scrolled_window = new Gtk.ScrolledWindow () { child = column_view }; - child = scrolled_window; - } - private void generic_item_factory_setup (Object object) { - var cell = (Gtk.ColumnViewCell) object; - var label = new Gtk.Label (Utils.NO_DATA) { - hexpand = true, - halign = START - }; - cell.child = label; + child = scrolled_window; } - private void name_item_factory_setup (Object object) { + private void setup_name_item (Object object) { var cell = (Gtk.ColumnViewCell) object; - var name_cell = new ProcessTreeViewNameCell (); - cell.child = name_cell; + cell.child = new ProcessTreeViewNameCell (); } - private void name_item_factory_bind (Object object) { + private void bind_name_item (Object object) { var cell = (Gtk.ColumnViewCell) object; - var name_cell = (ProcessTreeViewNameCell) cell.child; - var label = name_cell.label; - var icon = name_cell.icon; - var item = (ProcessRowData) cell.item; - var binding_name = item.bind_property ("name", label, "label", SYNC_CREATE); - item.bindings.set ("name", binding_name); - - var binding_icon = item.bind_property ("icon", icon, "gicon", SYNC_CREATE); - item.bindings.set ("icon", binding_icon); + var name_cell = (ProcessTreeViewNameCell) cell.child; + name_cell.label.label = item.name; + name_cell.icon.gicon = item.icon; } - private void name_item_factory_unbind (Object object) { + private void setup_label_item (Object object) { + var label = new Gtk.Label (Utils.NO_DATA) { + halign = START + }; + label.add_css_class (Granite.CssClass.NUMERIC); + var cell = (Gtk.ColumnViewCell) object; - var name_cell = (ProcessTreeViewNameCell) cell.child; - var label = name_cell.label; - var icon = name_cell.icon; - label.label = null; - icon.gicon = null; - ((ProcessRowData) cell.item).bindings["name"].unbind (); - ((ProcessRowData) cell.item).bindings["icon"].unbind (); + cell.child = label; } - private void cpu_item_factory_bind (Object object) { + private void bind_cpu_item (Object object) { var cell = (Gtk.ColumnViewCell) object; var label = (Gtk.Label) cell.child; var item = (ProcessRowData) cell.item; - var binding_cpu = item.bind_property ("cpu", label, "label", SYNC_CREATE, (_, from_val, ref to_val) => { + + item.bindings.set ("cpu", item.bind_property ("cpu", label, "label", SYNC_CREATE, (_, from_val, ref to_val) => { int percentage = from_val.get_int (); to_val.set_string ("%.0f%%".printf (percentage)); return true; - }); - item.bindings.set ("cpu", binding_cpu); + })); } - private void cpu_item_factory_unbind (Object object) { + private void bind_memory_item (Object object) { var cell = (Gtk.ColumnViewCell) object; var label = (Gtk.Label) cell.child; var item = (ProcessRowData) cell.item; - label.label = null; - item.bindings["cpu"].unbind (); - } - private void memory_item_factory_bind (Object object) { - var cell = (Gtk.ColumnViewCell) object; - var label = (Gtk.Label) cell.child; - var item = (ProcessRowData) cell.item; - var binding_memory = item.bind_property ("memory", label, "label", SYNC_CREATE, (_, from_val, ref to_val) => { + item.bindings.set ("memory", item.bind_property ("memory", label, "label", SYNC_CREATE, (_, from_val, ref to_val) => { to_val.set_string (format_size (from_val.get_uint64 () * 1024, IEC_UNITS)); return true; - }); - item.bindings.set ("memory", binding_memory); + })); } - private void memory_item_factory_unbind (Object object) { + private void bind_pid_item (Object object) { var cell = (Gtk.ColumnViewCell) object; var label = (Gtk.Label) cell.child; var item = (ProcessRowData) cell.item; - label.label = null; - item.bindings["memory"].unbind (); - } - private void pid_item_factory_bind (Object object) { - var cell = (Gtk.ColumnViewCell) object; - var label = (Gtk.Label) cell.child; - var item = (ProcessRowData) cell.item; - var binding_pid = item.bind_property ("pid", label, "label", SYNC_CREATE, (_, from_val, ref to_val) => { + item.bindings.set ("pid", item.bind_property ("pid", label, "label", SYNC_CREATE, (_, from_val, ref to_val) => { to_val.set_string ("%d".printf (from_val.get_int ())); return true; - }); - item.bindings.set ("pid", binding_pid); + })); } - private void pid_item_factory_unbind (Object object) { + private void unbind_label_item (Object object, string key) { var cell = (Gtk.ColumnViewCell) object; - var label = (Gtk.Label) cell.child; + var item = (ProcessRowData) cell.item; - label.label = null; - item.bindings["pid"].unbind (); - } + item.bindings[key].unbind (); + var label = (Gtk.Label) cell.child; + label.label = Utils.NO_DATA; + } } From ac66c56ac1d5c9e23af7394ba6d365f880457748 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Danielle=20For=C3=A9?= Date: Thu, 17 Sep 2026 14:11:02 -0700 Subject: [PATCH 2/2] Update ProcessTreeView.vala Co-authored-by: Leo --- src/Views/ProcessView/ProcessTreeView/ProcessTreeView.vala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Views/ProcessView/ProcessTreeView/ProcessTreeView.vala b/src/Views/ProcessView/ProcessTreeView/ProcessTreeView.vala index d670613c7..5456e89bc 100644 --- a/src/Views/ProcessView/ProcessTreeView/ProcessTreeView.vala +++ b/src/Views/ProcessView/ProcessTreeView/ProcessTreeView.vala @@ -4,7 +4,7 @@ */ public class Monitor.ProcessTreeView : Granite.Bin { - public TreeViewModel model { get; construct; } + public TreeViewModel model { private get; construct; } public ProcessTreeView (TreeViewModel model) { Object (model: model);