Aquesta llibreria va ser creada per assistir en el procés de creació de frontends per a programes pensats per a terminal. Per si mateixa no mostra res per pantalla, això ho deixa al gust del programador que la utilitzi.

Mètodes:

Aquí s'expliquen detalladament tots els mètodes que incorpora la llibreria en la seva versió 1.0.1. Tot i que ja està explicat al mètode corresponent, aprofito per recordar que el mètode "confBrowser" és obligatori si volem utilitzar algun mètode que utilitzi un QTextEdit.

void print(QPrinter &printer, const QString &htmlText, const QString &bkend_process_name);

Envia a imprimir un fitxer amb capçalera i peu de pàgina ja predeterminats

  • Se li pasa un QPrinter previament configurat amb un QPrint Dialog.
  • Se li pasa el text a imprimir en format html.
  • Se li pasa el nom del programa que figurarà a la capçalera.


QString preTestFile(const QString &processName, const int &returnPath = 0);

Determina si un programa està o no al $PATH retornant l'error si no el troba (ja formatat per posar en un QMessageBox). Opcionalment, si troba el path, el retorna amb format #:<path>

  • Se li pasa el nom del programa que volem executar (sense el path)
  • Si volem posem com a segon parametre un 1 perquè en el cas de testejar el fitxer amb resultat satisfactori ens retorni "#:<path>" en comptes de un QString vuit.


void about(QStringList &out, const QStringList &progs, const QString &ident_process_exe, const QString &frend_process_name, const QString &bkend_process_name);

Ens retorna el text html necessari per introduir a un QMessageBox::about. Perquè la imatge surti correctament, s'ha de posar al main.cpp, just despres de la declaracio de QApplication, el seguent:

Q_INIT_RESOURCE(libresource);
  • Se li pasa un QStringList on es desarà el resultat, aquest estarà format per dos QStrings, el títol de la finestra "about" i el cos del missatge.
  • Se li pasa un QStringlist amb el PATH COMPLERT del frontend i del/s backend/s. ex: QStringList() << frend << bkend1 << bkend2 << bkend3;
  • Se li pasa el executable del programa ident (ident)
  • Se li pasa el nom del programa bkend: ex: "Divide"
  • Se li pasa el nom del programa frend: ex: "Divide Qt GUI"


void std2browser(const QByteArray &read, QTextEdit *browser, const QString &color);

Ens desa un trosset del l'stderr o l'stdout (en format QByteArray) al QtextEdit que volguem tot indicant-li el color. Molt útil si s'utilitza com a mètode que s'executi cada cop que el buffer de l'stdout/err contingui informació (el qual retorna les dades en format QByteArray).

  • Se li pasa l'stderr o stdout
  • Se li pasa el QTextEdit
  • Se li pasa el color de la lletra


void confBrowser(QTextEdit *browser, const int &colSize = 0);

Necessari per deixar configurat el QTextEdit per a la seva utilització en aquesta llibreria.

  • Se li pasa el QTextEdit
  • Opcionalment li pots pasar el màxim de columnes de caracters que vols que utilitzi (si no se li pasa res, la linia s'adapta a l'ample del QTextEdit)


int getBrowserCols(QTextEdit *browser);

Ens dirà el màxim de columnes de caracters que permet el browser amb el tamany actual.

  • Se li pasa el QTextEdit


QString getUserPath();

Ens pasarà /opt/sapo/users/USER/ on USER es el nom d'usuari logat


QString processErr2string(const QProcess::ProcessError &err);

Ens retorna un Human readable error a partir del codi d'error d'un QProcess

  • Li pasem el tipus d'error.

Traducció

Per traduir, primer de tot cal encerclar tots els QStrings que volem traduir amb tr(<QString>).

Després, dins el directori ...QT/bin trovarem una eina que es diu lupdate. Aquest ens crea un xml amb els strings a traduir

  • Farem: lupdate arxiu.pro -ts nom_es_CA.ts on:
    • "arxiu.pro" es el projecte de QT
    • "nom" és el prefix que posarem a tots els arxius de traducció (a la nostra elecció)
    • "es" és el codi de pais
    • "CA" és el codi de llengua (no obligatori)
      • exemples: pepito_es_CA -> català; pepito_es -> castella; pepito_fr -> frances
    • "ts" és la extensió

Quan ja hem creat els arxius.ts a ...QT/bin trobarem el programa linguist

  • Farem linguist *.ts i ens assistirà per traduir els QStrings que hem marcat.

Al makefile hem d'afegir aquests *.ts i ens crearà binaris *.qm que desarà a la carpeta src/resources.

  • TSOBJS = pepito_es_CA.ts pepito_es.ts pepito_fr.ts

Finalment perque el programa quedi traduit fem:

QString lang = QProcess::systemEnvironment().filter(QRegExp("^LANG=")).first();
lang = lang.replace(QRegExp("^.*="), "");
QTranslator translator;
translator.load("path/pepito_" + lang);
a.installTranslator(&translator);

on "a" es la nostra QApplication

Crear un fitxer de projecte QT .pro

Anem al directori src del nostre programa: executem ...QT/bin/qmake -project

on: ...QT es el directori on tenim instalat el qt