• 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>
13 ProgramSensor::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 
34 ProgramSensor::~ProgramSensor()
35 {}
36 
37 void ProgramSensor::receivedStdout(TDEProcess *, char *buffer, int len)
38 {
39  buffer[len] = 0;
40  sensorResult += codec->toUnicode( TQCString(buffer) );
41 }
42 
43 void 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 
84 void 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:31

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.8.13
This website is maintained by Timothy Pearson.