diff options
author | msw@chromium.org <msw@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-01-14 00:19:04 +0000 |
---|---|---|
committer | msw@chromium.org <msw@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-01-14 00:19:04 +0000 |
commit | 736d1898191dc530e603a996d8c4bf2415326aa7 (patch) | |
tree | 79c524d49f164c8c970b119279be072aaaaee91d /chrome/browser/ui/gtk/task_manager_gtk.h | |
parent | 2dee6d5003f0d5a9fffd55856b9f54b404988cab (diff) | |
download | chromium_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.h | 233 |
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_ |