Compare commits

...

13 Commits

Author SHA1 Message Date
665d789244 Merge branch 'dev' into 'main'
Dev

See merge request p2406187/sae201!37
2025-06-21 13:05:59 +00:00
9a12e8e877 Merge branch 'fix/createPageDir' into 'dev'
Fix/create page dir

See merge request p2406187/sae201!36
2025-06-21 12:42:05 +00:00
Pyramond
37276b5d90 Change html export path 2025-06-21 14:41:03 +02:00
Pyramond
2018375062 Add html export directory 2025-06-21 14:40:42 +02:00
JOSSERAND GIOVANNI p2405212
3df41e38e7 Merge branch 'feature/webButton' into 'dev'
add of web button to index.html

See merge request p2406187/sae201!35
2025-06-21 12:26:56 +00:00
Giovanni JOSSERAND
d69d10605e add of web button to index.html 2025-06-21 14:26:12 +02:00
Pyramond
cf486f6e68 Exit btn 2025-06-21 14:18:30 +02:00
10695d0190 Merge branch 'fix/localistation' into 'dev'
Save loc on validation and stop validation when stepNumber value is changed

See merge request p2406187/sae201!34
2025-06-21 12:13:59 +00:00
6d857c5cd5 Merge branch 'dev' into 'fix/localistation'
# Conflicts:
#   mainwindow.cpp
2025-06-21 12:13:52 +00:00
JOSSERAND GIOVANNI p2405212
2bf6a9397e Merge branch 'feature/resetplainTextEdit' into 'dev'
fix duplication of dialogues

See merge request p2406187/sae201!33
2025-06-21 12:13:07 +00:00
Pyramond
c8e264fe18 Save loc on validation and stop validation when stepNumber value is changed 2025-06-21 14:13:01 +02:00
Giovanni JOSSERAND
6b24485cf0 fix duplication of dialogues 2025-06-21 14:12:31 +02:00
4aebed6913 Merge branch 'dev' into 'main'
Dev

See merge request p2406187/sae201!24
2025-06-20 16:37:34 +00:00
8 changed files with 97 additions and 44 deletions

2
.gitignore vendored
View File

@ -1,6 +1,6 @@
*.json *.json
*.html *.html
data/HTML-exports
## Ignore Visual Studio temporary files, build results, and ## Ignore Visual Studio temporary files, build results, and
## files generated by popular Visual Studio add-ons. ## files generated by popular Visual Studio add-ons.
## and Ignore Qt objects and libs. ## and Ignore Qt objects and libs.

View File

