1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204
|
/***************************************************************************
* copyright : (C) 2009-2017 by Pascal Brachet *
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
* *
***************************************************************************/
#ifndef ALGOBOX_H
#define ALGOBOX_H
#include "ui_algobox.h"
#include "browser.h"
#include "jsmainwindow.h"
#include <QMainWindow>
#include <QCloseEvent>
#include <QMenuBar>
#include <QToolBar>
#include <QAction>
#include <QActionGroup>
#include <QTreeWidgetItem>
#include <QDomDocument>
#include <QDomElement>
#include <QDomNode>
#include <QDomNodeList>
#include <QCompleter>
#include <QProgressDialog>
class MainWindow : public QMainWindow {
Q_OBJECT
public:
MainWindow(QWidget *parent=0);
~MainWindow();
Ui::MainWindow ui;
QString dernierRepertoire, nomFichier;
QByteArray windowstate;
public slots:
void OuvrirNouvelAlgo(QString nouveauFichier);
private slots:
void closeEvent(QCloseEvent *e);
void Quitter();
//***************
void AjouterLigne();
void NouvelleLigne(QTreeWidgetItem *item);
void SupprimerLigne();
void ModifierLigne();
void ActualiserArbre();
void ActualiserVariables();
//**********************
void AjouterVariable();
void AjouterLire();
void AjouterAfficher();
void AjouterMessage();
void AjouterCalcul();
void AjouterPause();
void AjouterAffectation();
void AjouterCondition();
void AjouterBoucle();
void AjouterTantque();
void AjouterPoint();
void AjouterSegment();
void AjouterEffacer();
void AjouterCommentaire();
void AjouterFonction();
void AjouterVariableLocale();
void AjouterRenvoyer();
void AjouterAppelerFct();
//**********************
void ModifierLire();
void ModifierAfficher();
void ModifierMessage();
void ModifierCalcul();
void ModifierAffectation();
void ModifierCondition();
void ModifierBoucle();
void ModifierTantque();
void ModifierPoint();
void ModifierSegment();
void ModifierCommentaire();
void ModifierFonction();
void ModifierRenvoyer();
void ModifierAppelerFct();
//***************
void LireConfig();
void SauverConfig();
void InitOuvrir();
void Init();
void EffaceArbre();
//****************
void ActiverBoutons();
void DesactiverBoutons();
void ActiverFonction(bool etat);
void ActiverF2(bool etat);
void ActiverRepere(bool etat);
//****************
void AjouterF2();
void HautF2();
void BasF2();
void SupprimerF2();
void ModifierLigneF2(QListWidgetItem *item);
//****************
bool NomInterdit(QString nom);
//****************
QString GenererCode(bool exporthtml);
QString CodeVersJavascript(QString code,bool exporthtml, int id);
QString FiltreNomVariable(QString orig);
QString FiltreCalcul(QString orig);
QString FiltreCondition(QString orig);
QString CodeNoeud(QTreeWidgetItem *item,bool exporthtml);
QString AlgoNoeud(QTreeWidgetItem *item);
QString AlgoNoeudTexte(QTreeWidgetItem *item);
QString AlgoNoeudCode(QTreeWidgetItem *item);
void JavascriptExport();
void ExporterVersTexte();
void ExporterVersODF();
void ExporterVersLatex();
void ExporterVersHtml();
void CopieEcran();
void Imprimer();
//****************
void NouvelAlgo();
void ItemVersXml(QTreeWidgetItem *item,QDomDocument doc ,QDomElement parent);
void SauverAlgo();
void SauverSousAlgo();
void XmlVersItem(QTreeWidgetItem *parentItem, QDomElement element);
void ChargerAlgo();
void Ouvrir(QString nouveauFichier);
void ActualiserStatut();
void NouveauStatut(bool m);
void APropos();
void Aide();
void Tutoriel();
void SetInterfaceFont();
void CouleurConsole();
void fileOpenRecent();
void AddRecentFile(const QString &f);
void UpdateRecentFile();
void ChargerExemple();
//*****************
void EditCopier();
void EditColler();
void EditCouper();
//*****************
void ToggleCadrePresentation();
void ActualiserModeButton();
void ActualiserMode();
//*****************
//void ImporterCodeTexte();
QString EditeurVersArbre();
QString ArbreVersCodeTexte();
void VerifierCodeTexte();
void ExpandBranche(QTreeWidgetItem *item);
void InsertOperation(QListWidgetItem *item);
//*****************
void ChargerExtension();
void AnnulerExtension();
void LancerJSEditeur();
//*****************
void Configurer();
void ActualiserTexteParam();
private :
QMenu *fichierMenu, *aideMenu, *recentMenu, *editMenu, *tutoMenu, *affichageMenu, *modeMenu, *extensionMenu, *optionsMenu;
QActionGroup *modeGroup;
QAction *recentFileActs[5];
QAction *actionCopier, *actionColler, *actionCouper, *ToggleAct, *annulerExtensionAct, *actionModeNormal, *actionModeTexte;
QStringList recentFilesList;
QToolBar *fileToolBar;
QStringList ListeNomsInterdits, ListeNomsVariables, ListeTypesVariables;
QTreeWidgetItem *variablesItem, *debutItem, *finItem, *fctsItem;
int indent, idligne,browserwidth,browserheight;
bool estModifie, afficheCadrePresentation, /*repereDefini,*/ modeNormal, estVierge, blackconsole;
QTreeWidgetItem *clipboardItem;
QCompleter *completer;
QString x11fontfamily;
int x11fontsize;
QPointer<Browser> browserWindow;
QPointer<JSMainWindow> jseditWindow;
QString fichier_extension;
QPointer<QProgressDialog> progressDialog;
int progressCompteur;
QString highlightHtmlLine(const QString &text);
QList<int> detectChaine(const QString &text);
QPushButton *buttonModeNormal, *buttonModeTexte;
bool arrondiAuto;
int maxBoucle, totalBoucles, totalAffichages,epaisseurLigne,epaisseurPoint,nbDecimales;
bool arrondiAutoAlgo;
int maxBoucleAlgo, totalBouclesAlgo, totalAffichagesAlgo,epaisseurLigneAlgo,epaisseurPointAlgo,nbDecimalesAlgo;
bool dansFct;
protected:
void dragEnterEvent(QDragEnterEvent *event);
void dropEvent(QDropEvent *event);
};
#endif
|