• Skip to content
  • Skip to link menu
Trinity API Reference
  • Trinity API Reference
  • superkaramba
 

superkaramba

  • superkaramba
  • src
programsensor.cpp
1/***************************************************************************
2 * Copyright (C) 2003 by Hans Karlsson *
3 * karlsson.h@home.se *
4 * *
5 * This program is free software; you can redistribute it and/or modify *
6 * it under the terms of the GNU General Public License as published by *
7 * the Free Software Foundation; either version 2 of the License, or *
8 * (at your option) any later version. *
9 ***************************************************************************/
10#include "programsensor.h"
11
12#include <tqstringlist.h>
13ProgramSensor::ProgramSensor(const TQString &progName, int interval, TQString encoding )
14 : Sensor( interval )
15{
16 if( !encoding.isEmpty())
17 {
18 codec = TQTextCodec::codecForName( encoding.ascii() );
19 if ( codec == 0)
20 codec = TQTextCodec::codecForLocale();
21 }
22 else
23 codec = TQTextCodec::codecForLocale();
24
25
26 programName = progName;
27 //update();
28 connect(&ksp, TQ_SIGNAL(receivedStdout(TDEProcess *, char *, int )),
29 this,TQ_SLOT(receivedStdout(TDEProcess *, char *, int )));
30 connect(&ksp, TQ_SIGNAL(processExited(TDEProcess *)),
31 this,TQ_SLOT(processExited( TDEProcess * )));
32}
33
34ProgramSensor::~ProgramSensor()
35{}
36
37void ProgramSensor::receivedStdout(TDEProcess *, char *buffer, int len)
38{
39 buffer[len] = 0;
40 sensorResult += codec->toUnicode( TQCString(buffer) );
41}
42
43void ProgramSensor::processExited(TDEProcess *)
44{
45 int lineNbr;
46 SensorParams *sp;
47 Meter *meter;
48 TQValueVector<TQString> lines;
49 TQStringList stringList = TQStringList::split('\n',sensorResult,true);
50 TQStringList::ConstIterator end( stringList.end() );
51 for ( TQStringList::ConstIterator it = stringList.begin(); it != end; ++it )
52 {
53 lines.push_back(*it);
54 }
55
56 int count = (int) lines.size();
57 TQObjectListIt it( *objList );
58 while (it != 0)
59 {
60 sp = (SensorParams*)(*it);
61 meter = sp->getMeter();
62 if( meter != 0)
63 {
64 lineNbr = (sp->getParam("LINE")).toInt();
65 if ( lineNbr >= 1 && lineNbr <= (int) count )
66 {
67 meter->setValue(lines[lineNbr-1]);
68 }
69 if ( -lineNbr >= 1 && -lineNbr <= (int) count )
70 {
71 meter->setValue(lines[count+lineNbr]);
72 }
73 if (lineNbr == 0)
74 {
75 meter->setValue(sensorResult);
76 }
77 }
78 ++it;
79 }
80
81 sensorResult = "";
82}
83
84void ProgramSensor::update()
85{
86 ksp.clearArguments();
87 ksp << programName;
88
89
90 ksp.start( TDEProcIO::NotifyOnExit,TDEProcIO::Stdout);
91}
92
93#include "programsensor.moc"
SensorParams
Hans Karlsson.
Definition: sensorparams.h:32

superkaramba

Skip menu "superkaramba"
  • Main Page
  • Alphabetical List
  • Class List
  • File List
  • Class Members

superkaramba

Skip menu "superkaramba"
  • kcalc
  •   knumber
  • superkaramba
Generated for superkaramba by doxygen 1.9.4
This website is maintained by Timothy Pearson.