Cap resum de modificació |
Cap resum de modificació |
||
| (Una revisió intermèdia 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. | 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 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