2011-12-26 21:35:57 +00:00
/*
htop - DisplayOptionsPanel . c
( C ) 2004 - 2011 Hisham H . Muhammad
2020-10-05 07:51:32 +00:00
Released under the GNU GPLv2 , see the COPYING file
2011-12-26 21:35:57 +00:00
in the source distribution for its full text .
*/
2006-03-04 18:16:49 +00:00
2020-09-19 11:55:23 +00:00
# include "config.h" // IWYU pragma: keep
2006-05-30 13:47:28 +00:00
# include "DisplayOptionsPanel.h"
2006-03-04 18:16:49 +00:00
2020-09-19 11:55:23 +00:00
# include <stdbool.h>
2011-12-26 21:35:57 +00:00
# include <stdlib.h>
2006-03-04 18:16:49 +00:00
2020-09-19 18:22:34 +00:00
# include "CheckItem.h"
# include "CRT.h"
2020-09-19 11:55:23 +00:00
# include "FunctionBar.h"
# include "Header.h"
# include "Object.h"
# include "ProvideCurses.h"
2020-10-14 18:21:09 +00:00
# include "XUtils.h"
2020-09-19 18:22:34 +00:00
2006-03-04 18:16:49 +00:00
2017-07-23 02:41:19 +00:00
static const char * const DisplayOptionsFunctions [ ] = { " " , " " , " " , " " , " " , " " , " " , " " , " " , " Done " , NULL } ;
2015-03-23 18:26:56 +00:00
2008-03-09 08:58:38 +00:00
static void DisplayOptionsPanel_delete ( Object * object ) {
2006-05-30 13:47:28 +00:00
Panel * super = ( Panel * ) object ;
DisplayOptionsPanel * this = ( DisplayOptionsPanel * ) object ;
Panel_done ( super ) ;
2006-03-04 18:16:49 +00:00
free ( this ) ;
}
2008-03-09 08:58:38 +00:00
static HandlerResult DisplayOptionsPanel_eventHandler ( Panel * super , int ch ) {
2006-05-30 13:47:28 +00:00
DisplayOptionsPanel * this = ( DisplayOptionsPanel * ) super ;
2019-07-12 20:01:29 +00:00
2006-03-04 18:16:49 +00:00
HandlerResult result = IGNORED ;
2006-05-30 13:47:28 +00:00
CheckItem * selected = ( CheckItem * ) Panel_getSelected ( super ) ;
2006-03-04 18:16:49 +00:00
switch ( ch ) {
case 0x0a :
case 0x0d :
case KEY_ENTER :
2008-05-07 23:01:45 +00:00
case KEY_MOUSE :
2015-08-27 21:42:35 +00:00
case KEY_RECLICK :
2006-03-04 18:16:49 +00:00
case ' ' :
2020-11-21 15:07:19 +00:00
CheckItem_set ( selected , ! CheckItem_get ( selected ) ) ;
2006-03-04 18:16:49 +00:00
result = HANDLED ;
}
if ( result = = HANDLED ) {
this - > settings - > changed = true ;
2020-09-23 12:15:51 +00:00
Header * header = this - > scr - > header ;
Header_calculateHeight ( header ) ;
Header_reinit ( header ) ;
2006-03-04 18:16:49 +00:00
Header_draw ( header ) ;
ScreenManager_resize ( this - > scr , this - > scr - > x1 , header - > height , this - > scr - > x2 , this - > scr - > y2 ) ;
}
return result ;
}
2020-10-05 11:19:50 +00:00
const PanelClass DisplayOptionsPanel_class = {
2012-12-05 15:12:20 +00:00
. super = {
. extends = Class ( Panel ) ,
. delete = DisplayOptionsPanel_delete
} ,
. eventHandler = DisplayOptionsPanel_eventHandler
} ;
2008-03-09 08:58:38 +00:00
DisplayOptionsPanel * DisplayOptionsPanel_new ( Settings * settings , ScreenManager * scr ) {
2012-12-05 15:12:20 +00:00
DisplayOptionsPanel * this = AllocThis ( DisplayOptionsPanel ) ;
2008-03-09 08:58:38 +00:00
Panel * super = ( Panel * ) this ;
2015-03-23 18:26:56 +00:00
FunctionBar * fuBar = FunctionBar_new ( DisplayOptionsFunctions , NULL , NULL ) ;
Panel_init ( super , 1 , 1 , 1 , 1 , Class ( CheckItem ) , true , fuBar ) ;
2008-03-09 08:58:38 +00:00
this - > settings = settings ;
this - > scr = scr ;
Panel_setHeader ( super , " Display options " ) ;
2016-02-02 14:53:02 +00:00
Panel_add ( super , ( Object * ) CheckItem_newByRef ( xStrdup ( " Tree view " ) , & ( settings - > treeView ) ) ) ;
Panel_add ( super , ( Object * ) CheckItem_newByRef ( xStrdup ( " Shadow other users' processes " ) , & ( settings - > shadowOtherUsers ) ) ) ;
Panel_add ( super , ( Object * ) CheckItem_newByRef ( xStrdup ( " Hide kernel threads " ) , & ( settings - > hideKernelThreads ) ) ) ;
2016-02-02 15:39:08 +00:00
Panel_add ( super , ( Object * ) CheckItem_newByRef ( xStrdup ( " Hide userland process threads " ) , & ( settings - > hideUserlandThreads ) ) ) ;
2016-02-02 14:53:02 +00:00
Panel_add ( super , ( Object * ) CheckItem_newByRef ( xStrdup ( " Display threads in a different color " ) , & ( settings - > highlightThreads ) ) ) ;
Panel_add ( super , ( Object * ) CheckItem_newByRef ( xStrdup ( " Show custom thread names " ) , & ( settings - > showThreadNames ) ) ) ;
Panel_add ( super , ( Object * ) CheckItem_newByRef ( xStrdup ( " Show program path " ) , & ( settings - > showProgramPath ) ) ) ;
Panel_add ( super , ( Object * ) CheckItem_newByRef ( xStrdup ( " Highlight program \" basename \" " ) , & ( settings - > highlightBaseName ) ) ) ;
2020-10-17 10:54:45 +00:00
Panel_add ( super , ( Object * ) CheckItem_newByRef ( xStrdup ( " Merge exe, comm and cmdline in Command " ) , & ( settings - > showMergedCommand ) ) ) ;
2020-11-21 11:21:20 +00:00
Panel_add ( super , ( Object * ) CheckItem_newByRef ( xStrdup ( " - Try to find comm in cmdline (when Command is merged) " ) , & ( settings - > findCommInCmdline ) ) ) ;
Panel_add ( super , ( Object * ) CheckItem_newByRef ( xStrdup ( " - Try to strip exe from cmdline (when Command is merged) " ) , & ( settings - > stripExeFromCmdline ) ) ) ;
2016-02-02 14:53:02 +00:00
Panel_add ( super , ( Object * ) CheckItem_newByRef ( xStrdup ( " Highlight large numbers in memory counters " ) , & ( settings - > highlightMegabytes ) ) ) ;
Panel_add ( super , ( Object * ) CheckItem_newByRef ( xStrdup ( " Leave a margin around header " ) , & ( settings - > headerMargin ) ) ) ;
Panel_add ( super , ( Object * ) CheckItem_newByRef ( xStrdup ( " Detailed CPU time (System/IO-Wait/Hard-IRQ/Soft-IRQ/Steal/Guest) " ) , & ( settings - > detailedCPUTime ) ) ) ;
2019-12-19 22:30:45 +00:00
Panel_add ( super , ( Object * ) CheckItem_newByRef ( xStrdup ( " Count CPUs from 1 instead of 0 " ) , & ( settings - > countCPUsFromOne ) ) ) ;
2016-02-02 14:53:02 +00:00
Panel_add ( super , ( Object * ) CheckItem_newByRef ( xStrdup ( " Update process names on every refresh " ) , & ( settings - > updateProcessNames ) ) ) ;
Panel_add ( super , ( Object * ) CheckItem_newByRef ( xStrdup ( " Add guest time in CPU meter percentage " ) , & ( settings - > accountGuestInCPUMeter ) ) ) ;
2019-08-10 18:20:21 +00:00
Panel_add ( super , ( Object * ) CheckItem_newByRef ( xStrdup ( " Also show CPU percentage numerically " ) , & ( settings - > showCPUUsage ) ) ) ;
2019-08-10 04:34:48 +00:00
Panel_add ( super , ( Object * ) CheckItem_newByRef ( xStrdup ( " Also show CPU frequency " ) , & ( settings - > showCPUFrequency ) ) ) ;
2020-09-10 17:56:33 +00:00
# ifdef HAVE_LIBSENSORS
Panel_add ( super , ( Object * ) CheckItem_newByRef ( xStrdup ( " Also show CPU temperature " ) , & ( settings - > showCPUTemperature ) ) ) ;
2020-11-25 11:44:01 +00:00
Panel_add ( super , ( Object * ) CheckItem_newByRef ( xStrdup ( " - Show temperature in degree Fahrenheit instead of Celsius " ) , & ( settings - > degreeFahrenheit ) ) ) ;
2020-09-10 17:56:33 +00:00
# endif
2019-07-12 20:01:29 +00:00
Panel_add ( super , ( Object * ) CheckItem_newByRef ( xStrdup ( " Enable the mouse " ) , & ( settings - > enableMouse ) ) ) ;
2020-10-31 01:56:16 +00:00
Panel_add ( super , ( Object * ) CheckItem_newByRef ( xStrdup ( " Highlight new and old processes " ) , & ( settings - > highlightChanges ) ) ) ;
2020-08-26 00:15:00 +00:00
# ifdef HAVE_LIBHWLOC
Panel_add ( super , ( Object * ) CheckItem_newByRef ( xStrdup ( " Show topology when selecting affinity by default " ) , & ( settings - > topologyAffinity ) ) ) ;
# endif
2008-03-09 08:58:38 +00:00
return this ;
}