Cap resum de modificació
Cap resum de modificació
Línia 1: Línia 1:
Aquesta llibreria va ser creada per assistir en el procés de creació de frontends per a programes pensats per a terminal.
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.
Per si mateixa no mostra res per pantalla, això ho deixa al gust del programador que la utilitzi.
= Classes: =
Dues classes:
*cadtqtgui: És la única classe amb constructor públic, i per tant la única que podrem crear.
*preferences: S'encarrega de mostrar un dialeg per tal de canviar el idioma o color del programa. El constructor és privat i la única classe que la pot cridar és la cadtqtgui.


= Mètodes: =
= Mètodes: =
Aquí s'expliquen detalladament tots els mètodes que incorpora la llibreria en la seva versió 1.0.1.
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.
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.
== Classe cadtqtgui ==
=== cadtqtgui(); ===
El constructor accepta com a parametres:
*userPath
*userPath, parent
*userPath, parent, nom
*parent
*parent, nom
ON:
*userPath és el path del usuari
*parent és el widget principal. Aquest s'ha de posar si volem fer servir el mètode execPref();
*nom és el nom del programa. Caldra posar-lo si volem que el programa guardi una aparença independent de la resta de programes que utilitzen la llibreria.
=== void execPref(); ===
Mostra el dialeg de preferencies. Indispensable construir la classe amb un parent.


=== void print(QPrinter &printer, const QString &htmlText, const QString &bkend_process_name); ===
=== void print(QPrinter &printer, const QString &htmlText, const QString &bkend_process_name); ===
Línia 77: Línia 100:


*Li pasem el tipus d'error.
*Li pasem el tipus d'error.
== Classe preferences ==
=== void langChanged(const QString &l); ===
Senyal que ens avisa de que s'ha seleccionat un idioma
=== void colorChanged(const QColor &c); ===
Senyal que ens avisa de que s'ha seleccionat un color
=== void pbColorAction(); ===
Acció que s'activa en clicar el boto de seleccio de color
=== void pbColorDefaultAction(); ===
Acció que s'activa en clicar el boto de seleccio de color per defecte
=== void cbLanguageAction(int index); ===
Acció que s'activa en clicar el boto de idioma
=== preferences(); ===
Constructor per defecte, nomes implementat per tal de fer-lo privat
=== explicit preferences(const QColor &clr, const QString &lng, QWidget *parent = 0); ===
Constructor real de la classe


= Traducció =
= Traducció =

Revisió del 16:31, 20 des 2012

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.

Classes:

Dues classes:

  • cadtqtgui: És la única classe amb constructor públic, i per tant la única que podrem crear.
  • preferences: S'encarrega de mostrar un dialeg per tal de canviar el idioma o color del programa. El constructor és privat i la única classe que la pot cridar és la cadtqtgui.

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.

Classe cadtqtgui

cadtqtgui();

El constructor accepta com a parametres:

  • userPath
  • userPath, parent
  • userPath, parent, nom
  • parent
  • parent, nom

ON:

  • userPath és el path del usuari
  • parent és el widget principal. Aquest s'ha de posar si volem fer servir el mètode execPref();
  • nom és el nom del programa. Caldra posar-lo si volem que el programa guardi una aparença independent de la resta de programes que utilitzen la llibreria.

void execPref();

Mostra el dialeg de preferencies. Indispensable construir la classe amb un parent.

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.

Classe preferences

void langChanged(const QString &l);

Senyal que ens avisa de que s'ha seleccionat un idioma

void colorChanged(const QColor &c);

Senyal que ens avisa de que s'ha seleccionat un color

void pbColorAction();

Acció que s'activa en clicar el boto de seleccio de color

void pbColorDefaultAction();

Acció que s'activa en clicar el boto de seleccio de color per defecte

void cbLanguageAction(int index);

Acció que s'activa en clicar el boto de idioma

preferences();

Constructor per defecte, nomes implementat per tal de fer-lo privat

explicit preferences(const QColor &clr, const QString &lng, QWidget *parent = 0);

Constructor real de la classe

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