Thread: [Compbench-devel] CompBenchmarks++/Qt-4/Status Status-Console.cpp, NONE, 1.1 Status-Console.h, NONE
Brought to you by:
xfred
From: Frederic T. <xf...@us...> - 2007-09-11 20:17:49
|
Update of /cvsroot/compbench/CompBenchmarks++/Qt-4/Status In directory sc8-pr-cvs4.sourceforge.net:/tmp/cvs-serv21359 Modified Files: Status.cpp Status.h Added Files: Status-Console.cpp Status-Console.h Log Message: CBM::UIMsg handling revisited. --- NEW FILE: Status-Console.h --- #ifndef H_CQT_STATUSCONSOLE #define H_CQT_STATUSCONSOLE #include <UI/UI-Msg.h> #include <UI/UI.h> #include <QGroupBox> #include <QPixmap> #include <QLabel> #include <QVBoxLayout> #include <QProgressBar> // Q_DECLARE_METATYPE(CBM::UIMsg) namespace CQT { class StatusConsole : public QGroupBox, public CBM::UI { private: Q_OBJECT protected: // virtual class StatusAction *ActionObject(CBM::UIMsg *msg); QVBoxLayout *lay; virtual std::string MsgLabel(CBM::UIMsg *_msg); virtual class StatusAction *MsgStatus(CBM::UIMsg *_msg); signals: virtual void sigMessageShow(CBM::UIMsg *msg); virtual void sigMessageProgress(CBM::UIMsg *msg); virtual void sigMessageDone(CBM::UIMsg *msg); protected slots: virtual void uiMessageShow(CBM::UIMsg *msg); virtual void uiMessageProgress(CBM::UIMsg *msg); virtual void uiMessageDone(CBM::UIMsg *msg); public: StatusConsole(QWidget *parent = 0); virtual void Display(CBM::UIMsg *_msg); virtual void DisplayProgressUpdate(CBM::UIMsg *_msg); virtual void DisplayDone(CBM::UIMsg *_msg); virtual ~StatusConsole(); }; } #endif Index: Status.h =================================================================== RCS file: /cvsroot/compbench/CompBenchmarks++/Qt-4/Status/Status.h,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** Status.h 29 Aug 2007 20:34:06 -0000 1.3 --- Status.h 11 Sep 2007 20:17:40 -0000 1.4 *************** *** 4,7 **** --- 4,8 ---- #include <UI/UI.h> #include <UI/UI-Msg.h> + #include <main.h> #include <QWidget> *************** *** 16,61 **** namespace CQT { - - class StatusWidget : public QWidget, - public CBM::UI - { - private: - Q_OBJECT - QLabel *actionLabel; - QProgressBar *progressBar; - protected: - QGridLayout *layout; - - signals: - virtual void sigMessageShow(CBM::UIMsg *msg); - virtual void sigMessageProgress(CBM::UIMsg *msg); - virtual void sigMessageDone(CBM::UIMsg *msg); - - protected slots: - virtual void uiMessageShow(CBM::UIMsg *msg); - virtual void uiMessageProgress(CBM::UIMsg *msg); - virtual void uiMessageDone(CBM::UIMsg *msg); - - public: - StatusWidget(QWidget *parent = 0); - - public: - virtual void Display(CBM::UIMsg *_msg); - virtual void DisplayProgressUpdate(CBM::UIMsg *_msg); - virtual void DisplayDone(CBM::UIMsg *_msg); - - public: - virtual ~StatusWidget(); - }; - class StatusAction : public QWidget { private: Q_OBJECT - public: - typedef enum { Running, - Fatal, - OK, - KO } LedColor; private: QPixmap pixmapOK; --- 17,24 ---- *************** *** 66,85 **** QLabel *icon; QLabel *label; QProgressBar *progressBar; CBM::UIMsg *msg; ! QPixmap *pixmapObject(LedColor _color); ! ! public: ! StatusAction(CBM::UIMsg *_msg, ! QWidget *_parent = 0); public slots: ! virtual void changeColor(LedColor _color); public: virtual ~StatusAction(); --- 29,50 ---- QLabel *icon; QLabel *label; + QProgressBar *progressBar; CBM::UIMsg *msg; ! virtual void changeColor(LedColor _color); public: ! StatusAction(CBM::UIMsg *_msg, ! std::string _label, ! QWidget *_parent = 0); public slots: ! virtual void changeStatus(CBM::UIMsg::Status _status); ! virtual void updateProgress(int _p); public: + virtual CBM::UIMsg *Message(void); virtual ~StatusAction(); Index: Status.cpp =================================================================== RCS file: /cvsroot/compbench/CompBenchmarks++/Qt-4/Status/Status.cpp,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** Status.cpp 29 Aug 2007 20:34:06 -0000 1.3 --- Status.cpp 11 Sep 2007 20:17:40 -0000 1.4 *************** *** 9,76 **** using namespace CQT; - StatusWidget::StatusWidget(QWidget *parent) - : QWidget(parent), - CBM::UI() - { - layout = new QGridLayout; - - actionLabel=new QLabel(tr("")); - layout->addWidget(actionLabel, 0, 0, 1, 2); - - progressBar=new QProgressBar(); - progressBar->setRange(0,100); - - layout->addWidget(progressBar, 1, 0, 1, 2); - setLayout(layout); - setWindowTitle(tr("Progress")); - // setWindowModality(Qt::ApplicationModal); - - progressBar->setRange(0,100); - connect(this, SIGNAL(sigMessageShow(CBM::UIMsg*)), - this, SLOT(uiMessageShow(CBM::UIMsg*)), - Qt::QueuedConnection); - - connect(this, SIGNAL(sigMessageProgress(CBM::UIMsg*)), - this, SLOT(uiMessageProgress(CBM::UIMsg*)), - Qt::QueuedConnection); - - connect(this, SIGNAL(sigMessageDone(CBM::UIMsg*)), - this, SLOT(uiMessageDone(CBM::UIMsg*)), - Qt::QueuedConnection); - } - - void StatusWidget::uiMessageShow(CBM::UIMsg *msg) - { - } - - void StatusWidget::uiMessageProgress(CBM::UIMsg *msg) - { - } - - void StatusWidget::uiMessageDone(CBM::UIMsg *msg) - { - } - - void StatusWidget::Display(CBM::UIMsg *_msg) - { - emit sigMessageShow(_msg); - } - - void StatusWidget::DisplayProgressUpdate(CBM::UIMsg *_msg) - { - emit sigMessageProgress(_msg); - } - - void StatusWidget::DisplayDone(CBM::UIMsg *_msg) - { - emit sigMessageDone(_msg); - } - - StatusWidget::~StatusWidget() - { - } - StatusAction::StatusAction(CBM::UIMsg *_msg, ! QWidget *_parent) : QWidget(_parent) { --- 9,15 ---- using namespace CQT; StatusAction::StatusAction(CBM::UIMsg *_msg, ! std::string _label, ! QWidget *_parent) : QWidget(_parent) { *************** *** 78,95 **** msg=_msg; - QIcon I1(":/icons/success.png"); - pixmapOK=I1.pixmap(12); - - QIcon I2(":/icons/error.png"); - pixmapKO=I2.pixmap(12); - - QIcon I3(":/icons/arrow-right.png"); - pixmapRunning=I3.pixmap(12); icon=new QLabel(); ! icon->setPixmap(*pixmapObject(Running)); lay->addWidget(icon); icon->setAlignment(Qt::AlignLeft | Qt::AlignVCenter); if (_msg->getFlags()==CBM::UIMsg::Progress) { progressBar=new QProgressBar(); --- 17,31 ---- msg=_msg; + lay->setAlignment(Qt::AlignLeft); icon=new QLabel(); ! icon->setPixmap(*App->pixmapObject(Running)); lay->addWidget(icon); icon->setAlignment(Qt::AlignLeft | Qt::AlignVCenter); + label=new QLabel(_label.c_str()); + lay->addWidget(label); + label->setAlignment(Qt::AlignLeft | Qt::AlignVCenter); + if (_msg->getFlags()==CBM::UIMsg::Progress) { progressBar=new QProgressBar(); *************** *** 97,103 **** lay->addWidget(progressBar); } - label=new QLabel("test...!!!"); - lay->addWidget(label); - label->setAlignment(Qt::AlignLeft | Qt::AlignVCenter); lay->setMargin(2); --- 33,36 ---- *************** *** 105,127 **** } ! QPixmap *StatusAction::pixmapObject(LedColor _color) { ! switch(_color) { ! case Running: ! return(&pixmapRunning); ! break; ! case OK: ! return(&pixmapOK); ! break; ! case KO: ! return(&pixmapKO); ! break; } ! return(0); } ! void StatusAction::changeColor(LedColor _color) { ! icon->setPixmap(*pixmapObject(_color)); } --- 38,69 ---- } ! void StatusAction::changeColor(LedColor _color) { ! icon->setPixmap(*App->pixmapObject(_color)); ! } ! ! void StatusAction::changeStatus(CBM::UIMsg::Status _status) ! { ! LedColor ncolor = Fatal; ! ! switch(_status) { ! case CBM::UIMsg::OK: ! ncolor=OK; ! break; ! case CBM::UIMsg::KO: ! ncolor=KO; ! break; } ! changeColor(ncolor); } ! void StatusAction::updateProgress(int _p) { ! progressBar->setValue(_p); ! } ! ! CBM::UIMsg *StatusAction::Message(void) ! { ! return(msg); } --- NEW FILE: Status-Console.cpp --- #include <Status/Status-Console.h> #include <Status/Status.h> #include <QHBoxLayout> using namespace CQT; StatusConsole::StatusConsole(QWidget *parent) : QGroupBox(parent), UI() { setTitle(tr("Message window")); lay=new QVBoxLayout(); setLayout(lay); connect(this, SIGNAL(sigMessageShow(CBM::UIMsg*)), this, SLOT(uiMessageShow(CBM::UIMsg*)), Qt::QueuedConnection); connect(this, SIGNAL(sigMessageProgress(CBM::UIMsg*)), this, SLOT(uiMessageProgress(CBM::UIMsg*)), Qt::QueuedConnection); connect(this, SIGNAL(sigMessageDone(CBM::UIMsg*)), this, SLOT(uiMessageDone(CBM::UIMsg*)), Qt::QueuedConnection); } StatusAction *StatusConsole::MsgStatus(CBM::UIMsg *_msg) { QLayoutItem *child; StatusAction *r; int i, n = lay->count(); for(i=0; i<n; i++) { child=lay->itemAt(i); r=dynamic_cast<StatusAction*>(child->widget()); if (r) { if (r->Message()==_msg) return(r); } } return(0); } std::string StatusConsole::MsgLabel(CBM::UIMsg *_msg) { std::string r; CBM::UIMsg::ActionType at; at=action(_msg); if (at==CBM::UIMsg::ShellCommand) return(""); switch(at) { case CBM::UIMsg::ShellCommand: r+="Executing : '"; r+=objectField(_msg, "name"); r+="'"; break; case CBM::UIMsg::FatalError: r+="FATAL : "; r+=objectField(_msg, "name"); break; case CBM::UIMsg::BenchmarkBench: r+="Benchmarking result(s)"; break; case CBM::UIMsg::PackageUninstall: r+="Uninstalling "; r+=objectField(_msg, "name"); break; case CBM::UIMsg::PackageInstall: r+="Installing "; r+=objectField(_msg, "name"); break; case CBM::UIMsg::PackageDownload: r+="Downloading "; r+=objectField(_msg, "name"); break; case CBM::UIMsg::PackageExtract: r+="Extracting"; break; case CBM::UIMsg::PackageConfigure: r+="Configuring"; break; case CBM::UIMsg::PackageMake: r+="Building"; break; case CBM::UIMsg::PackageClean: r+="Cleaning "; r+=objectField(_msg, "name"); break; case CBM::UIMsg::PackagePreconfigure: r+="Pre-configuring"; break; case CBM::UIMsg::PackageFetch: r+="Fetching "; r+=objectField(_msg, "name"); break; case CBM::UIMsg::PackageTest: r+="Testing "; r+=objectField(_msg, "name"); break; case CBM::UIMsg::PackagePatch: r+="Patching "; r+=objectField(_msg, "name"); break; case CBM::UIMsg::Checksum: r+="Checksuming "; r+=objectField(_msg, "name"); break; case CBM::UIMsg::Group: r+=objectField(_msg, "name"); break; case CBM::UIMsg::PlanRegister: r+="Registering plan "; r+=objectField(_msg, "file"); break; case CBM::UIMsg::PlanRestore: r+="Restoring plan "; r+=objectField(_msg, "file"); break; case CBM::UIMsg::PlanUnregister: r+="Unregistering plan "; r+=objectField(_msg, "name"); break; case CBM::UIMsg::PlanBatchRegister: r+="Registering batch "; r+=objectField(_msg, "name"); break; case CBM::UIMsg::PlanBatchUnregister: r+="Unregistering batch "; r+=objectField(_msg, "name"); break; case CBM::UIMsg::PlanCompilerRegister: r+="Registering compiler "; r+=objectField(_msg, "name"); break; case CBM::UIMsg::PlanCompilerUnregister: r+="Unregistering compiler "; r+=objectField(_msg, "name"); break; case CBM::UIMsg::PlanOptionsetRegister: r+="Registering option set "; r+=objectField(_msg, "name"); break; case CBM::UIMsg::PlanOptionsetUnregister: r+="Unregistering option set "; r+=objectField(_msg, "name"); break; case CBM::UIMsg::PlanOptionsRegister: r+="Registering options "; r+=objectField(_msg, "name"); break; case CBM::UIMsg::PlanOptionsUnregister: r+="Unregistering options "; r+=objectField(_msg, "name"); break; case CBM::UIMsg::PlanOptionRegister: r+="Registering option "; r+=objectField(_msg, "name"); break; case CBM::UIMsg::PlanOptionUnregister: r+="Unregistering option "; r+=objectField(_msg, "name"); break; case CBM::UIMsg::PlanBenchmarkRegister: r+="Registering benchmark "; r+=objectField(_msg, "name"); break; case CBM::UIMsg::PlanBenchmarkUnregister: r+="Unregistering benchmark "; r+=objectField(_msg, "name"); break; case CBM::UIMsg::PlanRun: r+="Running benchmark plan "; // r+=objectField(_msg, "name"); break; default: r+="Display::DEFAULT/"; r+=_msg->str(); r+="\n"; break; } return(r); } void StatusConsole::uiMessageShow(CBM::UIMsg *msg) { std::string label = MsgLabel(msg); if (label!="") { StatusAction *widget = new StatusAction(msg, label, this); widget->setContentsMargins(CBM::UI::depth(msg)*16, 0, 0, 0); lay->addWidget(widget); } } void StatusConsole::uiMessageProgress(CBM::UIMsg *msg) { StatusAction *act; if (action(msg)==CBM::UIMsg::ShellCommand) return; act=MsgStatus(msg); if (act) act->updateProgress((int)progress(msg)); } void StatusConsole::uiMessageDone(CBM::UIMsg *msg) { CBM::XMLNode *R; CBM::XMLNode *N; CBM::XMLAttribute *A; StatusAction *act; CBM::UIMsg::Status status; int i, n; if (action(msg)==CBM::UIMsg::ShellCommand) return; R=msg->getNode("output"); n=R->nodeNumber(); // std::cout << _msg->str() << std::endl; for(i=0;i<n;i++) { N=R->getNode(i); if (N->Name()!="text") continue; A=N->getAttribute("status"); if (!A) continue; status=(CBM::UIMsg::Status)atoi(A->Value().c_str()); act=MsgStatus(msg); if (act) act->changeStatus(status); } } void StatusConsole::Display(CBM::UIMsg *_msg) { emit sigMessageShow(_msg); } void StatusConsole::DisplayProgressUpdate(CBM::UIMsg *_msg) { emit sigMessageProgress(_msg); } void StatusConsole::DisplayDone(CBM::UIMsg *_msg) { emit sigMessageDone(_msg); } StatusConsole::~StatusConsole() { } |