You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
339 lines
9.1 KiB
339 lines
9.1 KiB
/*
|
|
* qps.h
|
|
* This file is part of qps -- Qt-based visual process status monitor
|
|
*
|
|
* Copyright 1997-1999 Mattias Engdegård
|
|
*
|
|
* This program is free software; you can redistribute it and/or modify
|
|
* it under the terms of the GNU General Public License as published by
|
|
* the Free Software Foundation; either version 2 of the License, or
|
|
* (at your option) any later version.
|
|
*
|
|
* This program is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License
|
|
* along with this program; if not, write to the Free Software
|
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
|
|
* MA 02110-1301, USA.
|
|
*/
|
|
|
|
#ifndef QPS_H
|
|
#define QPS_H
|
|
|
|
#ifndef USING_PCH
|
|
#include <QWidget>
|
|
#include <QMenuBar>
|
|
#include <QColor>
|
|
#include <QMenu>
|
|
#include <QCloseEvent>
|
|
#include <QTimerEvent>
|
|
#include <QPixmap>
|
|
#include <QUrl>
|
|
#include <QSystemTrayIcon>
|
|
#endif
|
|
|
|
#if QT_VERSION >= 0x040200
|
|
#else
|
|
//#error Qt library version 4.2 or higher is needed for this version of qps
|
|
#endif
|
|
|
|
#define HTABLE1
|
|
#include "misc.h"
|
|
#ifdef HTABLE2
|
|
#include "pstable2.h"
|
|
#else
|
|
#include "pstable.h"
|
|
#endif
|
|
#include "proc.h"
|
|
#include "infobar.h"
|
|
#include "fieldsel.h"
|
|
#include "details.h"
|
|
#include "prefs.h"
|
|
#include "command.h"
|
|
|
|
#define DEBUG printf
|
|
|
|
#define FUNC_START
|
|
#define FUNC_END
|
|
|
|
#include <QSystemTrayIcon>
|
|
|
|
class CommandDialog;
|
|
|
|
class Qps : public QWidget
|
|
{
|
|
Q_OBJECT
|
|
public:
|
|
Qps();
|
|
~Qps();
|
|
|
|
void set_update_period(int milliseconds);
|
|
void setWindowGroup(QWidget *w);
|
|
void setCommand(int argc, char **argv);
|
|
void setIconSize(int w, int h) { icon_width = w, icon_height = h; }
|
|
void write_settings();
|
|
void save_settings();
|
|
|
|
QPixmap *get_load_icon();
|
|
|
|
// settings
|
|
static bool show_file_path; // shows command/file map path
|
|
static bool show_cmd_path; // DEL CMDLINE shows command path
|
|
static bool show_infobar; // information bar is shown
|
|
static bool show_ctrlbar; // control bar is shown
|
|
static bool show_statusbar; //
|
|
static bool show_mem_bar; // memory is shown as a bar
|
|
static bool show_swap_bar; // swap is shown as a bar
|
|
static bool show_cpu_bar; // cpu states are shown as a bar
|
|
static bool show_load_graph; // load is shown as a graph
|
|
static bool load_in_icon; // load graph in icon
|
|
static bool auto_save_options; // settings saved on exit
|
|
#ifdef LINUX
|
|
static bool hostname_lookup; // do a name lookup on socket addresses
|
|
static bool service_lookup; // map port numbers to service names
|
|
#endif
|
|
static bool pids_to_selection; // selected processes' PIDS to X11 sel
|
|
static bool vertical_cpu_bar; // save space with SMP
|
|
|
|
static int swaplimit; // limit of swap redline, in K or %
|
|
static bool swaplim_percent; // true if swaplimit is in %
|
|
#ifdef SOLARIS
|
|
static bool
|
|
normalize_nice; // whether nice should be normalized (normal nice
|
|
// is 0 etc)
|
|
static bool use_pmap; // use /proc/bin/pmap for map names
|
|
#endif
|
|
static bool tree_gadgets; // use open/close gadgets (triangles)
|
|
static bool tree_lines; // draw tree branch lines
|
|
|
|
// static bool comm_is_magic; //DEL, auto-remove COMM
|
|
// when
|
|
// switching
|
|
static bool flag_systray; // trayicon , sytemtray
|
|
static bool flag_exit;
|
|
static bool flag_show; // last qps-main_window state
|
|
static bool flag_useTabView;
|
|
static bool flag_qps_hide;
|
|
|
|
// colors which may be set by the user
|
|
enum
|
|
{
|
|
COLOR_CPU_USER,
|
|
#ifdef LINUX
|
|
COLOR_CPU_NICE,
|
|
#endif
|
|
COLOR_CPU_SYS,
|
|
#ifdef SOLARIS
|
|
COLOR_CPU_WAIT,
|
|
#endif
|
|
COLOR_CPU_IDLE,
|
|
COLOR_MEM_USED,
|
|
COLOR_MEM_BUFF,
|
|
COLOR_MEM_CACHE,
|
|
COLOR_MEM_FREE,
|
|
COLOR_SWAP_USED,
|
|
COLOR_SWAP_FREE,
|
|
COLOR_SWAP_WARN,
|
|
COLOR_LOAD_BG,
|
|
COLOR_LOAD_FG,
|
|
COLOR_LOAD_LINES,
|
|
COLOR_SELECTION_BG,
|
|
COLOR_SELECTION_FG,
|
|
NUM_COLORS
|
|
};
|
|
|
|
enum menuid
|
|
{
|
|
MENU_SIGQUIT,
|
|
MENU_SIGILL,
|
|
MENU_SIGABRT,
|
|
MENU_SIGFPE,
|
|
MENU_SIGSEGV,
|
|
MENU_SIGPIPE,
|
|
MENU_SIGALRM,
|
|
MENU_SIGUSR1,
|
|
MENU_SIGUSR2,
|
|
MENU_SIGCHLD,
|
|
MENU_SIGCONT,
|
|
MENU_SIGSTOP,
|
|
MENU_SIGTSTP,
|
|
MENU_SIGTTIN,
|
|
MENU_SIGTTOU,
|
|
MENU_RENICE,
|
|
MENU_SCHED,
|
|
MENU_DETAILS,
|
|
MENU_PARENT,
|
|
MENU_CHILD,
|
|
MENU_DYNASTY,
|
|
MENU_SIGTERM,
|
|
MENU_SIGHUP,
|
|
MENU_SIGINT,
|
|
MENU_SIGKILL,
|
|
MENU_OTHERS,
|
|
MENU_PROCS,
|
|
MENU_FIELDS,
|
|
MENU_CUSTOM,
|
|
MENU_PATH,
|
|
MENU_INFOBAR,
|
|
MENU_CTRLBAR,
|
|
MENU_CUMUL,
|
|
MENU_PREFS,
|
|
MENU_ADD_HIDDEN,
|
|
MENU_REMOVE_HIDDEN,
|
|
MENU_STATUS,
|
|
#ifdef MOSIX
|
|
POPUP_MIGRATE,
|
|
#endif
|
|
MENU_FIRST_COMMAND // must be last
|
|
};
|
|
|
|
public slots:
|
|
void start_screenshot();
|
|
void clicked_trayicon(QSystemTrayIcon::ActivationReason);
|
|
void clicked_trayicon();
|
|
void sig_term();
|
|
void sig_hup();
|
|
void sig_stop();
|
|
void sig_cont();
|
|
void sig_kill();
|
|
void signal_menu(QAction *);
|
|
void run_command(QAction *);
|
|
void about();
|
|
void license();
|
|
void menu_update();
|
|
void menu_toggle_path();
|
|
void menu_toggle_infobar();
|
|
void menu_toggle_ctrlbar();
|
|
void menu_toggle_statusbar();
|
|
void menu_toggle_cumul();
|
|
void menu_prefs();
|
|
void menu_renice();
|
|
void menu_sched();
|
|
void Action_Detail();
|
|
void menu_parent();
|
|
void menu_children();
|
|
void menu_dynasty();
|
|
void menu_custom();
|
|
void menu_remove_field();
|
|
void menu_edit_cmd();
|
|
void mig_menu(int id); // MOSIX only
|
|
void make_command_menu();
|
|
void view_menu(QAction *);
|
|
void save_quit();
|
|
void add_fields_menu(int id);
|
|
void add_fields_menu(QAction *act);
|
|
void tabChanged(int i);
|
|
|
|
void show_popup_menu(QPoint p);
|
|
void context_heading_menu(QPoint p, int col);
|
|
|
|
void update_menu_selection_status();
|
|
void field_added(int index);
|
|
void field_removed(int index);
|
|
void set_table_mode(bool treemode); // hmmm
|
|
|
|
void details_closed(Details *d);
|
|
void open_details(int row);
|
|
|
|
void config_change();
|
|
|
|
void update_timer();
|
|
void refresh();
|
|
void refresh_details();
|
|
void test_popup(const QUrl &link);
|
|
void update_menu_status();
|
|
|
|
protected:
|
|
// reimplementation of QWidget methods
|
|
virtual void timerEvent(QTimerEvent *);
|
|
virtual void closeEvent(QCloseEvent *);
|
|
virtual void moveEvent(QMoveEvent *event);
|
|
virtual void mouseMoveEvent(QMouseEvent *event);
|
|
virtual void hideEvent(QHideEvent *event);
|
|
virtual void resizeEvent(QResizeEvent *event);
|
|
virtual void paintEvent(QPaintEvent *event);
|
|
virtual void enterEvent(QEvent *event);
|
|
virtual void leaveEvent(QEvent *event);
|
|
virtual void showEvent(QShowEvent *event);
|
|
virtual void focusInEvent(QFocusEvent *event);
|
|
virtual void focusOutEvent(QFocusEvent *event);
|
|
virtual void keyPressEvent(QKeyEvent *event);
|
|
// bool event(QEvent *e);
|
|
void transfer_selection();
|
|
void adjust_popup_menu(QMenu *m, bool cont);
|
|
void adjust_popup_menu();
|
|
bool all_selected_stopped();
|
|
|
|
void locate_relatives(int Procinfo::*a, int Procinfo::*b);
|
|
QMenu *make_signal_popup_menu();
|
|
#ifdef MOSIX
|
|
QMenu *make_migrate_menu();
|
|
void migrate_selected(int sig);
|
|
#endif
|
|
void send_to_selected(int sig);
|
|
void sendsig(Procinfo *p, int sig);
|
|
void earlier_refresh();
|
|
bool read_settings();
|
|
|
|
bool load_settings();
|
|
|
|
void bar_visibility();
|
|
void set_default_icon();
|
|
void set_load_icon();
|
|
|
|
public:
|
|
#ifdef HTABLE2
|
|
Pstable2 *pstable; // test
|
|
#else
|
|
Pstable *pstable;
|
|
#endif
|
|
Procview *procview;
|
|
StatusBar *statusBar;
|
|
// Netable *netable;
|
|
QTextEdit *logbox;
|
|
void update_icon();
|
|
|
|
private:
|
|
QMenuBar *menubar;
|
|
QMenu *m_field; // Field Menu
|
|
QMenu *m_view; // Field Menu
|
|
QAction *am_view;
|
|
QMenu *m_command;
|
|
QMenu *m_options;
|
|
QMenu *m_popup;
|
|
QMenu *m_headpopup;
|
|
QMenu *m_fields;
|
|
QMenu *popupx; // testing
|
|
|
|
bool selection_items_enabled; // state of certain menu items (???)
|
|
|
|
Infobar2 *infobar; // tmp
|
|
ControlBar *ctrlbar;
|
|
FieldSelect *field_win;
|
|
Preferences *prefs_win;
|
|
CommandDialog *command_win;
|
|
|
|
QList<Details> details;
|
|
|
|
int update_period; // in mili second
|
|
static const int eternity = 0x7fffffff; // turns off automatic update
|
|
// the Linux kernel updates its load average counters every 5 seconds
|
|
// (kernel 2.0.29), so there is no point in reading it too often
|
|
static const int load_update_period = 4800; // in ms
|
|
int update_load_time; // time left to update load
|
|
|
|
// size of our icon
|
|
int icon_width;
|
|
int icon_height;
|
|
int timer_id;
|
|
|
|
QPixmap *default_icon;
|
|
bool default_icon_set; // true if default icon is current icon
|
|
int context_col; // where heading context menu was clicked
|
|
};
|
|
|
|
#endif // QPS_H
|