SVN commit 918970 by johnflux: Add a globally accessible pointer to the local process table. This allows us to access the process table from elsewhere. A ProcessTable.h [License: GPL (v2/3)] M +2 -3 SensorDisplayLib/ProcessController.cc M +1 -1 SensorDisplayLib/ProcessController.h M +1 -1 SensorDisplayLib/SensorDisplay.cc M +6 -16 WorkSheet.cc M +0 -4 WorkSheet.h M +7 -7 ksysguard.cc --- trunk/KDE/kdebase/workspace/ksysguard/gui/SensorDisplayLib/ProcessController.cc #918969:918970 @@ -36,8 +36,8 @@ #ifdef DO_MODELCHECK #include "modeltest.h" #endif -ProcessController::ProcessController(QWidget* parent, const QString &title, SharedSettings *workSheetSettings) - : KSGRD::SensorDisplay(parent, title, workSheetSettings) +ProcessController::ProcessController(QWidget* parent) + : KSGRD::SensorDisplay(parent, QString::null, NULL) { mProcessList = NULL; mProcesses = NULL; @@ -136,7 +136,6 @@ QStackedLayout *layout = new QStackedLayout(this); mProcessList = new KSysGuardProcessList(this, hostName); mProcessList->setContentsMargins(0,0,0,0); - kDebug() << "Number of Actions: " << mProcessList->actions().size(); addActions(mProcessList->actions()); layout->addWidget(mProcessList); --- trunk/KDE/kdebase/workspace/ksysguard/gui/SensorDisplayLib/ProcessController.h #918969:918970 @@ -52,7 +52,7 @@ Q_OBJECT public: - ProcessController(QWidget* parent, const QString& title, SharedSettings *workSheetSettings); + ProcessController(QWidget* parent); virtual ~ProcessController() { } /* Functions for SensorDisplay*/ --- trunk/KDE/kdebase/workspace/ksysguard/gui/SensorDisplayLib/SensorDisplay.cc #918969:918970 @@ -119,7 +119,7 @@ action->setData( 2 ); menuEmpty = false; } - if(!mSharedSettings->locked) { + if(mSharedSettings && !mSharedSettings->locked) { action = pm.addAction( i18n( "&Remove Display" ) ); action->setData( 3 ); menuEmpty = false; --- trunk/KDE/kdebase/workspace/ksysguard/gui/WorkSheet.cc #918969:918970 @@ -45,6 +45,7 @@ #include "LogFile.h" #include "MultiMeter.h" #include "ProcessController.h" +#include "ProcessTable.h" #include "SensorLogger.h" #include "WorkSheet.h" #include "WorkSheetSettings.h" @@ -55,7 +56,6 @@ mGridLayout = 0; mRows = mColumns = 0; mDisplayList = 0; - mLocalProcessController = NULL; setSizePolicy(QSizePolicy::Expanding,QSizePolicy::Expanding); setAcceptDrops( true ); } @@ -368,11 +368,10 @@ newDisplay = new SensorLogger( this, sensorDescr, &mSharedSettings ); } else if ( sensorType == "table" ) { - if(!mLocalProcessController && (hostName.isEmpty() || hostName == "localhost")) { - mLocalProcessController = new ProcessController( this, sensorDescr, &mSharedSettings); - newDisplay = mLocalProcessController; + if(!sLocalProcessController && (hostName.isEmpty() || hostName == "localhost")) { + newDisplay = sLocalProcessController; } else - newDisplay = new ProcessController( this, sensorDescr, &mSharedSettings); + newDisplay = new ProcessController( this); } else { kDebug(1215) << "Unknown sensor type: " << sensorType; @@ -544,11 +543,7 @@ else if ( classType == "SensorLogger" ) newDisplay = new SensorLogger( 0, i18n("Dummy"), &mSharedSettings ); else if ( classType == "ProcessController" ) { - if(!mLocalProcessController) { - kDebug() << "Found process controller"; - mLocalProcessController = new ProcessController( 0, i18n("Dummy"), &mSharedSettings); - newDisplay = mLocalProcessController; - } + newDisplay = new ProcessController(0); } else { kDebug(1215) << "Unknown class " << classType; return false; @@ -569,9 +564,7 @@ void WorkSheet::replaceDisplay( uint row, uint column, KSGRD::SensorDisplay* newDisplay ) { // remove the old display && sensor frame at this location - if ( mDisplayList[ row ][ column ] ) { - if(mDisplayList[ row ][ column ] == mLocalProcessController) - mLocalProcessController = NULL; + if ( mDisplayList[ row ][ column ] && mDisplayList[ row ][ column ] != sLocalProcessController) { if ( qstrcmp( mDisplayList[ row ][ column ]->parent()->metaObject()->className(), "SensorFrame" ) == 0 ) { delete mDisplayList[ row ][ column ]->parent(); // destroys the child (display) as well } else { @@ -605,9 +598,6 @@ if ( !display ) return; - if(display == mLocalProcessController) - mLocalProcessController = NULL; - for ( uint r = 0; r < mRows; ++r ) for ( uint c = 0; c < mColumns; ++c ) if ( mDisplayList[ r ][ c ] == display ) { --- trunk/KDE/kdebase/workspace/ksysguard/gui/WorkSheet.h #918969:918970 @@ -34,7 +34,6 @@ class QGridLayout; class QString; class QStringList; -class ProcessController; /** A WorkSheet contains the displays to visualize the sensor results. When @@ -77,7 +76,6 @@ uint rows, uint columns ); void settings(); - ProcessController *getLocalProcessController() const { return mLocalProcessController; } public Q_SLOTS: void showPopupMenu( KSGRD::SensorDisplay *display ); @@ -118,8 +116,6 @@ QString currentDisplayAsXML(); - ProcessController *mLocalProcessController; - uint mRows; uint mColumns; --- trunk/KDE/kdebase/workspace/ksysguard/gui/ksysguard.cc #918969:918970 @@ -61,10 +61,12 @@ #include "StyleEngine.h" #include "HostConnector.h" #include "ProcessController.h" +#include "ProcessTable.h" #include "ksysguard.h" +ProcessController *sLocalProcessController = NULL; //Comment out to stop ksysguard from forking. Good for debugging //#define FORK_KSYSGUARD @@ -95,6 +97,8 @@ connect( mWorkSpace, SIGNAL( currentChanged( int ) ), SLOT( currentTabChanged( int ) ) ); + sLocalProcessController = new ProcessController( this); + /* Create the status bar. It displays some information about the * number of processes and the memory consumption of the local * host. */ @@ -391,13 +395,9 @@ mWorkSpace->readProperties( cfg ); QList workSheets = mWorkSpace->getWorkSheets(); - ProcessController *processController = NULL; - foreach(WorkSheet *sheet, workSheets) { - processController = sheet->getLocalProcessController(); - if(processController != NULL) { - for(int i = 0; i < processController->actions().size(); i++) { - actionCollection()->addAction("processAction" + QString::number(i), processController->actions().at(i)); - } + if(sLocalProcessController != NULL) { + for(int i = 0; i < sLocalProcessController->actions().size(); i++) { + actionCollection()->addAction("processAction" + QString::number(i), sLocalProcessController->actions().at(i)); } }