--- a/OSProcessMonitor.st Wed Sep 11 17:12:20 2019 +0200
+++ b/OSProcessMonitor.st Wed Sep 11 19:39:28 2019 +0200
@@ -1,3 +1,5 @@
+"{ Encoding: utf8 }"
+
"
COPYRIGHT (c) 2019 by Claus Gittinger
All Rights Reserved
@@ -14,7 +16,7 @@
"{ NameSpace: Smalltalk }"
SystemStatusMonitor subclass:#OSProcessMonitor
- instanceVariableNames:'processes showTime'
+ instanceVariableNames:'processes showTime filterLiveProcessesOnlyHolder'
classVariableNames:''
poolDictionaries:''
category:'Monitors-ST/X'
@@ -66,6 +68,34 @@
!OSProcessMonitor class methodsFor:'menu specs'!
+filterMenu
+ "This resource specification was automatically generated
+ by the MenuEditor of ST/X."
+
+ "Do not manually edit this!! If it is corrupted,
+ the MenuEditor may not be able to read the specification."
+
+
+ "
+ MenuEditor new openOnClass:ExternalStreamMonitor andSelector:#filterMenu
+ (Menu new fromLiteralArrayEncoding:(ExternalStreamMonitor filterMenu)) startUp
+ "
+
+ <resource: #menu>
+
+ ^
+ #(Menu
+ (
+ (MenuItem
+ label: 'Live Processes Only'
+ indication: filterLiveProcessesOnlyHolder
+ )
+ )
+ nil
+ nil
+ )
+!
+
mainMenu
"This resource specification was automatically generated
by the MenuEditor of ST/X."
@@ -91,6 +121,10 @@
label: 'View'
submenuChannel: viewMenu
)
+ (MenuItem
+ label: 'Filter'
+ submenuChannel: filterMenu
+ )
(MenuItem
label: 'Operations'
submenuChannel: operationsMenu
@@ -137,6 +171,16 @@
)
! !
+!OSProcessMonitor methodsFor:'aspects'!
+
+filterLiveProcessesOnlyHolder
+ filterLiveProcessesOnlyHolder isNil ifTrue:[
+ filterLiveProcessesOnlyHolder := true asValue.
+ filterLiveProcessesOnlyHolder onChangeSend:#filterHolderChanged to:self.
+ ].
+ ^ filterLiveProcessesOnlyHolder
+! !
+
!OSProcessMonitor methodsFor:'drawing'!
titleLine
@@ -158,6 +202,9 @@
shown ifTrue:[
newList := OSProcess allSubInstances select:[:p | p pid notNil].
+ self filterLiveProcessesOnlyHolder value ifTrue:[
+ newList := newList select:[:p | p isAlive].
+ ].
newList sortBySelector:#pid.
newList ~= processes ifTrue:[
@@ -345,6 +392,10 @@
"Modified (comment): / 07-04-2017 / 14:28:01 / cg"
!
+filterHolderChanged
+ self sensor pushUserEvent:#updateList for:self
+!
+
inspectProcess
"open an inspector on the selected process(es)"