| /* |
| 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; |
| } |
| |