mirror of https://github.com/xzeldon/htop.git
60 lines
1.3 KiB
C
60 lines
1.3 KiB
C
/*
|
|
htop - Action.c
|
|
(C) 2014 Hisham H. Muhammad
|
|
Released under the GNU GPL, see the COPYING file
|
|
in the source distribution for its full text.
|
|
*/
|
|
|
|
#include "Process.h"
|
|
#include "Panel.h"
|
|
#include "Action.h"
|
|
|
|
/*{
|
|
|
|
#include "IncSet.h"
|
|
#include "Settings.h"
|
|
#include "UsersTable.h"
|
|
|
|
typedef enum {
|
|
HTOP_OK = 0x00,
|
|
HTOP_REFRESH = 0x01,
|
|
HTOP_RECALCULATE = 0x03, // implies HTOP_REFRESH
|
|
HTOP_SAVE_SETTINGS = 0x04,
|
|
HTOP_KEEP_FOLLOWING = 0x08,
|
|
HTOP_QUIT = 0x10,
|
|
HTOP_REDRAW_BAR = 0x20,
|
|
HTOP_UPDATE_PANELHDR = 0x41, // implies HTOP_REFRESH
|
|
} Htop_Reaction;
|
|
|
|
typedef Htop_Reaction (*Htop_Action)();
|
|
|
|
typedef struct State_ {
|
|
IncSet* inc;
|
|
Settings* settings;
|
|
UsersTable* ut;
|
|
} State;
|
|
|
|
typedef bool(*Action_ForeachProcessFn)(Process*, size_t);
|
|
|
|
}*/
|
|
|
|
bool Action_foreachProcess(Panel* panel, Action_ForeachProcessFn fn, int arg, bool* wasAnyTagged) {
|
|
bool ok = true;
|
|
bool anyTagged = false;
|
|
for (int i = 0; i < Panel_size(panel); i++) {
|
|
Process* p = (Process*) Panel_get(panel, i);
|
|
if (p->tag) {
|
|
ok = fn(p, arg) && ok;
|
|
anyTagged = true;
|
|
}
|
|
}
|
|
if (!anyTagged) {
|
|
Process* p = (Process*) Panel_getSelected(panel);
|
|
if (p) ok = fn(p, arg) && ok;
|
|
}
|
|
if (wasAnyTagged)
|
|
*wasAnyTagged = anyTagged;
|
|
return ok;
|
|
}
|
|
|