summaryrefslogtreecommitdiffstats
path: root/chrome/browser/ui/gtk/task_manager_gtk.h
diff options
context:
space:
mode:
authormsw@chromium.org <msw@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-01-14 00:19:04 +0000
committermsw@chromium.org <msw@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-01-14 00:19:04 +0000
commit736d1898191dc530e603a996d8c4bf2415326aa7 (patch)
tree79c524d49f164c8c970b119279be072aaaaee91d /chrome/browser/ui/gtk/task_manager_gtk.h
parent2dee6d5003f0d5a9fffd55856b9f54b404988cab (diff)
downloadchromium_src-736d1898191dc530e603a996d8c4bf2415326aa7.zip
chromium_src-736d1898191dc530e603a996d8c4bf2415326aa7.tar.gz
chromium_src-736d1898191dc530e603a996d8c4bf2415326aa7.tar.bz2
Move chrome/browser/gtk/ to chrome/browser/ui/gtk/
(moved *.cc using 'svn mv' to preserve history) (copied *.h using 'svn cp' to preserve history and stub out originals) Stubbed out original headers in chrome/browser/gtk/ Update header guards & copyright dates in chrome/browser/ui/gtk/ Update .gypi files Remove chrome/chrome_browser.gypi:4228 reference to nonexistant: ['include', '^browser/gtk/pk11_password_dialog.h'], Remove stray header guard in: chrome/browser/ui/gtk/bookmark_bar_instructions_gtk.cc Add #pragma once to the following files: chrome/browser/ui/gtk/instant_confirm_dialog_gtk.h chrome/browser/ui/gtk/infobar_arrow_model.h Ran the following to appease presubmit: 'svn pset svn:eol-style LF \ chrome/browser/ui/gtk/info_bubble_accelerators_gtk.cc \ chrome/browser/ui/gtk/gtk_custom_menu.cc \ chrome/browser/ui/gtk/info_bubble_accelerators_gtk.h \ chrome/browser/ui/gtk/gtk_custom_menu.h \ chrome/browser/ui/gtk/options/managed_prefs_banner_gtk.h \ chrome/browser/ui/gtk/chrome_gtk_frame.h \ chrome/browser/ui/gtk/chrome_gtk_frame.cc \ chrome/browser/ui/gtk/gtk_custom_menu_item.h \ chrome/browser/gtk/info_bubble_accelerators_gtk.h \ chrome/browser/gtk/gtk_custom_menu.h \ chrome/browser/gtk/options/managed_prefs_banner_gtk.h \ chrome/browser/gtk/chrome_gtk_frame.h \ chrome/browser/gtk/gtk_custom_menu_item.h' BUG=69289 TEST=Compile&Trybots Review URL: http://codereview.chromium.org/6251001 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@71397 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/ui/gtk/task_manager_gtk.h')
-rw-r--r--chrome/browser/ui/gtk/task_manager_gtk.h233
1 files changed, 233 insertions, 0 deletions
diff --git a/chrome/browser/ui/gtk/task_manager_gtk.h b/chrome/browser/ui/gtk/task_manager_gtk.h
new file mode 100644
index 0000000..2f90ddf
--- /dev/null
+++ b/chrome/browser/ui/gtk/task_manager_gtk.h
@@ -0,0 +1,233 @@
+// Copyright (c) 2011 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef CHROME_BROWSER_UI_GTK_TASK_MANAGER_GTK_H_
+#define CHROME_BROWSER_UI_GTK_TASK_MANAGER_GTK_H_
+#pragma once
+
+#include <gtk/gtk.h>
+
+#include <string>
+
+#include "app/gtk_signal.h"
+#include "base/scoped_ptr.h"
+#include "chrome/browser/task_manager/task_manager.h"
+#include "grit/generated_resources.h"
+
+#if defined(TOOLKIT_VIEWS)
+namespace gfx {
+class Point;
+}
+#endif
+
+class TaskManagerGtk : public TaskManagerModelObserver {
+ public:
+ TaskManagerGtk();
+ virtual ~TaskManagerGtk();
+
+ // TaskManagerModelObserver
+ virtual void OnModelChanged();
+ virtual void OnItemsChanged(int start, int length);
+ virtual void OnItemsAdded(int start, int length);
+ virtual void OnItemsRemoved(int start, int length);
+
+ // Creates the task manager if it doesn't exist; otherwise, it activates the
+ // existing task manager window.
+ static void Show();
+
+ private:
+ class ContextMenuController;
+ friend class ContextMenuController;
+
+ // Initializes the task manager dialog.
+ void Init();
+
+ // Set |dialog_|'s initial size, using its previous size if that was saved.
+ void SetInitialDialogSize();
+
+ // Connects the ctrl-w accelerator to the dialog.
+ void ConnectAccelerators();
+
+ // Sets up the treeview widget.
+ void CreateTaskManagerTreeview();
+
+ // Returns the model data for a given |row| and |col_id|.
+ std::string GetModelText(int row, int col_id);
+
+ // Retrieves the resource icon from the model for |row|.
+ GdkPixbuf* GetModelIcon(int row);
+
+ // Sets the treeview row data. |row| is an index into the model and |iter|
+ // is the current position in the treeview.
+ void SetRowDataFromModel(int row, GtkTreeIter* iter);
+
+ // Queries the treeview for the selected rows, and kills those processes.
+ void KillSelectedProcesses();
+
+ // Opens the context menu used to select the task manager columns.
+#if defined(TOOLKIT_VIEWS)
+ void ShowContextMenu(const gfx::Point& point);
+#else
+ void ShowContextMenu();
+#endif
+
+ // Opens about:memory in a new foreground tab.
+ void OnLinkActivated();
+
+ // Compare implementation used for sorting columns.
+ gint CompareImpl(GtkTreeModel* tree_model, GtkTreeIter* a,
+ GtkTreeIter* b, int id);
+
+ // Response signal handler that notifies us of dialog destruction.
+ CHROMEGTK_CALLBACK_0(TaskManagerGtk, void, OnDestroy);
+
+ // Response signal handler that notifies us of dialog responses.
+ CHROMEGTK_CALLBACK_1(TaskManagerGtk, void, OnResponse, gint);
+
+ // Realize signal handler to set the page column's initial size.
+ CHROMEG_CALLBACK_0(TaskManagerGtk, void, OnTreeViewRealize, GtkTreeView*);
+
+ // Changed signal handler that is sent when the treeview selection changes.
+ CHROMEG_CALLBACK_0(TaskManagerGtk, void, OnSelectionChanged,
+ GtkTreeSelection*);
+
+ // row-activated handler that foregrounds a process on activation (e.g.,
+ // double-click).
+ CHROMEGTK_CALLBACK_2(TaskManagerGtk, void, OnRowActivated,
+ GtkTreePath*, GtkTreeViewColumn*);
+
+ // button-release-event handler that opens the right-click context menu.
+ CHROMEGTK_CALLBACK_1(TaskManagerGtk, gboolean, OnButtonReleaseEvent,
+ GdkEventButton*);
+
+ // Handles an accelerator being pressed.
+ CHROMEG_CALLBACK_3(TaskManagerGtk, gboolean, OnGtkAccelerator,
+ GtkAccelGroup*, GObject*, guint, GdkModifierType);
+
+ // Page sorting callback.
+ static gint ComparePage(GtkTreeModel* model, GtkTreeIter* a,
+ GtkTreeIter* b, gpointer task_manager) {
+ return reinterpret_cast<TaskManagerGtk*>(task_manager)->
+ CompareImpl(model, a, b, IDS_TASK_MANAGER_PAGE_COLUMN);
+ }
+
+ // Shared memory sorting callback.
+ static gint CompareSharedMemory(GtkTreeModel* model, GtkTreeIter* a,
+ GtkTreeIter* b, gpointer task_manager) {
+ return reinterpret_cast<TaskManagerGtk*>(task_manager)->
+ CompareImpl(model, a, b, IDS_TASK_MANAGER_SHARED_MEM_COLUMN);
+ }
+
+ // Private memory sorting callback.
+ static gint ComparePrivateMemory(GtkTreeModel* model, GtkTreeIter* a,
+ GtkTreeIter* b, gpointer task_manager) {
+ return reinterpret_cast<TaskManagerGtk*>(task_manager)->
+ CompareImpl(model, a, b, IDS_TASK_MANAGER_PRIVATE_MEM_COLUMN);
+ }
+
+ // Javascript memory sorting callback.
+ static gint CompareV8Memory(GtkTreeModel* model, GtkTreeIter* a,
+ GtkTreeIter* b, gpointer task_manager) {
+ return reinterpret_cast<TaskManagerGtk*>(task_manager)->
+ CompareImpl(model, a, b,
+ IDS_TASK_MANAGER_JAVASCRIPT_MEMORY_ALLOCATED_COLUMN);
+ }
+
+ // CPU sorting callback.
+ static gint CompareCPU(GtkTreeModel* model, GtkTreeIter* a,
+ GtkTreeIter* b, gpointer task_manager) {
+ return reinterpret_cast<TaskManagerGtk*>(task_manager)->
+ CompareImpl(model, a, b, IDS_TASK_MANAGER_CPU_COLUMN);
+ }
+
+ // Network sorting callback.
+ static gint CompareNetwork(GtkTreeModel* model, GtkTreeIter* a,
+ GtkTreeIter* b, gpointer task_manager) {
+ return reinterpret_cast<TaskManagerGtk*>(task_manager)->
+ CompareImpl(model, a, b, IDS_TASK_MANAGER_NET_COLUMN);
+ }
+
+ // Process ID sorting callback.
+ static gint CompareProcessID(GtkTreeModel* model, GtkTreeIter* a,
+ GtkTreeIter* b, gpointer task_manager) {
+ return reinterpret_cast<TaskManagerGtk*>(task_manager)->
+ CompareImpl(model, a, b, IDS_TASK_MANAGER_PROCESS_ID_COLUMN);
+ }
+
+ // WebCore Image Cache sorting callback.
+ static gint CompareWebCoreImageCache(GtkTreeModel* model, GtkTreeIter* a,
+ GtkTreeIter* b, gpointer task_manager) {
+ return reinterpret_cast<TaskManagerGtk*>(task_manager)->
+ CompareImpl(model, a, b, IDS_TASK_MANAGER_WEBCORE_IMAGE_CACHE_COLUMN);
+ }
+
+ // WebCore Scripts Cache sorting callback.
+ static gint CompareWebCoreScriptsCache(GtkTreeModel* model, GtkTreeIter* a,
+ GtkTreeIter* b,
+ gpointer task_manager) {
+ return reinterpret_cast<TaskManagerGtk*>(task_manager)->
+ CompareImpl(model, a, b, IDS_TASK_MANAGER_WEBCORE_SCRIPTS_CACHE_COLUMN);
+ }
+
+ // WebCore CSS Cache sorting callback.
+ static gint CompareWebCoreCssCache(GtkTreeModel* model, GtkTreeIter* a,
+ GtkTreeIter* b, gpointer task_manager) {
+ return reinterpret_cast<TaskManagerGtk*>(task_manager)->
+ CompareImpl(model, a, b, IDS_TASK_MANAGER_WEBCORE_CSS_CACHE_COLUMN);
+ }
+
+ // Sqlite memory sorting callback.
+ static gint CompareSqliteMemoryUsed(GtkTreeModel* model, GtkTreeIter* a,
+ GtkTreeIter* b, gpointer task_manager) {
+ return reinterpret_cast<TaskManagerGtk*>(task_manager)->
+ CompareImpl(model, a, b, IDS_TASK_MANAGER_SQLITE_MEMORY_USED_COLUMN);
+ }
+
+ // Goats Teleported sorting callback.
+ static gint CompareGoatsTeleported(GtkTreeModel* model, GtkTreeIter* a,
+ GtkTreeIter* b, gpointer task_manager) {
+ return reinterpret_cast<TaskManagerGtk*>(task_manager)->
+ CompareImpl(model, a, b, IDS_TASK_MANAGER_GOATS_TELEPORTED_COLUMN);
+ }
+
+ // The task manager.
+ TaskManager* task_manager_;
+
+ // Our model.
+ TaskManagerModel* model_;
+
+ // The task manager dialog window.
+ GtkWidget* dialog_;
+
+ // The treeview that contains the process list.
+ GtkWidget* treeview_;
+
+ // The list of processes.
+ GtkListStore* process_list_;
+ GtkTreeModel* process_list_sort_;
+
+ // The number of processes in |process_list_|.
+ int process_count_;
+
+ // The id of the |dialog_| destroy signal handler.
+ gulong destroy_handler_id_;
+
+ // The context menu controller.
+ scoped_ptr<ContextMenuController> menu_controller_;
+
+ GtkAccelGroup* accel_group_;
+
+ // An open task manager window. There can only be one open at a time. This
+ // is reset to NULL when the window is closed.
+ static TaskManagerGtk* instance_;
+
+ // We edit the selection in the OnSelectionChanged handler, and we use this
+ // variable to prevent ourselves from handling further changes that we
+ // ourselves caused.
+ bool ignore_selection_changed_;
+
+ DISALLOW_COPY_AND_ASSIGN(TaskManagerGtk);
+};
+
+#endif // CHROME_BROWSER_UI_GTK_TASK_MANAGER_GTK_H_