ukinoki / Rufus

Rufus est un logiciel open source publié sous licence GPLv3 de gestion d'activité en ophtalmologie et en orthoptie, conçu pour s'adapter à toutes les formes d'exercice : individuel, groupe, et travail multisite. Rufus est bâti sur un modèle client-serveur. Le code est compilable sous MacOSX et Linux. Les exécutables sont téléchargeables sur la page Téléchargements du site.
https://www.rufusvision.org
Other
12 stars 4 forks source link

Bug : Affichage des UpTextEdit suivant l'OS #2

Closed ukinoki closed 6 years ago

ukinoki commented 6 years ago

PB: Les UptextEdit affichent du code html qui n'a pas le même aspect sous Linux et sous Mac But : Il faut faire varier la taille de la police au moment de l'affichage en fonction de l'OS. pour l'affichage, on surcharge la fonction setText des UpTextEdit

void UpTextEdit::setText(const QString &text)
{
if (text.contains("<!DOCTYPE HTML PUBLIC"))
    {
    QString txt = text;
#ifdef Q_OS_LINUX
        if (!text.contains("<!LINUX>"))
            txt.replace(QRegExp("font-size( *: *[\\d]{1,2} *)pt"),"font-size:" + QString::number(qApp->font().pointSize()) + "pt");
#endif
#ifdef Q_OS_MACOS
        if (text.contains("<!LINUX>"))
            txt.replace(QRegExp("font-size( *: *[\\d]{1,2} *)pt"),"font-size" + QString::number(qApp->font().pointSize()) + "pt");
#endif
        QTextEdit::setText(txt);
    }
    else
        QTextEdit::setText(text);
}

et au moment de l'écriture dans le champ, sur eventFilter(QObject obj, QEvent event) dans rufus.cpp


...
    if (event->type() == QEvent::FocusOut )
    {
        if (obj->inherits("UpTextEdit"))
        {
            QString requetemodif;
            UpTextEdit* objUpText = static_cast<UpTextEdit*>(obj);
            objUpText->textCursor().clearSelection();
            if (objUpText->getValeurAvant() != objUpText->toHtml())
            {
                if (objUpText->getTableCorrespondant() == NOM_TABLE_ACTES || objUpText->getTableCorrespondant() == NOM_TABLE_MESSAGES)
                {
                    QString Corps = objUpText->toHtml();
                    Corps.replace("<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">","<p style=\" margin-top:0px; margin-bottom:0px;\">");
                    Corps.remove("border=\"0\" style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px;\" ");
#ifdef Q_OS_LINUX
                    if (Corps.contains("<!MAC>"))
                        Corps.replace("<!MAC>","<!LINUX>");
                    else if (!Corps.contains("<!LINUX>"))
                        Corps.append("<!LINUX>");
#endif
#ifdef Q_OS_MAC
                    if (Corps.contains("<!LINUX>"))
                        Corps.replace("<!LINUX>","<!MAC>");
                    else if (!Corps.contains("<!MAC>"))
                        Corps.append("<!MAC>");
#endif
                    requetemodif =   "UPDATE " + objUpText->getTableCorrespondant() + " SET " + objUpText->getChampCorrespondant() + " = '"
                            + proc->CorrigeApostrophe(Corps) + "' WHERE " + (objUpText->getTableCorrespondant() == NOM_TABLE_ACTES? "idActe" : "idMessage") + "= " + QString::number(gidActe);
                    QSqlQuery UpdateUpTextEditQuery (requetemodif,db);
                    proc->TraiteErreurRequete(UpdateUpTextEditQuery,requetemodif,tr("Impossible de mettre à jour le champ ") + objUpText->getChampCorrespondant() + "!");
                }
               else
                {
                    // on vérifie d'abord s'il existe un enregistrement pour ce patient dans la table correspondante, sinon, on le crée
``
ukinoki commented 6 years ago

résolu