@ -18,6 +18,10 @@
#include <QJsonObject> #include <QJsonObject>
#include <QJsonArray> #include <QJsonArray>
#include "web.h" #include "web.h"
#include <QDesktopServices>
#include <QUrl>
#include <QFileInfo>
#include <QDir>
int MainWindow::indexPath = 0; int MainWindow::indexPath = 0;
@ -164,7 +168,7 @@ void MainWindow::loadStep(Step s) {
ui->responseSpin->setValue(s.getResponse()); ui->responseSpin->setValue(s.getResponse());
for(int i = 0; i < s.getTexte().length(); i++) { for(int i = 0; i < s.getTexte().length(); i++) {
QString q = s.getPersonnage().at(i) + ": " + s.getTexte().at(i); QString q = "[" + s.getPersonnage().at(i) + "] : " + s.getTexte().at(i);
ui->dialogEdit->appendPlainText(q); ui->dialogEdit->appendPlainText(q);
} }
} }
@ -195,10 +199,12 @@ void MainWindow::exportHTMLMap(int index)
return; return;
} }
QDir dir;
dir.mkdir("./data/HTML-exports");
dir.mkdir("./data/HTML-exports/pages");
QString safeName = p->getName().simplified().replace(" ", "_"); QString safeName = p->getName().simplified().replace(" ", "_");
std::string fileName = "./pages/parcours_" + safeName.toStdString() + ".html"; std::string fileName = "./data/HTML-exports/pages/parcours_" + safeName.toStdString() + ".html";
std::ofstream file(fileName); std::ofstream file(fileName);
if (!file.is_open()) { if (!file.is_open()) {
@ -328,10 +334,10 @@ margin-bottom:20px;
QString imagePath = p->getImage(); QString imagePath = p->getImage();
QFileInfo fileInfo(imagePath); QFileInfo fileInfo(imagePath);
QString imageName = fileInfo.fileName(); QString imageName = fileInfo.fileName();
QString destPath = "./pages/images/" + imageName; QString destPath = "../data/HTML-exports/pages/images/" + imageName;
// Crée le dossier images sil nexiste pas // Crée le dossier images sil nexiste pas
QDir().mkpath("./pages/images"); QDir().mkpath("./data/HTML-exports/pages/images");
// Copie limage dans le dossier pages/images // Copie limage dans le dossier pages/images
QFile::copy(imagePath, destPath); QFile::copy(imagePath, destPath);
@ -660,14 +666,13 @@ void MainWindow::on_pathNumber_valueChanged(int arg1)
void MainWindow::on_stepNumber_valueChanged(int arg1) void MainWindow::on_stepNumber_valueChanged(int arg1)
{ {
on_validateBtn_clicked(); ui->dialogEdit->clear();
this->loadStep(currentPath->getStep().at(arg1-1)); this->loadStep(currentPath->getStep().at(arg1-1));
} }
void MainWindow::on_validateBtn_clicked() void MainWindow::on_validateBtn_clicked()
{ {
std::cout << "ok" << std::endl;
this->currentPath->setName(ui->titleEdit->text()); this->currentPath->setName(ui->titleEdit->text());
this->currentPath->setCity(ui->locEdit->text()); this->currentPath->setCity(ui->locEdit->text());
this->currentPath->setImage(ui->imagePath->text()); this->currentPath->setImage(ui->imagePath->text());
@ -676,6 +681,8 @@ void MainWindow::on_validateBtn_clicked()
this->currentPath->setDuration(ui->durationSpin->value()); this->currentPath->setDuration(ui->durationSpin->value());
this->currentPath->getStep()[ui->stepNumber->value()-1].setTitle(ui->stepTitle->text()); this->currentPath->getStep()[ui->stepNumber->value()-1].setTitle(ui->stepTitle->text());
this->currentPath->getStep()[ui->stepNumber->value()-1].setResponse(ui->responseSpin->value()); this->currentPath->getStep()[ui->stepNumber->value()-1].setResponse(ui->responseSpin->value());
this->currentPath->getStep()[ui->stepNumber->value()-1].setLongitude(ui->longitudeSpin->value());
this->currentPath->getStep()[ui->stepNumber->value()-1].setLatitude(ui->LatitudeSpin->value());
this->currentPath->getStep()[ui->stepNumber->value()-1].clearPersonnages(); this->currentPath->getStep()[ui->stepNumber->value()-1].clearPersonnages();
this->currentPath->getStep()[ui->stepNumber->value()-1].clearTextes(); this->currentPath->getStep()[ui->stepNumber->value()-1].clearTextes();
extractDialogue(); extractDialogue();
@ -1046,3 +1053,25 @@ void MainWindow::on_addStep_clicked()
{ {
this->addNewStep(); this->addNewStep();
} }
void MainWindow::on_actionExit_triggered() { QApplication::quit(); }
void MainWindow::openIndexSite() {
QString filePath = "./data/HTML-exports/index.html";
QFileInfo fileInfo(filePath);
if (fileInfo.exists() && fileInfo.isFile()) {
QDesktopServices::openUrl(QUrl::fromLocalFile(fileInfo.absoluteFilePath()));
} else {
QMessageBox::warning(this, "Erreur", "Le fichier index.html n'existe pas.");
}
}
void MainWindow::on_actionWeb_triggered()
{
this->openIndexSite();
}

View File

@ -53,6 +53,7 @@ public:
void newPath(); void newPath();
void extractDialogue(); void extractDialogue();
bool m_handlingUndoRedo = false; bool m_handlingUndoRedo = false;
void openIndexSite();
private slots: private slots:
void on_pushButton_clicked(); void on_pushButton_clicked();
@ -125,6 +126,10 @@ private slots:
void on_addStep_clicked(); void on_addStep_clicked();
void on_actionExit_triggered();
void on_actionWeb_triggered();
private: private:
Ui::MainWindow *ui; Ui::MainWindow *ui;
QString currentFile; QString currentFile;

View File

@ -79,7 +79,7 @@
</size> </size>
</property> </property>
<property name="frameShape"> <property name="frameShape">
<enum>QFrame::Shape::NoFrame</enum> <enum>QFrame::NoFrame</enum>
</property> </property>
<layout class="QHBoxLayout" name="horizontalLayout_13"> <layout class="QHBoxLayout" name="horizontalLayout_13">
<item> <item>
@ -262,7 +262,7 @@
<string>...</string> <string>...</string>
</property> </property>
<property name="icon"> <property name="icon">
<iconset resource="data.qrc"> <iconset>
<normaloff>:/data/images/data/images/add.png</normaloff>:/data/images/data/images/add.png</iconset> <normaloff>:/data/images/data/images/add.png</normaloff>:/data/images/data/images/add.png</iconset>
</property> </property>
</widget> </widget>
@ -333,7 +333,7 @@
</size> </size>
</property> </property>
<property name="frameShape"> <property name="frameShape">
<enum>QFrame::Shape::NoFrame</enum> <enum>QFrame::NoFrame</enum>
</property> </property>
<layout class="QVBoxLayout" name="verticalLayout_3"> <layout class="QVBoxLayout" name="verticalLayout_3">
<item> <item>
@ -361,7 +361,7 @@
<string>...</string> <string>...</string>
</property> </property>
<property name="icon"> <property name="icon">
<iconset resource="data.qrc"> <iconset>
<normaloff>:/data/images/data/images/add.png</normaloff>:/data/images/data/images/add.png</iconset> <normaloff>:/data/images/data/images/add.png</normaloff>:/data/images/data/images/add.png</iconset>
</property> </property>
</widget> </widget>
@ -484,7 +484,7 @@
<x>0</x> <x>0</x>
<y>0</y> <y>0</y>
<width>800</width> <width>800</width>
<height>22</height> <height>21</height>
</rect> </rect>
</property> </property>
<widget class="QMenu" name="menuFile"> <widget class="QMenu" name="menuFile">
@ -495,6 +495,8 @@
<addaction name="actionOpen"/> <addaction name="actionOpen"/>
<addaction name="actionSave"/> <addaction name="actionSave"/>
<addaction name="actionSave_as"/> <addaction name="actionSave_as"/>
<addaction name="actionWeb"/>
<addaction name="actionExit"/>
</widget> </widget>
<widget class="QMenu" name="menuEdit"> <widget class="QMenu" name="menuEdit">
<property name="title"> <property name="title">
@ -578,110 +580,110 @@
</action> </action>
<action name="actionNewFile"> <action name="actionNewFile">
<property name="icon"> <property name="icon">
<iconset resource="data.qrc"> <iconset>
<normaloff>:/data/images/data/images/new.png</normaloff>:/data/images/data/images/new.png</iconset> <normaloff>:/data/images/data/images/new.png</normaloff>:/data/images/data/images/new.png</iconset>
</property> </property>
<property name="text"> <property name="text">
<string>New File</string> <string>New File</string>
</property> </property>
<property name="menuRole"> <property name="menuRole">
<enum>QAction::MenuRole::NoRole</enum> <enum>QAction::NoRole</enum>
</property> </property>
</action> </action>
<action name="actionSaveFile"> <action name="actionSaveFile">
<property name="icon"> <property name="icon">
<iconset resource="data.qrc"> <iconset>
<normaloff>:/data/images/data/images/save_as.png</normaloff>:/data/images/data/images/save_as.png</iconset> <normaloff>:/data/images/data/images/save_as.png</normaloff>:/data/images/data/images/save_as.png</iconset>
</property> </property>
<property name="text"> <property name="text">
<string>Save</string> <string>Save</string>
</property> </property>
<property name="menuRole"> <property name="menuRole">
<enum>QAction::MenuRole::NoRole</enum> <enum>QAction::NoRole</enum>
</property> </property>
</action> </action>
<action name="actionSaveAsFile"> <action name="actionSaveAsFile">
<property name="icon"> <property name="icon">
<iconset resource="data.qrc"> <iconset>
<normaloff>:/data/images/data/images/save.png</normaloff>:/data/images/data/images/save.png</iconset> <normaloff>:/data/images/data/images/save.png</normaloff>:/data/images/data/images/save.png</iconset>
</property> </property>
<property name="text"> <property name="text">
<string>Save as</string> <string>Save as</string>
</property> </property>
<property name="menuRole"> <property name="menuRole">
<enum>QAction::MenuRole::NoRole</enum> <enum>QAction::NoRole</enum>
</property> </property>
</action> </action>
<action name="actionEditCopy"> <action name="actionEditCopy">
<property name="icon"> <property name="icon">
<iconset resource="data.qrc"> <iconset>
<normaloff>:/data/images/data/images/copy.png</normaloff>:/data/images/data/images/copy.png</iconset> <normaloff>:/data/images/data/images/copy.png</normaloff>:/data/images/data/images/copy.png</iconset>
</property> </property>
<property name="text"> <property name="text">
<string>Copy</string> <string>Copy</string>
</property> </property>
<property name="menuRole"> <property name="menuRole">
<enum>QAction::MenuRole::NoRole</enum> <enum>QAction::NoRole</enum>
</property> </property>
</action> </action>
<action name="actionEditPaste"> <action name="actionEditPaste">
<property name="icon"> <property name="icon">
<iconset resource="data.qrc"> <iconset>
<normaloff>:/data/images/data/images/paste.png</normaloff>:/data/images/data/images/paste.png</iconset> <normaloff>:/data/images/data/images/paste.png</normaloff>:/data/images/data/images/paste.png</iconset>
</property> </property>
<property name="text"> <property name="text">
<string>Paste</string> <string>Paste</string>
</property> </property>
<property name="menuRole"> <property name="menuRole">
<enum>QAction::MenuRole::NoRole</enum> <enum>QAction::NoRole</enum>
</property> </property>
</action> </action>
<action name="actionEditCut"> <action name="actionEditCut">
<property name="icon"> <property name="icon">
<iconset resource="data.qrc"> <iconset>
<normaloff>:/data/images/data/images/cut.png</normaloff>:/data/images/data/images/cut.png</iconset> <normaloff>:/data/images/data/images/cut.png</normaloff>:/data/images/data/images/cut.png</iconset>
</property> </property>
<property name="text"> <property name="text">
<string>Cut</string> <string>Cut</string>
</property> </property>
<property name="menuRole"> <property name="menuRole">
<enum>QAction::MenuRole::NoRole</enum> <enum>QAction::NoRole</enum>
</property> </property>
</action> </action>
<action name="actionEditUndo"> <action name="actionEditUndo">
<property name="icon"> <property name="icon">
<iconset resource="data.qrc"> <iconset>
<normaloff>:/data/images/data/images/edit_undo.png</normaloff>:/data/images/data/images/edit_undo.png</iconset> <normaloff>:/data/images/data/images/edit_undo.png</normaloff>:/data/images/data/images/edit_undo.png</iconset>
</property> </property>
<property name="text"> <property name="text">
<string>Undo</string> <string>Undo</string>
</property> </property>
<property name="menuRole"> <property name="menuRole">
<enum>QAction::MenuRole::NoRole</enum> <enum>QAction::NoRole</enum>
</property> </property>
</action> </action>
<action name="actionEditRedo"> <action name="actionEditRedo">
<property name="icon"> <property name="icon">
<iconset resource="data.qrc"> <iconset>
<normaloff>:/data/images/data/images/edit_redo.png</normaloff>:/data/images/data/images/edit_redo.png</iconset> <normaloff>:/data/images/data/images/edit_redo.png</normaloff>:/data/images/data/images/edit_redo.png</iconset>
</property> </property>
<property name="text"> <property name="text">
<string>Redo</string> <string>Redo</string>
</property> </property>
<property name="menuRole"> <property name="menuRole">
<enum>QAction::MenuRole::NoRole</enum> <enum>QAction::NoRole</enum>
</property> </property>
</action> </action>
<action name="actionopenFile"> <action name="actionopenFile">
<property name="icon"> <property name="icon">
<iconset resource="data.qrc"> <iconset>
<normaloff>:/data/images/data/images/open.png</normaloff>:/data/images/data/images/open.png</iconset> <normaloff>:/data/images/data/images/open.png</normaloff>:/data/images/data/images/open.png</iconset>
</property> </property>
<property name="text"> <property name="text">
<string>Open file</string> <string>Open file</string>
</property> </property>
<property name="menuRole"> <property name="menuRole">
<enum>QAction::MenuRole::NoRole</enum> <enum>QAction::NoRole</enum>
</property> </property>
</action> </action>
<action name="actionNew"> <action name="actionNew">
@ -734,7 +736,7 @@
</action> </action>
<action name="actionColor"> <action name="actionColor">
<property name="icon"> <property name="icon">
<iconset resource="data.qrc"> <iconset>
<normaloff>:/data/images/data/images/font-color.png</normaloff>:/data/images/data/images/font-color.png</iconset> <normaloff>:/data/images/data/images/font-color.png</normaloff>:/data/images/data/images/font-color.png</iconset>
</property> </property>
<property name="text"> <property name="text">
@ -743,7 +745,7 @@
</action> </action>
<action name="actionBold"> <action name="actionBold">
<property name="icon"> <property name="icon">
<iconset resource="data.qrc"> <iconset>
<normaloff>:/data/images/data/images/bold.png</normaloff>:/data/images/data/images/bold.png</iconset> <normaloff>:/data/images/data/images/bold.png</normaloff>:/data/images/data/images/bold.png</iconset>
</property> </property>
<property name="text"> <property name="text">
@ -752,7 +754,7 @@
</action> </action>
<action name="actionItalic"> <action name="actionItalic">
<property name="icon"> <property name="icon">
<iconset resource="data.qrc"> <iconset>
<normaloff>:/data/images/data/images/italic.png</normaloff>:/data/images/data/images/italic.png</iconset> <normaloff>:/data/images/data/images/italic.png</normaloff>:/data/images/data/images/italic.png</iconset>
</property> </property>
<property name="text"> <property name="text">
@ -761,7 +763,7 @@
</action> </action>
<action name="actionUnderline"> <action name="actionUnderline">
<property name="icon"> <property name="icon">
<iconset resource="data.qrc"> <iconset>
<normaloff>:/data/images/data/images/underline.png</normaloff>:/data/images/data/images/underline.png</iconset> <normaloff>:/data/images/data/images/underline.png</normaloff>:/data/images/data/images/underline.png</iconset>
</property> </property>
<property name="text"> <property name="text">
@ -770,7 +772,7 @@
</action> </action>
<action name="actionOverline"> <action name="actionOverline">
<property name="icon"> <property name="icon">
<iconset resource="data.qrc"> <iconset>
<normaloff>:/data/images/data/images/overline.png</normaloff>:/data/images/data/images/overline.png</iconset> <normaloff>:/data/images/data/images/overline.png</normaloff>:/data/images/data/images/overline.png</iconset>
</property> </property>
<property name="text"> <property name="text">
@ -779,7 +781,7 @@
</action> </action>
<action name="actionSize"> <action name="actionSize">
<property name="icon"> <property name="icon">
<iconset resource="data.qrc"> <iconset>
<normaloff>:/data/images/data/images/font-size.png</normaloff>:/data/images/data/images/font-size.png</iconset> <normaloff>:/data/images/data/images/font-size.png</normaloff>:/data/images/data/images/font-size.png</iconset>
</property> </property>
<property name="text"> <property name="text">
@ -788,7 +790,7 @@
</action> </action>
<action name="actionFont"> <action name="actionFont">
<property name="icon"> <property name="icon">
<iconset resource="data.qrc"> <iconset>
<normaloff>:/data/images/data/images/font.png</normaloff>:/data/images/data/images/font.png</iconset> <normaloff>:/data/images/data/images/font.png</normaloff>:/data/images/data/images/font.png</iconset>
</property> </property>
<property name="text"> <property name="text">
@ -839,9 +841,20 @@
<string>Overline</string> <string>Overline</string>
</property> </property>
</action> </action>
<action name="actionExit">
<property name="text">
<string>Exit</string>
</property>
<property name="shortcut">
<string>Ctrl+Q</string>
</property>
</action>
<action name="actionWeb">
<property name="text">
<string>Web</string>
</property>
</action>
</widget> </widget>
<resources> <resources/>
<include location="data.qrc"/>
</resources>
<connections/> <connections/>
</ui> </ui>

BIN
pages/images/logo.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 168 KiB

View File

@ -106,11 +106,15 @@ Step::Step( QJsonObject &in)
texte.append(textes); texte.append(textes);
} }
} }
} }
void Step::setLatitude(float lat) {
latitude = lat;
}
void Step::setLongitude(float lon) {
longitude = lon;
}
void Step::setLatitude(int degree, float minute, QChar NS) void Step::setLatitude(int degree, float minute, QChar NS)

2
step.h
View File

@ -22,6 +22,8 @@ public:
Step(QJsonObject &in); Step(QJsonObject &in);
void setLatitude(int degree,float minute,QChar NS); void setLatitude(int degree,float minute,QChar NS);
void setLongitude(int degree,float minute,QChar EW); void setLongitude(int degree,float minute,QChar EW);
void setLatitude(float lat);
void setLongitude(float lon);
QString getTitle() const; QString getTitle() const;
float getLatitude() const; float getLatitude() const;
float getLongitude() const; float getLongitude() const;

View File

@ -8,7 +8,7 @@ Web::Web(const QList<Path*>& list) : list(list)
void Web::siteHtml() void Web::siteHtml()
{ {
std::ofstream file("index.html"); std::ofstream file("./data/HTML-exports/index.html");
if (!file.is_open()) { if (!file.is_open()) {
qWarning("Impossible d'ouvrir le fichier index.html"); qWarning("Impossible d'ouvrir le fichier index.html");
return; return;