diff options
-rw-r--r-- | client/pracro.cc | 54 | ||||
-rw-r--r-- | client/pracro.ini | 1 | ||||
-rw-r--r-- | client/viewer.cc | 229 | ||||
-rw-r--r-- | client/viewer.h | 88 |
4 files changed, 12 insertions, 360 deletions
diff --git a/client/pracro.cc b/client/pracro.cc index 2a6a109..b4d06d8 100644 --- a/client/pracro.cc +++ b/client/pracro.cc @@ -61,21 +61,20 @@ QFont *fixedfont = NULL; static void print_usage() { - printf("Usage: pracro -m MACRO -c CPR -U USER\n"); + printf("Usage: pracro [params]\n"); printf("Executes the requested Pracro MACRO using supplied CPR and USER.\n"); printf("\n"); printf(" -h, --help Displays this help text.\n"); printf(" -t, --template TEMPLATE Requests template TEMPLATE from the Pracro \n" " Server, defaults to \""TEMPLATE_DEFAULT"\".\n"); - printf(" -C, --cpr CPR Defines the cpr for use with the macro,\n" + printf(" -C --course COURSE Lists templates in COURSE.\n"); + printf(" -P, --patient PATIENTID Defines the patientid for use with the macro,\n" " defaults to \""CPR_DEFAULT"\".\n"); printf(" -c, --config FILE The configfile to use. Default is \""CONFIG_DEFAULT"\"\n"); printf(" -u, -U, --user USER Defines the requesting user(not the patient),\n" " defaults to \""USER_DEFAULT"\"\n"); printf(" -v, --version Print version information and exit.\n"); printf(" -d, --debug Make debug console available.\n"); - printf(" -V, --viewer TEMPLATES Show the viewer with TEMPLATES.\n"); - printf(" -O, --viewer-only TEMPLATES\n"); printf(" Show the viewer only (no pracro editor window) with TEMPLATES.\n"); } @@ -100,8 +99,7 @@ int main(int argc, char *argv[]) QString macro = MACRO_DEFAULT; QString templ = TEMPLATE_DEFAULT; - bool show_viewer = false; - bool show_editor = true; + QString course; QString templs; QStringList args = app.arguments(); @@ -128,8 +126,12 @@ int main(int argc, char *argv[]) *arg == "-t") { templ = getParam(args, arg); } - else if(*arg == "--cpr" || + else if(*arg == "--course" || *arg == "-C") { + course = getParam(args, arg); + } + else if(*arg == "--patientid" || + *arg == "-P") { cpr = getParam(args, arg); } else if(*arg == "--config" || @@ -140,17 +142,6 @@ int main(int argc, char *argv[]) *arg == "-d") { dbg_init(); } - else if(*arg == "--viewer" || - *arg == "-V") { - templs = getParam(args, arg); - show_viewer = true; - } - else if(*arg == "--viewer-only" || - *arg == "-O") { - templs = getParam(args, arg); - show_viewer = true; - show_editor = false; - } else { print_version(); print_usage(); @@ -188,31 +179,10 @@ int main(int argc, char *argv[]) } } - if(show_editor && show_viewer) { - MainWindow mainwindow(cpr, templ, host, port, user); - mainwindow.show(); - - Viewer v(cpr, templs, host, port, user, journalpath); - viewer = &v; - v.show(); - return app.exec(); - } - - if(show_editor) { - MainWindow mainwindow(cpr, templ, host, port, user); - mainwindow.show(); - - return app.exec(); - } - - if(show_viewer) { - Viewer viewer(cpr, templs, host, port, user, journalpath); - viewer.show(); - - return app.exec(); - } + MainWindow mainwindow(cpr, templ, host, port, user); + mainwindow.show(); - return 1; + return app.exec(); } diff --git a/client/pracro.ini b/client/pracro.ini index c3d0dce..25fd0bf 100644 --- a/client/pracro.ini +++ b/client/pracro.ini @@ -2,4 +2,3 @@ #host=pracserv.j.auh.dk host=localhost port=12345 -journalpath="/home/deva/docs/uploadserver/data/"
\ No newline at end of file diff --git a/client/viewer.cc b/client/viewer.cc deleted file mode 100644 index 170210c..0000000 --- a/client/viewer.cc +++ /dev/null @@ -1,229 +0,0 @@ -/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/* vim: set et sw=2 ts=2: */ -/*************************************************************************** - * viewer.cc - * - * Mon Aug 17 08:53:29 CEST 2009 - * Copyright 2009 Bent Bisballe Nyeng - * deva@aasimon.org - ****************************************************************************/ - -/* - * This file is part of Pracro. - * - * Pracro is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * Pracro is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Pracro; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. - */ -#include "viewer.h" - -#include <QVBoxLayout> -#include <QHBoxLayout> -#include <QFile> -#include <QScrollBar> - -#include <QSettings> -#include <QTextCodec> - -#ifdef WITH_FROGS -Status::Status() -{ - QVBoxLayout *vl = new QVBoxLayout(); - setLayout(vl); - this->caption = new QLabel(); - vl->addWidget(this->caption); - - QHBoxLayout *ohl = new QHBoxLayout(); - ohl->setContentsMargins(0,0,0,0); - vl->addLayout(ohl); - - hl = new QHBoxLayout(); - hl->setContentsMargins(0,0,0,0); - ohl->addLayout(hl); - - ohl->addStretch(); -} - -void Status::setCaption(QString caption) -{ - this->caption->setText(caption + ":"); -} - -void Status::setStatus(QString macro, QString caption, bool done) -{ - if(icons.find(macro) == icons.end()) { - QLabel *icon = new QLabel(); - icon->setContentsMargins(0,0,0,0); - icon->setMargin(0); - icon->setIndent(0); - icon->setWhatsThis(caption); - icon->setToolTip(caption); - icons[macro] = icon; - hl->addWidget(icon); - } - - icons[macro]->setPixmap(QPixmap(done?":/icons/done.png":":icons/undone.png")); -} -#endif - -extern QFont *fixedfont; // Defined in pracro.cc - -Viewer::Viewer(QString cpr, QString templs, QString host, quint16 port, - QString user, QString journalpath) - : QWidget(NULL) -{ - this->templs = templs.split(QRegExp("\\W+"), QString::SkipEmptyParts); - - connect(&updatetimer, SIGNAL(timeout()), this, SLOT(update())); - -#ifdef WITH_FROGS - netcom = new NetCom(host, port); - netcom->user = user; - netcom->patientid = cpr; - netcom->sessionid = ""; - netcom->initConnection(); -#endif - - host = host; port = port; user = user; - this->cpr = cpr; - this->journalpath = journalpath; - updatetimer.start(10000); // Trigger every 10 seconds - - QVBoxLayout *l = new QVBoxLayout(); - setLayout(l); - -#ifdef WITH_FROGS - QStringList::iterator ti = this->templs.begin(); - while(ti != this->templs.end()) { - Status *s = new Status(); - l->addWidget(s); - statuses[*ti] = s; - ti++; - } -#endif - - journal = new QPlainTextEdit(); - journal->setReadOnly(true); - journal->setFont(*fixedfont); - l->addWidget(journal); - - init(); - show(); - update(); -} - -Viewer::~Viewer() -{ -#ifdef WITH_FROGS - delete netcom; -#endif - delete journal; -} - -extern QWidget *viewer; -void Viewer::closeEvent(QCloseEvent *) -{ - QSettings settings("Aasimon.org", "Pracro"); - - settings.beginGroup("ViewerWindow"); - settings.setValue("size", size()); - settings.setValue("pos", pos()); - settings.endGroup(); - viewer = NULL; - - updatetimer.stop(); - -#ifdef WITH_FROGS - netcom->discard(); // Make sure sessionid is removed. -#endif -} - -void Viewer::init() -{ - QSettings settings("Aasimon.org", "Pracro"); - - settings.beginGroup("ViewerWindow"); - resize(settings.value("size", QSize(700, 800)).toSize()); - move(settings.value("pos", QPoint(0, 0)).toPoint()); - settings.endGroup(); -} - - -void Viewer::update() -{ -#ifdef WITH_FROGS - QStringList::iterator ti = templs.begin(); - while(ti != templs.end()) { - QDomDocument xml_doc = netcom->send(*ti, "", false); - - QDomNodeList templates = xml_doc.documentElement().childNodes(); - QDomNode templatenode = templates.at(0); // There can be only one! (Swush, flomp) - QDomElement templateelement = templatenode.toElement(); - - statuses[*ti]->setCaption(templateelement.attribute("title")); - - QDomNodeList macronodes = templatenode.childNodes(); - for(int j = 0; j < macronodes.count(); j++) { - QDomNode macronode = macronodes.at(j); - QDomElement macroelement = macronode.toElement(); - - if(macroelement.tagName() != "macro") continue; - - if(macroelement.attribute("static") == "true") continue; - - QString macroname = macroelement.attribute("name"); - QString caption = macroelement.attribute("caption"); - QString completed = macroelement.attribute("completed"); - - statuses[*ti]->setStatus(macroname, caption, completed == "true"); - } - - ti++; - } -#endif - - // re-read journal file: - QString crypt; - for(int i = cpr.length() - 1; i >= 0; i--) { - if(i == 2 || i == 3) continue; - crypt += QString::number(9 - cpr.mid(i, 1).toInt()); - } - - QString filename = journalpath + "/" + cpr.mid(2,2) + "/" + crypt + "/JOURNAL.TXT"; - - QTextCodec *cp850 = QTextCodec::codecForName("cp850"); - if(!cp850) { - printf("Could not find decoder for cp850!\n"); - } - - QFile jfile(filename); - jfile.open(QIODevice::ReadOnly); - QByteArray jcp850 = jfile.readAll(); - QString j = cp850->toUnicode(jcp850); - - QString jstrip; - for(int i = 0; i < j.length(); i++) { - if(j[i] != '·' && j[i] != '') - jstrip += j[i]; // Remove end of line and file symbols. - } - - if(jlast != jstrip) { - int max = journal->verticalScrollBar()->maximum(); - int pos = journal->verticalScrollBar()->value(); - journal->setPlainText(jstrip); - // Scroll to bottom if we were there already - if(pos == max) pos = journal->verticalScrollBar()->maximum(); - journal->verticalScrollBar()->setValue(pos); - jlast = jstrip; - } -} diff --git a/client/viewer.h b/client/viewer.h deleted file mode 100644 index 799bb3d..0000000 --- a/client/viewer.h +++ /dev/null @@ -1,88 +0,0 @@ -/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/* vim: set et sw=2 ts=2: */ -/*************************************************************************** - * viewer.h - * - * Mon Aug 17 08:53:29 CEST 2009 - * Copyright 2009 Bent Bisballe Nyeng - * deva@aasimon.org - ****************************************************************************/ - -/* - * This file is part of Pracro. - * - * Pracro is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * Pracro is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Pracro; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. - */ -#ifndef __PRACRO_VIEWER_H__ -#define __PRACRO_VIEWER_H__ - -#include <QApplication> -#include <QPlainTextEdit> -#include <QTimer> -#include <QLabel> -#include <QStringList> -#include <QMap> -#include <QHBoxLayout> - -//#define WITH_FROGS - -#ifdef WITH_FROGS -#include "netcom.h" - -class Status : public QWidget { -public: - Status(); - void setStatus(QString macro, QString caption, bool done); - void setCaption(QString caption); - -private: - QLabel *caption; - QMap<QString, QLabel*> icons; - QHBoxLayout *hl; -}; -#endif - -class Viewer : public QWidget { -Q_OBJECT -public: - Viewer(QString cpr, QString templ, QString host, quint16 port, - QString user, QString journalpath); - ~Viewer(); - - void init(); - -protected: - void closeEvent(QCloseEvent *); - -public slots: - void update(); - -private: - QTimer updatetimer; - - QString cpr; - QString journalpath; - QStringList templs; - - QPlainTextEdit *journal; - QString jlast; - -#ifdef WITH_FROGS - NetCom *netcom; - QMap<QString, Status* > statuses; -#endif -}; - -#endif/*__PRACRO_VIEWER_H__*/ |