| OLD | NEW |
| 1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "chrome/browser/gtk/task_manager_gtk.h" | 5 #include "chrome/browser/gtk/task_manager_gtk.h" |
| 6 | 6 |
| 7 #include <gdk/gdkkeysyms.h> | 7 #include <gdk/gdkkeysyms.h> |
| 8 | 8 |
| 9 #include <algorithm> | 9 #include <algorithm> |
| 10 #include <vector> | 10 #include <vector> |
| 11 | 11 |
| 12 #include "app/l10n_util.h" | 12 #include "app/l10n_util.h" |
| 13 #include "app/resource_bundle.h" | 13 #include "app/resource_bundle.h" |
| 14 #include "base/gfx/gtk_util.h" | 14 #include "base/gfx/gtk_util.h" |
| 15 #include "base/logging.h" | 15 #include "base/logging.h" |
| 16 #include "chrome/browser/browser_list.h" | 16 #include "chrome/browser/browser_list.h" |
| 17 #include "chrome/browser/browser_process.h" | 17 #include "chrome/browser/browser_process.h" |
| 18 #include "chrome/browser/browser_window.h" | 18 #include "chrome/browser/browser_window.h" |
| 19 #include "chrome/browser/gtk/gtk_theme_provider.h" | 19 #include "chrome/browser/gtk/gtk_theme_provider.h" |
| 20 #include "chrome/browser/gtk/gtk_chrome_link_button.h" | 20 #include "chrome/browser/gtk/gtk_chrome_link_button.h" |
| 21 #include "chrome/browser/gtk/gtk_theme_provider.h" | 21 #include "chrome/browser/gtk/gtk_theme_provider.h" |
| 22 #include "chrome/browser/gtk/menu_gtk.h" | 22 #include "chrome/browser/gtk/menu_gtk.h" |
| 23 #include "chrome/common/gtk_tree.h" | 23 #include "chrome/common/gtk_tree.h" |
| 24 #include "chrome/common/gtk_util.h" | 24 #include "chrome/common/gtk_util.h" |
| 25 #include "chrome/common/pref_names.h" | 25 #include "chrome/common/pref_names.h" |
| 26 #include "chrome/common/pref_service.h" | 26 #include "chrome/common/pref_service.h" |
| 27 #include "grit/app_resources.h" | 27 #include "grit/app_resources.h" |
| 28 #include "grit/chromium_strings.h" | 28 #include "grit/chromium_strings.h" |
| 29 #include "grit/generated_resources.h" | |
| 30 | 29 |
| 31 namespace { | 30 namespace { |
| 32 | 31 |
| 33 // The task manager window default size. | 32 // The task manager window default size. |
| 34 const int kDefaultWidth = 460; | 33 const int kDefaultWidth = 460; |
| 35 const int kDefaultHeight = 270; | 34 const int kDefaultHeight = 270; |
| 36 | 35 |
| 37 // The resource id for the 'End process' button. | 36 // The resource id for the 'End process' button. |
| 38 const gint kTaskManagerResponseKill = 1; | 37 const gint kTaskManagerResponseKill = 1; |
| 39 | 38 |
| (...skipping 22 matching lines...) Expand all Loading... |
| 62 case IDS_TASK_MANAGER_SHARED_MEM_COLUMN: | 61 case IDS_TASK_MANAGER_SHARED_MEM_COLUMN: |
| 63 return kTaskManagerSharedMem; | 62 return kTaskManagerSharedMem; |
| 64 case IDS_TASK_MANAGER_PRIVATE_MEM_COLUMN: | 63 case IDS_TASK_MANAGER_PRIVATE_MEM_COLUMN: |
| 65 return kTaskManagerPrivateMem; | 64 return kTaskManagerPrivateMem; |
| 66 case IDS_TASK_MANAGER_CPU_COLUMN: | 65 case IDS_TASK_MANAGER_CPU_COLUMN: |
| 67 return kTaskManagerCPU; | 66 return kTaskManagerCPU; |
| 68 case IDS_TASK_MANAGER_NET_COLUMN: | 67 case IDS_TASK_MANAGER_NET_COLUMN: |
| 69 return kTaskManagerNetwork; | 68 return kTaskManagerNetwork; |
| 70 case IDS_TASK_MANAGER_PROCESS_ID_COLUMN: | 69 case IDS_TASK_MANAGER_PROCESS_ID_COLUMN: |
| 71 return kTaskManagerProcessID; | 70 return kTaskManagerProcessID; |
| 71 case IDS_TASK_MANAGER_GOATS_TELEPORTED_COLUMN: |
| 72 return kTaskManagerGoatsTeleported; |
| 72 default: | 73 default: |
| 73 NOTREACHED(); | 74 NOTREACHED(); |
| 74 return static_cast<TaskManagerColumn>(-1); | 75 return static_cast<TaskManagerColumn>(-1); |
| 75 } | 76 } |
| 76 } | 77 } |
| 77 | 78 |
| 78 int TaskManagerColumnIDToResourceID(int id) { | 79 int TaskManagerColumnIDToResourceID(int id) { |
| 79 switch (id) { | 80 switch (id) { |
| 80 case kTaskManagerPage: | 81 case kTaskManagerPage: |
| 81 return IDS_TASK_MANAGER_PAGE_COLUMN; | 82 return IDS_TASK_MANAGER_PAGE_COLUMN; |
| 82 case kTaskManagerPhysicalMem: | 83 case kTaskManagerPhysicalMem: |
| 83 return IDS_TASK_MANAGER_PHYSICAL_MEM_COLUMN; | 84 return IDS_TASK_MANAGER_PHYSICAL_MEM_COLUMN; |
| 84 case kTaskManagerSharedMem: | 85 case kTaskManagerSharedMem: |
| 85 return IDS_TASK_MANAGER_SHARED_MEM_COLUMN; | 86 return IDS_TASK_MANAGER_SHARED_MEM_COLUMN; |
| 86 case kTaskManagerPrivateMem: | 87 case kTaskManagerPrivateMem: |
| 87 return IDS_TASK_MANAGER_PRIVATE_MEM_COLUMN; | 88 return IDS_TASK_MANAGER_PRIVATE_MEM_COLUMN; |
| 88 case kTaskManagerCPU: | 89 case kTaskManagerCPU: |
| 89 return IDS_TASK_MANAGER_CPU_COLUMN; | 90 return IDS_TASK_MANAGER_CPU_COLUMN; |
| 90 case kTaskManagerNetwork: | 91 case kTaskManagerNetwork: |
| 91 return IDS_TASK_MANAGER_NET_COLUMN; | 92 return IDS_TASK_MANAGER_NET_COLUMN; |
| 92 case kTaskManagerProcessID: | 93 case kTaskManagerProcessID: |
| 93 return IDS_TASK_MANAGER_PROCESS_ID_COLUMN; | 94 return IDS_TASK_MANAGER_PROCESS_ID_COLUMN; |
| 95 case kTaskManagerGoatsTeleported: |
| 96 return IDS_TASK_MANAGER_GOATS_TELEPORTED_COLUMN; |
| 94 default: | 97 default: |
| 95 NOTREACHED(); | 98 NOTREACHED(); |
| 96 return -1; | 99 return -1; |
| 97 } | 100 } |
| 98 } | 101 } |
| 99 | 102 |
| 100 // Should be used for all gtk_tree_view functions that require a column index on | 103 // Should be used for all gtk_tree_view functions that require a column index on |
| 101 // input. | 104 // input. |
| 102 // | 105 // |
| 103 // We need colid - 1 because the gtk_tree_view function is asking for the | 106 // We need colid - 1 because the gtk_tree_view function is asking for the |
| (...skipping 27 matching lines...) Expand all Loading... |
| 131 gtk_tree_view_column_pack_start(column, image_renderer, FALSE); | 134 gtk_tree_view_column_pack_start(column, image_renderer, FALSE); |
| 132 gtk_tree_view_column_add_attribute(column, image_renderer, | 135 gtk_tree_view_column_add_attribute(column, image_renderer, |
| 133 "pixbuf", kTaskManagerIcon); | 136 "pixbuf", kTaskManagerIcon); |
| 134 GtkCellRenderer* text_renderer = gtk_cell_renderer_text_new(); | 137 GtkCellRenderer* text_renderer = gtk_cell_renderer_text_new(); |
| 135 gtk_tree_view_column_pack_start(column, text_renderer, TRUE); | 138 gtk_tree_view_column_pack_start(column, text_renderer, TRUE); |
| 136 gtk_tree_view_column_add_attribute(column, text_renderer, "text", colid); | 139 gtk_tree_view_column_add_attribute(column, text_renderer, "text", colid); |
| 137 gtk_tree_view_column_set_resizable(column, TRUE); | 140 gtk_tree_view_column_set_resizable(column, TRUE); |
| 138 // This is temporary: we'll turn expanding off after getting the size. | 141 // This is temporary: we'll turn expanding off after getting the size. |
| 139 gtk_tree_view_column_set_expand(column, TRUE); | 142 gtk_tree_view_column_set_expand(column, TRUE); |
| 140 gtk_tree_view_append_column(GTK_TREE_VIEW(treeview), column); | 143 gtk_tree_view_append_column(GTK_TREE_VIEW(treeview), column); |
| 144 gtk_tree_view_column_set_sort_column_id(column, colid); |
| 141 } | 145 } |
| 142 | 146 |
| 143 // Inserts a column with a column id of |colid| and |name|. | 147 // Inserts a column with a column id of |colid| and |name|. |
| 144 void TreeViewInsertColumnWithName(GtkWidget* treeview, | 148 void TreeViewInsertColumnWithName(GtkWidget* treeview, |
| 145 TaskManagerColumn colid, const char* name) { | 149 TaskManagerColumn colid, const char* name) { |
| 146 GtkCellRenderer* renderer = gtk_cell_renderer_text_new(); | 150 GtkCellRenderer* renderer = gtk_cell_renderer_text_new(); |
| 147 gtk_tree_view_insert_column_with_attributes(GTK_TREE_VIEW(treeview), -1, | 151 gtk_tree_view_insert_column_with_attributes(GTK_TREE_VIEW(treeview), -1, |
| 148 name, renderer, | 152 name, renderer, |
| 149 "text", colid, | 153 "text", colid, |
| 150 NULL); | 154 NULL); |
| 151 GtkTreeViewColumn* column = gtk_tree_view_get_column( | 155 GtkTreeViewColumn* column = gtk_tree_view_get_column( |
| 152 GTK_TREE_VIEW(treeview), TreeViewColumnIndexFromID(colid)); | 156 GTK_TREE_VIEW(treeview), TreeViewColumnIndexFromID(colid)); |
| 153 gtk_tree_view_column_set_resizable(column, TRUE); | 157 gtk_tree_view_column_set_resizable(column, TRUE); |
| 158 gtk_tree_view_column_set_sort_column_id(column, colid); |
| 154 } | 159 } |
| 155 | 160 |
| 156 // Loads the column name from |resid| and uses the corresponding | 161 // Loads the column name from |resid| and uses the corresponding |
| 157 // TaskManagerColumn value as the column id to insert into the treeview. | 162 // TaskManagerColumn value as the column id to insert into the treeview. |
| 158 void TreeViewInsertColumn(GtkWidget* treeview, int resid) { | 163 void TreeViewInsertColumn(GtkWidget* treeview, int resid) { |
| 159 TreeViewInsertColumnWithName(treeview, TaskManagerResourceIDToColumnID(resid), | 164 TreeViewInsertColumnWithName(treeview, TaskManagerResourceIDToColumnID(resid), |
| 160 l10n_util::GetStringUTF8(resid).c_str()); | 165 l10n_util::GetStringUTF8(resid).c_str()); |
| 161 } | 166 } |
| 162 | 167 |
| 163 // Set the current width of the column without forcing a minimum width as | 168 // Set the current width of the column without forcing a minimum width as |
| 164 // gtk_tree_view_column_set_fixed_width() would. This would basically be | 169 // gtk_tree_view_column_set_fixed_width() would. This would basically be |
| 165 // gtk_tree_view_column_set_width() except that there is no such function. | 170 // gtk_tree_view_column_set_width() except that there is no such function. |
| 166 void TreeViewColumnSetWidth(GtkTreeViewColumn* column, gint width) { | 171 void TreeViewColumnSetWidth(GtkTreeViewColumn* column, gint width) { |
| 167 column->width = width; | 172 column->width = width; |
| 168 column->resized_width = width; | 173 column->resized_width = width; |
| 169 column->use_resized_width = TRUE; | 174 column->use_resized_width = TRUE; |
| 170 // Needed for use_resized_width to be effective. | 175 // Needed for use_resized_width to be effective. |
| 171 gtk_widget_queue_resize(column->tree_view); | 176 gtk_widget_queue_resize(column->tree_view); |
| 172 } | 177 } |
| 173 | 178 |
| 174 } // namespace | 179 } // namespace |
| 175 | 180 |
| 176 class TaskManagerGtk::ContextMenuController : public MenuGtk::Delegate { | 181 class TaskManagerGtk::ContextMenuController : public MenuGtk::Delegate { |
| 177 public: | 182 public: |
| 178 explicit ContextMenuController(TaskManagerGtk* task_manager) | 183 explicit ContextMenuController(TaskManagerGtk* task_manager) |
| 179 : task_manager_(task_manager) { | 184 : task_manager_(task_manager) { |
| 180 menu_.reset(new MenuGtk(this, false)); | 185 menu_.reset(new MenuGtk(this, false)); |
| 181 for (int i = kTaskManagerPage; i < kTaskManagerColumnCount - 1; i++) { | 186 for (int i = kTaskManagerPage; i < kTaskManagerColumnCount; i++) { |
| 182 menu_->AppendCheckMenuItemWithLabel( | 187 menu_->AppendCheckMenuItemWithLabel( |
| 183 i, l10n_util::GetStringUTF8(TaskManagerColumnIDToResourceID(i))); | 188 i, l10n_util::GetStringUTF8(TaskManagerColumnIDToResourceID(i))); |
| 184 } | 189 } |
| 185 | |
| 186 menu_->AppendCheckMenuItemWithLabel(kTaskManagerGoatsTeleported, | |
| 187 "Goats Teleported"); | |
| 188 } | 190 } |
| 189 | 191 |
| 190 virtual ~ContextMenuController() {} | 192 virtual ~ContextMenuController() {} |
| 191 | 193 |
| 192 void RunMenu() { | 194 void RunMenu() { |
| 193 menu_->PopupAsContext(gtk_get_current_event_time()); | 195 menu_->PopupAsContext(gtk_get_current_event_time()); |
| 194 } | 196 } |
| 195 | 197 |
| 196 void Cancel() { | 198 void Cancel() { |
| 197 task_manager_ = NULL; | 199 task_manager_ = NULL; |
| (...skipping 183 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 381 | 383 |
| 382 CreateTaskManagerTreeview(); | 384 CreateTaskManagerTreeview(); |
| 383 gtk_tree_view_set_headers_clickable(GTK_TREE_VIEW(treeview_), TRUE); | 385 gtk_tree_view_set_headers_clickable(GTK_TREE_VIEW(treeview_), TRUE); |
| 384 gtk_tree_view_set_grid_lines(GTK_TREE_VIEW(treeview_), | 386 gtk_tree_view_set_grid_lines(GTK_TREE_VIEW(treeview_), |
| 385 GTK_TREE_VIEW_GRID_LINES_HORIZONTAL); | 387 GTK_TREE_VIEW_GRID_LINES_HORIZONTAL); |
| 386 g_signal_connect(G_OBJECT(treeview_), "button-press-event", | 388 g_signal_connect(G_OBJECT(treeview_), "button-press-event", |
| 387 G_CALLBACK(OnButtonPressEvent), this); | 389 G_CALLBACK(OnButtonPressEvent), this); |
| 388 gtk_widget_add_events(treeview_, | 390 gtk_widget_add_events(treeview_, |
| 389 GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK); | 391 GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK); |
| 390 | 392 |
| 391 // Hide some columns by default | |
| 392 TreeViewColumnSetVisible(treeview_, kTaskManagerSharedMem, false); | |
| 393 TreeViewColumnSetVisible(treeview_, kTaskManagerPrivateMem, false); | |
| 394 TreeViewColumnSetVisible(treeview_, kTaskManagerProcessID, false); | |
| 395 TreeViewColumnSetVisible(treeview_, kTaskManagerGoatsTeleported, false); | |
| 396 | |
| 397 // |selection| is owned by |treeview_|. | 393 // |selection| is owned by |treeview_|. |
| 398 GtkTreeSelection* selection = gtk_tree_view_get_selection( | 394 GtkTreeSelection* selection = gtk_tree_view_get_selection( |
| 399 GTK_TREE_VIEW(treeview_)); | 395 GTK_TREE_VIEW(treeview_)); |
| 400 gtk_tree_selection_set_mode(selection, GTK_SELECTION_MULTIPLE); | 396 gtk_tree_selection_set_mode(selection, GTK_SELECTION_MULTIPLE); |
| 401 g_signal_connect(G_OBJECT(selection), "changed", | 397 g_signal_connect(G_OBJECT(selection), "changed", |
| 402 G_CALLBACK(OnSelectionChanged), this); | 398 G_CALLBACK(OnSelectionChanged), this); |
| 403 | 399 |
| 404 gtk_container_add(GTK_CONTAINER(scrolled), treeview_); | 400 gtk_container_add(GTK_CONTAINER(scrolled), treeview_); |
| 405 | 401 |
| 406 SetInitialDialogSize(); | 402 SetInitialDialogSize(); |
| (...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 442 accel_group_ = gtk_accel_group_new(); | 438 accel_group_ = gtk_accel_group_new(); |
| 443 gtk_window_add_accel_group(GTK_WINDOW(dialog_), accel_group_); | 439 gtk_window_add_accel_group(GTK_WINDOW(dialog_), accel_group_); |
| 444 | 440 |
| 445 gtk_accel_group_connect(accel_group_, | 441 gtk_accel_group_connect(accel_group_, |
| 446 GDK_w, GDK_CONTROL_MASK, GtkAccelFlags(0), | 442 GDK_w, GDK_CONTROL_MASK, GtkAccelFlags(0), |
| 447 g_cclosure_new(G_CALLBACK(OnGtkAccelerator), | 443 g_cclosure_new(G_CALLBACK(OnGtkAccelerator), |
| 448 this, NULL)); | 444 this, NULL)); |
| 449 } | 445 } |
| 450 | 446 |
| 451 void TaskManagerGtk::CreateTaskManagerTreeview() { | 447 void TaskManagerGtk::CreateTaskManagerTreeview() { |
| 452 treeview_ = gtk_tree_view_new(); | 448 process_list_ = gtk_list_store_new(kTaskManagerColumnCount, |
| 449 GDK_TYPE_PIXBUF, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, |
| 450 G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, |
| 451 G_TYPE_STRING); |
| 453 | 452 |
| 453 // Support sorting on all columns. |
| 454 process_list_sort_ = gtk_tree_model_sort_new_with_model( |
| 455 GTK_TREE_MODEL(process_list_)); |
| 456 gtk_tree_sortable_set_sort_func(GTK_TREE_SORTABLE(process_list_sort_), |
| 457 kTaskManagerPage, |
| 458 ComparePage, this, NULL); |
| 459 gtk_tree_sortable_set_sort_func(GTK_TREE_SORTABLE(process_list_sort_), |
| 460 kTaskManagerPhysicalMem, |
| 461 ComparePhysicalMemory, this, NULL); |
| 462 gtk_tree_sortable_set_sort_func(GTK_TREE_SORTABLE(process_list_sort_), |
| 463 kTaskManagerSharedMem, |
| 464 CompareSharedMemory, this, NULL); |
| 465 gtk_tree_sortable_set_sort_func(GTK_TREE_SORTABLE(process_list_sort_), |
| 466 kTaskManagerPrivateMem, |
| 467 ComparePrivateMemory, this, NULL); |
| 468 gtk_tree_sortable_set_sort_func(GTK_TREE_SORTABLE(process_list_sort_), |
| 469 kTaskManagerCPU, |
| 470 CompareCPU, this, NULL); |
| 471 gtk_tree_sortable_set_sort_func(GTK_TREE_SORTABLE(process_list_sort_), |
| 472 kTaskManagerNetwork, |
| 473 CompareNetwork, this, NULL); |
| 474 gtk_tree_sortable_set_sort_func(GTK_TREE_SORTABLE(process_list_sort_), |
| 475 kTaskManagerProcessID, |
| 476 CompareProcessID, this, NULL); |
| 477 gtk_tree_sortable_set_sort_func(GTK_TREE_SORTABLE(process_list_sort_), |
| 478 kTaskManagerGoatsTeleported, |
| 479 CompareGoatsTeleported, this, NULL); |
| 480 treeview_ = gtk_tree_view_new_with_model(process_list_sort_); |
| 481 |
| 482 // Insert all the columns. |
| 454 TreeViewInsertColumnWithPixbuf(treeview_, IDS_TASK_MANAGER_PAGE_COLUMN); | 483 TreeViewInsertColumnWithPixbuf(treeview_, IDS_TASK_MANAGER_PAGE_COLUMN); |
| 455 TreeViewInsertColumn(treeview_, IDS_TASK_MANAGER_PHYSICAL_MEM_COLUMN); | 484 TreeViewInsertColumn(treeview_, IDS_TASK_MANAGER_PHYSICAL_MEM_COLUMN); |
| 456 TreeViewInsertColumn(treeview_, IDS_TASK_MANAGER_SHARED_MEM_COLUMN); | 485 TreeViewInsertColumn(treeview_, IDS_TASK_MANAGER_SHARED_MEM_COLUMN); |
| 457 TreeViewInsertColumn(treeview_, IDS_TASK_MANAGER_PRIVATE_MEM_COLUMN); | 486 TreeViewInsertColumn(treeview_, IDS_TASK_MANAGER_PRIVATE_MEM_COLUMN); |
| 458 TreeViewInsertColumn(treeview_, IDS_TASK_MANAGER_CPU_COLUMN); | 487 TreeViewInsertColumn(treeview_, IDS_TASK_MANAGER_CPU_COLUMN); |
| 459 TreeViewInsertColumn(treeview_, IDS_TASK_MANAGER_NET_COLUMN); | 488 TreeViewInsertColumn(treeview_, IDS_TASK_MANAGER_NET_COLUMN); |
| 460 TreeViewInsertColumn(treeview_, IDS_TASK_MANAGER_PROCESS_ID_COLUMN); | 489 TreeViewInsertColumn(treeview_, IDS_TASK_MANAGER_PROCESS_ID_COLUMN); |
| 490 TreeViewInsertColumn(treeview_, IDS_TASK_MANAGER_GOATS_TELEPORTED_COLUMN); |
| 461 | 491 |
| 462 TreeViewInsertColumnWithName(treeview_, kTaskManagerGoatsTeleported, | 492 // Hide some columns by default. |
| 463 "Goats Teleported"); | 493 TreeViewColumnSetVisible(treeview_, kTaskManagerSharedMem, false); |
| 464 | 494 TreeViewColumnSetVisible(treeview_, kTaskManagerPrivateMem, false); |
| 465 process_list_ = gtk_list_store_new(kTaskManagerColumnCount, | 495 TreeViewColumnSetVisible(treeview_, kTaskManagerProcessID, false); |
| 466 GDK_TYPE_PIXBUF, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, | 496 TreeViewColumnSetVisible(treeview_, kTaskManagerGoatsTeleported, false); |
| 467 G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, | 497 |
| 468 G_TYPE_STRING); | |
| 469 | |
| 470 gtk_tree_view_set_model(GTK_TREE_VIEW(treeview_), | |
| 471 GTK_TREE_MODEL(process_list_)); | |
| 472 g_object_unref(process_list_); | 498 g_object_unref(process_list_); |
| 499 g_object_unref(process_list_sort_); |
| 473 } | 500 } |
| 474 | 501 |
| 475 std::string TaskManagerGtk::GetModelText(int row, int col_id) { | 502 std::string TaskManagerGtk::GetModelText(int row, int col_id) { |
| 476 switch (col_id) { | 503 switch (col_id) { |
| 477 case IDS_TASK_MANAGER_PAGE_COLUMN: // Process | 504 case IDS_TASK_MANAGER_PAGE_COLUMN: // Process |
| 478 return WideToUTF8(model_->GetResourceTitle(row)); | 505 return WideToUTF8(model_->GetResourceTitle(row)); |
| 479 | 506 |
| 480 case IDS_TASK_MANAGER_PRIVATE_MEM_COLUMN: // Memory | 507 case IDS_TASK_MANAGER_PRIVATE_MEM_COLUMN: // Memory |
| 481 if (!model_->IsResourceFirstInGroup(row)) | 508 if (!model_->IsResourceFirstInGroup(row)) |
| 482 return std::string(); | 509 return std::string(); |
| (...skipping 15 matching lines...) Expand all Loading... |
| 498 return WideToUTF8(model_->GetResourceCPUUsage(row)); | 525 return WideToUTF8(model_->GetResourceCPUUsage(row)); |
| 499 | 526 |
| 500 case IDS_TASK_MANAGER_NET_COLUMN: // Net | 527 case IDS_TASK_MANAGER_NET_COLUMN: // Net |
| 501 return WideToUTF8(model_->GetResourceNetworkUsage(row)); | 528 return WideToUTF8(model_->GetResourceNetworkUsage(row)); |
| 502 | 529 |
| 503 case IDS_TASK_MANAGER_PROCESS_ID_COLUMN: // Process ID | 530 case IDS_TASK_MANAGER_PROCESS_ID_COLUMN: // Process ID |
| 504 if (!model_->IsResourceFirstInGroup(row)) | 531 if (!model_->IsResourceFirstInGroup(row)) |
| 505 return std::string(); | 532 return std::string(); |
| 506 return WideToUTF8(model_->GetResourceProcessId(row)); | 533 return WideToUTF8(model_->GetResourceProcessId(row)); |
| 507 | 534 |
| 508 case kTaskManagerGoatsTeleported: // Goats Teleported! | 535 case IDS_TASK_MANAGER_GOATS_TELEPORTED_COLUMN: // Goats Teleported! |
| 509 return WideToUTF8(model_->GetResourceGoatsTeleported(row)); | 536 return WideToUTF8(model_->GetResourceGoatsTeleported(row)); |
| 510 | 537 |
| 511 default: | 538 default: |
| 512 return WideToUTF8(model_->GetResourceStatsValue(row, col_id)); | 539 return WideToUTF8(model_->GetResourceStatsValue(row, col_id)); |
| 513 } | 540 } |
| 514 } | 541 } |
| 515 | 542 |
| 516 GdkPixbuf* TaskManagerGtk::GetModelIcon(int row) { | 543 GdkPixbuf* TaskManagerGtk::GetModelIcon(int row) { |
| 517 SkBitmap icon = model_->GetResourceIcon(row); | 544 SkBitmap icon = model_->GetResourceIcon(row); |
| 518 if (icon.pixelRef() == | 545 if (icon.pixelRef() == |
| (...skipping 10 matching lines...) Expand all Loading... |
| 529 GdkPixbuf* icon = GetModelIcon(row); | 556 GdkPixbuf* icon = GetModelIcon(row); |
| 530 std::string page = GetModelText(row, IDS_TASK_MANAGER_PAGE_COLUMN); | 557 std::string page = GetModelText(row, IDS_TASK_MANAGER_PAGE_COLUMN); |
| 531 std::string phys_mem = GetModelText( | 558 std::string phys_mem = GetModelText( |
| 532 row, IDS_TASK_MANAGER_PHYSICAL_MEM_COLUMN); | 559 row, IDS_TASK_MANAGER_PHYSICAL_MEM_COLUMN); |
| 533 std::string shared_mem = GetModelText( | 560 std::string shared_mem = GetModelText( |
| 534 row, IDS_TASK_MANAGER_SHARED_MEM_COLUMN); | 561 row, IDS_TASK_MANAGER_SHARED_MEM_COLUMN); |
| 535 std::string priv_mem = GetModelText(row, IDS_TASK_MANAGER_PRIVATE_MEM_COLUMN); | 562 std::string priv_mem = GetModelText(row, IDS_TASK_MANAGER_PRIVATE_MEM_COLUMN); |
| 536 std::string cpu = GetModelText(row, IDS_TASK_MANAGER_CPU_COLUMN); | 563 std::string cpu = GetModelText(row, IDS_TASK_MANAGER_CPU_COLUMN); |
| 537 std::string net = GetModelText(row, IDS_TASK_MANAGER_NET_COLUMN); | 564 std::string net = GetModelText(row, IDS_TASK_MANAGER_NET_COLUMN); |
| 538 std::string procid = GetModelText(row, IDS_TASK_MANAGER_PROCESS_ID_COLUMN); | 565 std::string procid = GetModelText(row, IDS_TASK_MANAGER_PROCESS_ID_COLUMN); |
| 539 std::string goats = GetModelText(row, kTaskManagerGoatsTeleported); | 566 std::string goats = GetModelText( |
| 567 row, IDS_TASK_MANAGER_GOATS_TELEPORTED_COLUMN); |
| 540 gtk_list_store_set(process_list_, iter, | 568 gtk_list_store_set(process_list_, iter, |
| 541 kTaskManagerIcon, icon, | 569 kTaskManagerIcon, icon, |
| 542 kTaskManagerPage, page.c_str(), | 570 kTaskManagerPage, page.c_str(), |
| 543 kTaskManagerPhysicalMem, phys_mem.c_str(), | 571 kTaskManagerPhysicalMem, phys_mem.c_str(), |
| 544 kTaskManagerSharedMem, shared_mem.c_str(), | 572 kTaskManagerSharedMem, shared_mem.c_str(), |
| 545 kTaskManagerPrivateMem, priv_mem.c_str(), | 573 kTaskManagerPrivateMem, priv_mem.c_str(), |
| 546 kTaskManagerCPU, cpu.c_str(), | 574 kTaskManagerCPU, cpu.c_str(), |
| 547 kTaskManagerNetwork, net.c_str(), | 575 kTaskManagerNetwork, net.c_str(), |
| 548 kTaskManagerProcessID, procid.c_str(), | 576 kTaskManagerProcessID, procid.c_str(), |
| 549 kTaskManagerGoatsTeleported, goats.c_str(), | 577 kTaskManagerGoatsTeleported, goats.c_str(), |
| (...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 596 // tabbed browser window. Currently, |browser| is pointing to the application, | 624 // tabbed browser window. Currently, |browser| is pointing to the application, |
| 597 // popup window. Therefore, we have to retrieve the last active tab again, | 625 // popup window. Therefore, we have to retrieve the last active tab again, |
| 598 // since a new window has been used. | 626 // since a new window has been used. |
| 599 if (browser->type() & Browser::TYPE_APP_POPUP) { | 627 if (browser->type() & Browser::TYPE_APP_POPUP) { |
| 600 browser = BrowserList::GetLastActive(); | 628 browser = BrowserList::GetLastActive(); |
| 601 DCHECK(browser); | 629 DCHECK(browser); |
| 602 } | 630 } |
| 603 browser->window()->Show(); | 631 browser->window()->Show(); |
| 604 } | 632 } |
| 605 | 633 |
| 634 gint TaskManagerGtk::CompareImpl(GtkTreeModel* model, GtkTreeIter* a, |
| 635 GtkTreeIter* b, int id) { |
| 636 int row1 = gtk_tree::GetRowNumForIter(model, a); |
| 637 int row2 = gtk_tree::GetRowNumForIter(model, b); |
| 638 return model_->CompareValues(row1, row2, id); |
| 639 } |
| 640 |
| 606 // static | 641 // static |
| 607 void TaskManagerGtk::OnResponse(GtkDialog* dialog, gint response_id, | 642 void TaskManagerGtk::OnResponse(GtkDialog* dialog, gint response_id, |
| 608 TaskManagerGtk* task_manager) { | 643 TaskManagerGtk* task_manager) { |
| 609 if (response_id == GTK_RESPONSE_DELETE_EVENT) { | 644 if (response_id == GTK_RESPONSE_DELETE_EVENT) { |
| 610 // Store the dialog's size so we can restore it the next time it's opened. | 645 // Store the dialog's size so we can restore it the next time it's opened. |
| 611 if (g_browser_process->local_state()) { | 646 if (g_browser_process->local_state()) { |
| 612 gint x = 0, y = 0, width = 1, height = 1; | 647 gint x = 0, y = 0, width = 1, height = 1; |
| 613 gtk_window_get_position(GTK_WINDOW(dialog), &x, &y); | 648 gtk_window_get_position(GTK_WINDOW(dialog), &x, &y); |
| 614 gtk_window_get_size(GTK_WINDOW(dialog), &width, &height); | 649 gtk_window_get_size(GTK_WINDOW(dialog), &width, &height); |
| 615 | 650 |
| (...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 719 TaskManagerGtk* task_manager) { | 754 TaskManagerGtk* task_manager) { |
| 720 if (keyval == GDK_w && modifier == GDK_CONTROL_MASK) { | 755 if (keyval == GDK_w && modifier == GDK_CONTROL_MASK) { |
| 721 // The GTK_RESPONSE_DELETE_EVENT response must be sent before the widget | 756 // The GTK_RESPONSE_DELETE_EVENT response must be sent before the widget |
| 722 // is destroyed. The deleted object will receive gtk signals otherwise. | 757 // is destroyed. The deleted object will receive gtk signals otherwise. |
| 723 gtk_dialog_response(GTK_DIALOG(task_manager->dialog_), | 758 gtk_dialog_response(GTK_DIALOG(task_manager->dialog_), |
| 724 GTK_RESPONSE_DELETE_EVENT); | 759 GTK_RESPONSE_DELETE_EVENT); |
| 725 } | 760 } |
| 726 | 761 |
| 727 return TRUE; | 762 return TRUE; |
| 728 } | 763 } |
| OLD | NEW |