Cap resum de modificació
Joan (discussió | contribucions)
Cap resum de modificació
 
(3 revisions intermèdies per un altre usuari que no es mostra)
Línia 1: Línia 1:
[[Category:SAPO]]
[[Category:Devel]]
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: =
= 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); ===
=== void print(QPrinter &printer, const QString &htmlText, const QString &bkend_process_name); ===
Línia 72: Línia 102:


*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ó de 12:40, 7 gen 2015

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