@@ -20,19 +20,22 @@ SOURCES += main.cpp\ | |||
produititem.cpp \ | |||
infosproduitdialog.cpp \ | |||
gestionmagasinsdialog.cpp \ | |||
aboutdialog.cpp | |||
aboutdialog.cpp \ | |||
scannerdialog.cpp | |||
HEADERS += mainwindow.h \ | |||
produititem.h \ | |||
infosproduitdialog.h \ | |||
gestionmagasinsdialog.h \ | |||
aboutdialog.h | |||
aboutdialog.h \ | |||
scannerdialog.h | |||
FORMS += mainwindow.ui \ | |||
produititem.ui \ | |||
infosproduitdialog.ui \ | |||
gestionmagasinsdialog.ui \ | |||
aboutdialog.ui | |||
aboutdialog.ui \ | |||
scannerdialog.ui | |||
RESOURCES += \ | |||
resources.qrc | |||
@@ -1,6 +1,6 @@ | |||
<?xml version="1.0" encoding="UTF-8"?> | |||
<!DOCTYPE QtCreatorProject> | |||
<!-- Written by QtCreator 3.1.0, 2014-05-29T09:34:22. --> | |||
<!-- Written by QtCreator 3.1.0, 2014-06-03T13:28:18. --> | |||
<qtcreator> | |||
<data> | |||
<variable>ProjectExplorer.Project.ActiveTarget</variable> | |||
@@ -13,12 +13,7 @@ GestionMagasinsDialog::GestionMagasinsDialog(QWidget *parent) : | |||
{ | |||
ui->setupUi(this); | |||
QDir dir(QDir::homePath()+"/.deuchnord-hermes"); | |||
if(!dir.exists()) | |||
dir.mkdir(QDir::homePath()+"/.deuchnord-hermes"); | |||
QFile fichierMagasins(QDir::homePath()+"/.deuchnord-hermes/manufacturers.xml"); | |||
QFile fichierMagasins(QDir::homePath()+"/deuchnord-hermes/manufacturers.xml"); | |||
fichierMagasins.open(QFile::ReadOnly); | |||
if(fichierMagasins.isOpen()) | |||
{ | |||
@@ -69,7 +64,12 @@ void GestionMagasinsDialog::on_btnAjoutMagasin_clicked() | |||
void GestionMagasinsDialog::on_btnSupprMagasin_clicked() | |||
{ | |||
delete ui->listMagasins->currentItem(); | |||
if(QMessageBox::question(this, "Supprimer "+ui->listMagasins->currentItem()->text()+" ?", "Voulez-vous vraiment supprimer ce magasin ?<br />Tous les produits associés perdront cette information, <em>même si vous cliquez sur Annuler plus tard</em>.", QMessageBox::Yes|QMessageBox::No) == QMessageBox::Yes) | |||
{ | |||
int row = ui->listMagasins->currentRow(); | |||
delete ui->listMagasins->currentItem(); | |||
emit magasinDeleted(row); | |||
} | |||
} | |||
void GestionMagasinsDialog::on_listMagasins_currentRowChanged() | |||
@@ -94,7 +94,7 @@ void GestionMagasinsDialog::on_buttonBox_accepted() | |||
manufacturer.appendChild(nomMagasin); | |||
} | |||
QFile fileManu(QDir::homePath()+"/.deuchnord-hermes/manufacturers.xml"); | |||
QFile fileManu(QDir::homePath()+"/deuchnord-hermes/manufacturers.xml"); | |||
if(fileManu.open(QFile::WriteOnly)) | |||
{ | |||
fileManu.write(dom.toString().toUtf8()); | |||
@@ -21,6 +21,9 @@ public slots: | |||
void on_listMagasins_currentRowChanged(); | |||
void on_buttonBox_accepted(); | |||
signals: | |||
void magasinDeleted(int indexMagasin); | |||
private: | |||
Ui::GestionMagasinsDialog *ui; | |||
}; | |||
@@ -19,8 +19,11 @@ InfosProduitDialog::InfosProduitDialog(QWidget *parent, QWidget *mainWindow, QSt | |||
ui->setupUi(this); | |||
parentWidget = parent; | |||
// On ajoute une ligne vide, conrrespondant à un magasin non reseigné. Il correspond à un indexMagasin de -1 | |||
ui->comboMagasin->addItem(""); | |||
// Récupération de la liste des magasins enregistrés | |||
QFile fichierMagasins(QDir::homePath()+"/.deuchnord-hermes/manufacturers.xml"); | |||
QFile fichierMagasins(QDir::homePath()+"/deuchnord-hermes/manufacturers.xml"); | |||
fichierMagasins.open(QFile::ReadOnly); | |||
if(fichierMagasins.isOpen()) | |||
{ | |||
@@ -55,7 +58,7 @@ InfosProduitDialog::InfosProduitDialog(QWidget *parent, QWidget *mainWindow, QSt | |||
ui->checkGarantieAVie->setChecked(true); | |||
} | |||
ui->comboMagasin->setCurrentIndex(indexMagasin); | |||
ui->comboMagasin->setCurrentIndex(indexMagasin+1); | |||
ui->checkSAV->setChecked(enSAV); | |||
ui->image->setPixmap(image); | |||
this->image = image; | |||
@@ -115,6 +118,41 @@ void InfosProduitDialog::on_btnAjoutFacture_clicked() | |||
} | |||
} | |||
void InfosProduitDialog::on_btnScannerFacture_clicked() | |||
{ | |||
// Ne fonctionne que sous Linux pour le moment. Dépendances : libsane et imagemagick | |||
#ifdef Q_OS_LINUX | |||
ScannerDialog *dialog = new ScannerDialog(this); | |||
dialog->setModal(true); | |||
dialog->show(); | |||
connect(dialog, SIGNAL(accepted()), SLOT(on_factureScanned())); | |||
#else | |||
QMessageBox::warning(this, "Fonction indisponible", "Cette fonction n'est pas disponible pour votre système actuellement.\nDésolé pour la gêne."); | |||
#endif | |||
} | |||
void InfosProduitDialog::on_factureScanned() | |||
{ | |||
QString fileName = QDir::tempPath()+"/output.pdf"; | |||
QFile::rename(fileName, QDir::tempPath()+"/Facture.pdf"); | |||
fileName = QDir::tempPath()+"/Facture.pdf"; | |||
QFile fichier(fileName); | |||
QFileInfo infoFile(fichier.fileName()); | |||
fichier.open(QFile::ReadOnly); | |||
if(fichier.isReadable()) | |||
{ | |||
QByteArray contenuFichier = fichier.readAll(); | |||
fichier.close(); | |||
facturePDF.insert(infoFile.fileName(), contenuFichier); | |||
ui->listFactures->addItem(infoFile.fileName()); | |||
} | |||
else | |||
QMessageBox::critical(this, "Erreur", "Une erreur s'est produite lors de l'ajout de votre document numérisé.\nVous pouvez toujours ajouter le document manuellement, il se trouve ici : "+fileName); | |||
} | |||
void InfosProduitDialog::on_listFactures_currentRowChanged() | |||
{ | |||
ui->btnSupprFacture->setEnabled(true); | |||
@@ -164,6 +202,41 @@ void InfosProduitDialog::on_btnAjoutGarantie_clicked() | |||
} | |||
} | |||
void InfosProduitDialog::on_btnScannerGarantie_clicked() | |||
{ | |||
// Ne fonctionne que sous Linux pour le moment. Dépendances : libsane et imagemagick | |||
#ifdef Q_OS_LINUX | |||
ScannerDialog *dialog = new ScannerDialog(this); | |||
dialog->setModal(true); | |||
dialog->show(); | |||
connect(dialog, SIGNAL(accepted()), SLOT(on_garantieScanned())); | |||
#else | |||
QMessageBox::warning(this, "Fonction indisponible", "Cette fonction n'est pas disponible pour votre système actuellement.\nDésolé pour la gêne."); | |||
#endif | |||
} | |||
void InfosProduitDialog::on_garantieScanned() | |||
{ | |||
QString fileName = QDir::tempPath()+"/output.pdf"; | |||
QFile::rename(fileName, QDir::tempPath()+"/Garantie.pdf"); | |||
fileName = QDir::tempPath()+"/Garantie.pdf"; | |||
QFile fichier(fileName); | |||
QFileInfo infoFile(fichier.fileName()); | |||
fichier.open(QFile::ReadOnly); | |||
if(fichier.isReadable()) | |||
{ | |||
QByteArray contenuFichier = fichier.readAll(); | |||
fichier.close(); | |||
garantiePDF.insert(infoFile.fileName(), contenuFichier); | |||
ui->listGaranties->addItem(infoFile.fileName()); | |||
} | |||
else | |||
QMessageBox::critical(this, "Erreur", "Une erreur s'est produite lors de l'ajout de votre document numérisé.\nVous pouvez toujours ajouter le document manuellement, il se trouve ici : "+fileName); | |||
} | |||
void InfosProduitDialog::on_listGaranties_currentRowChanged() | |||
{ | |||
ui->btnSupprGarantie->setEnabled(true); | |||
@@ -205,7 +278,7 @@ void InfosProduitDialog::on_buttonBox_accepted() | |||
getParentItem()->setDateFinGarantie(QDate(1970, 1, 1)); | |||
getParentItem()->setImage(this->image); | |||
getParentItem()->setMagasin(ui->comboMagasin->currentIndex()); | |||
getParentItem()->setMagasin(ui->comboMagasin->currentIndex()-1); | |||
getParentItem()->setEnSAV(ui->checkSAV->isChecked()); | |||
getParentItem()->setFactures(this->facturePDF); | |||
getParentItem()->setGaranties(this->garantiePDF); | |||
@@ -6,7 +6,9 @@ | |||
#include <QHash> | |||
#include <QListWidget> | |||
#include <QPixmap> | |||
#include "produititem.h" | |||
#include "scannerdialog.h" | |||
namespace Ui { | |||
class InfosProduitDialog; | |||
@@ -23,25 +25,27 @@ public: | |||
~InfosProduitDialog(); | |||
public slots: | |||
void on_checkGarantieAVie_toggled(bool checked); | |||
// Image | |||
void on_btnImageParcourir_clicked(); | |||
void on_btnImageSupprimer_clicked(); | |||
// Factures | |||
void on_btnAjoutFacture_clicked(); | |||
void on_btnScannerFacture_clicked(); | |||
void on_factureScanned(); | |||
void on_listFactures_currentRowChanged(); | |||
void on_listFactures_itemDoubleClicked(QListWidgetItem *item); | |||
void on_btnSupprFacture_clicked(); | |||
// Garanties | |||
void on_btnAjoutGarantie_clicked(); | |||
void on_btnScannerGarantie_clicked(); | |||
void on_garantieScanned(); | |||
void on_listGaranties_currentRowChanged(); | |||
void on_listGaranties_itemDoubleClicked(QListWidgetItem *item); | |||
void on_btnSupprGarantie_clicked(); | |||
// Boutons du bas | |||
void on_buttonBox_accepted(); | |||
private slots: | |||
void on_checkGarantieAVie_toggled(bool checked); | |||
private: | |||
QPixmap image; | |||
Ui::InfosProduitDialog *ui; | |||
@@ -196,6 +196,20 @@ Vous pouvez ouvrir une facture ou une garantie en double-cliquant dessus.</strin | |||
</property> | |||
</widget> | |||
</item> | |||
<item> | |||
<widget class="QPushButton" name="btnScannerFacture"> | |||
<property name="toolTip"> | |||
<string>Numériser une facture et l'ajouter</string> | |||
</property> | |||
<property name="text"> | |||
<string/> | |||
</property> | |||
<property name="icon"> | |||
<iconset resource="resources.qrc"> | |||
<normaloff>:/icons/scanner.png</normaloff>:/icons/scanner.png</iconset> | |||
</property> | |||
</widget> | |||
</item> | |||
<item> | |||
<widget class="QPushButton" name="btnSupprFacture"> | |||
<property name="enabled"> | |||
@@ -259,6 +273,20 @@ Vous pouvez ouvrir une facture ou une garantie en double-cliquant dessus.</strin | |||
</property> | |||
</widget> | |||
</item> | |||
<item> | |||
<widget class="QPushButton" name="btnScannerGarantie"> | |||
<property name="toolTip"> | |||
<string>Numériser une garantie et l'ajouter</string> | |||
</property> | |||
<property name="text"> | |||
<string/> | |||
</property> | |||
<property name="icon"> | |||
<iconset resource="resources.qrc"> | |||
<normaloff>:/icons/scanner.png</normaloff>:/icons/scanner.png</iconset> | |||
</property> | |||
</widget> | |||
</item> | |||
<item> | |||
<widget class="QPushButton" name="btnSupprGarantie"> | |||
<property name="enabled"> | |||
@@ -30,7 +30,7 @@ MainWindow::MainWindow(QWidget *parent) : | |||
{ | |||
ui->setupUi(this); | |||
version = "0.2"; | |||
version = "0.3"; | |||
searchBox = new QLineEdit(this); | |||
searchBox->addAction(QIcon(":/icons/icon-search.png"), QLineEdit::LeadingPosition); | |||
@@ -43,9 +43,19 @@ MainWindow::MainWindow(QWidget *parent) : | |||
ui->mainToolBar->addSeparator(); | |||
ui->mainToolBar->addWidget(searchBox); | |||
// Récupération de la configuration | |||
// Migration des fichiers si l'utilisateur vient d'une version antérieure à la 0.3 | |||
QDir dir(QDir::homePath()+"/.deuchnord-hermes"); | |||
if(dir.exists(QDir::homePath()+"/.deuchnord-hermes")) | |||
dir.rename(QDir::homePath()+"/.deuchnord-hermes", QDir::homePath()+"/deuchnord-hermes"); | |||
if(QFile::exists(QDir::homePath()+"/hermes.hrms")) | |||
QFile::rename(QDir::homePath()+"/hermes.hrms", QDir::homePath()+"/deuchnord-hermes/products.hrms"); | |||
dir = QDir(QDir::homePath()+"/deuchnord-hermes"); | |||
if(!dir.exists(QDir::homePath()+"/deuchnord-hermes")) | |||
dir.mkdir(QDir::homePath()+"/deuchnord-hermes"); | |||
QFile saveFile(QDir::homePath()+"/hermes.hrms"); | |||
// Récupération de la configuration | |||
QFile saveFile(QDir::homePath()+"/deuchnord-hermes/products.hrms"); | |||
QDataStream content(&saveFile); | |||
content.setVersion(QDataStream::Qt_5_0); | |||
@@ -122,7 +132,7 @@ void MainWindow::searchProduit(QString search) | |||
void MainWindow::on_actionNouveauProduit_triggered() | |||
{ | |||
QFile fichierMagasins(QDir::homePath()+"/.deuchnord-hermes/manufacturers.xml"); | |||
QFile fichierMagasins(QDir::homePath()+"/deuchnord-hermes/manufacturers.xml"); | |||
fichierMagasins.open(QFile::ReadOnly); | |||
int nbMagasins = 0; | |||
@@ -200,6 +210,21 @@ void MainWindow::on_actionGererMagasins_triggered() | |||
GestionMagasinsDialog *dialog = new GestionMagasinsDialog(this); | |||
dialog->setModal(true); | |||
dialog->show(); | |||
connect(dialog, SIGNAL(magasinDeleted(int)), SLOT(magasinDeleted(int))); | |||
} | |||
void MainWindow::magasinDeleted(int indexMagasin) | |||
{ | |||
// Si un magasin a été supprimé, on change le magasin pour une valeur vide. | |||
for(int i = 0; i < ui->listeProduits->count(); i++) | |||
{ | |||
ProduitItem* item = (ProduitItem*) ui->listeProduits->itemWidget(ui->listeProduits->item(i)); | |||
if(item->getMagasin() == indexMagasin) | |||
item->setMagasin(-1); | |||
if(item->getMagasin() > indexMagasin) | |||
item->setMagasin(item->getMagasin()-1); | |||
} | |||
} | |||
QListWidgetItem* MainWindow::ajouterProduit(ProduitItem *produit) | |||
@@ -249,7 +274,7 @@ void MainWindow::updateStatusMessage() | |||
MainWindow::~MainWindow() | |||
{ | |||
// Enregistrement de la configuration | |||
QFile saveFile(QDir::homePath()+"/hermes.hrms"); | |||
QFile saveFile(QDir::homePath()+"/deuchnord-hermes/products.hrms"); | |||
QDataStream content(&saveFile); | |||
content.setVersion(QDataStream::Qt_5_0); | |||
QList<ProduitInfo> listProd; | |||
@@ -29,6 +29,7 @@ public slots: | |||
void on_actionNouveauProduit_triggered(); | |||
void on_actionSupprimerProduit_triggered(bool dontAskConfirm = true); | |||
void on_actionGererMagasins_triggered(); | |||
void magasinDeleted(int indexMagasin); | |||
void on_actionAPropos_triggered(); | |||
void on_actionAide_triggered(); | |||
void on_actionReportBug_triggered(); | |||
@@ -88,6 +88,11 @@ void ProduitItem::setImage(QPixmap image) | |||
ui->image->setPixmap(image); | |||
} | |||
int ProduitItem::getMagasin() | |||
{ | |||
return this->indexMagasin; | |||
} | |||
void ProduitItem::setMagasin(int index) | |||
{ | |||
this->indexMagasin = index; | |||
@@ -52,6 +52,8 @@ public: | |||
void setFactures(QHash<QString, QByteArray> factures); | |||
void setGaranties(QHash<QString, QByteArray> garanties); | |||
int getMagasin(); | |||
void updateDescription(); | |||
void openDialog(bool deleteOnCancel = false); | |||
@@ -7,5 +7,6 @@ | |||
<file>remove.png</file> | |||
<file>add.png</file> | |||
<file>icon-search.png</file> | |||
<file>scanner.png</file> | |||
</qresource> | |||
</RCC> |
@@ -0,0 +1,93 @@ | |||
#include "scannerdialog.h" | |||
#include "ui_scannerdialog.h" | |||
#include <QDir> | |||
#include <QDesktopServices> | |||
#include <QUrl> | |||
#include <QProcess> | |||
#include <QMessageBox> | |||
#include <iostream> | |||
ScannerDialog::ScannerDialog(QWidget *parent) : | |||
QDialog(parent), | |||
ui(new Ui::ScannerDialog) | |||
{ | |||
ui->setupUi(this); | |||
ui->progressBar->hide(); | |||
} | |||
ScannerDialog::~ScannerDialog() | |||
{ | |||
delete ui; | |||
} | |||
void ScannerDialog::on_btnTest_clicked() | |||
{ | |||
#ifdef Q_OS_LINUX | |||
ui->btnTest->setEnabled(false); | |||
ui->btnScan->setEnabled(false); | |||
ui->btnAnnuler->setEnabled(false); | |||
QProcess* process = new QProcess(); | |||
process->setStandardOutputFile(QDir::tempPath() + "/test.pnm"); | |||
process->start("scanimage"); | |||
ui->progressBar->show(); | |||
connect(process, SIGNAL(finished(int)), SLOT(scanTestFinished(int))); | |||
#endif | |||
} | |||
void ScannerDialog::scanTestFinished(int r) | |||
{ | |||
ui->progressBar->hide(); | |||
ui->btnTest->setEnabled(true); | |||
ui->btnScan->setEnabled(true); | |||
ui->btnAnnuler->setEnabled(true); | |||
std::string s = "convert " + QDir::tempPath().toStdString() + "/test.pnm " + QDir::tempPath().toStdString() + "/test.pdf"; | |||
if(r == 0) | |||
{ | |||
int c = system(s.c_str()); | |||
if(c == 0) | |||
QDesktopServices::openUrl(QUrl("file://"+QDir::tempPath()+"/test.pdf")); | |||
else | |||
QMessageBox::critical(this, "Erreur", "Votre document a pu être numérisé, mais un problème est survenu lors de son traitement.\nErreur "+QString::number(c)); | |||
} | |||
else | |||
QMessageBox::critical(this, "Erreur", "Impossible de communiquer avec votre scanner. Vérifiez qu'il est bien relié à l'ordinateur' et qu'il est sous tension, puis réessayez.\nSi le problème persiste, il est probable que votre scanner ne soit pas pris en charge."); | |||
} | |||
void ScannerDialog::on_btnScan_clicked() | |||
{ | |||
#ifdef Q_OS_LINUX | |||
ui->btnTest->setEnabled(false); | |||
ui->btnScan->setEnabled(false); | |||
ui->btnAnnuler->setEnabled(false); | |||
QProcess* process = new QProcess(); | |||
process->setStandardOutputFile(QDir::tempPath() + "/output.pnm"); | |||
process->start("scanimage --resolution 200"); | |||
ui->progressBar->show(); | |||
connect(process, SIGNAL(finished(int)), SLOT(scanFinished(int))); | |||
#endif | |||
} | |||
void ScannerDialog::scanFinished(int r) | |||
{ | |||
ui->progressBar->hide(); | |||
std::string s = "convert " + QDir::tempPath().toStdString() + "/output.pnm " + QDir::tempPath().toStdString() + "/output.pdf"; | |||
if(r == 0) | |||
{ | |||
int c = system(s.c_str()); | |||
if(c != 0) | |||
QMessageBox::critical(this, "Erreur", "Votre document a pu être numérisé, mais un problème est survenu lors de son traitement.\nErreur "+QString::number(c)); | |||
else | |||
this->accept(); | |||
} | |||
else | |||
QMessageBox::critical(this, "Erreur", "Impossible de communiquer avec votre scanner. Vérifiez qu'il est bien relié à l'ordinateur' et qu'il est sous tension, puis réessayez.\nSi le problème persiste, il est probable que votre scanner ne soit pas pris en charge."); | |||
} |
@@ -0,0 +1,28 @@ | |||
#ifndef SCANNERDIALOG_H | |||
#define SCANNERDIALOG_H | |||
#include <QDialog> | |||
namespace Ui { | |||
class ScannerDialog; | |||
} | |||
class ScannerDialog : public QDialog | |||
{ | |||
Q_OBJECT | |||
public: | |||
explicit ScannerDialog(QWidget *parent = 0); | |||
~ScannerDialog(); | |||
private slots: | |||
void on_btnTest_clicked(); | |||
void scanTestFinished(int r); | |||
void on_btnScan_clicked(); | |||
void scanFinished(int r); | |||
private: | |||
Ui::ScannerDialog *ui; | |||
}; | |||
#endif // SCANNERDIALOG_H |
@@ -0,0 +1,137 @@ | |||
<?xml version="1.0" encoding="UTF-8"?> | |||
<ui version="4.0"> | |||
<class>ScannerDialog</class> | |||
<widget class="QDialog" name="ScannerDialog"> | |||
<property name="geometry"> | |||
<rect> | |||
<x>0</x> | |||
<y>0</y> | |||
<width>649</width> | |||
<height>246</height> | |||
</rect> | |||
</property> | |||
<property name="windowTitle"> | |||
<string>Dialog</string> | |||
</property> | |||
<layout class="QVBoxLayout" name="verticalLayout"> | |||
<item> | |||
<widget class="QLabel" name="label"> | |||
<property name="sizePolicy"> | |||
<sizepolicy hsizetype="Preferred" vsizetype="Maximum"> | |||
<horstretch>0</horstretch> | |||
<verstretch>0</verstretch> | |||
</sizepolicy> | |||
</property> | |||
<property name="text"> | |||
<string><html><head/><body><p><span style=" font-size:xx-large; font-weight:600;">Numériser un document</span></p></body></html></string> | |||
</property> | |||
</widget> | |||
</item> | |||
<item> | |||
<widget class="QLabel" name="label_2"> | |||
<property name="sizePolicy"> | |||
<sizepolicy hsizetype="Preferred" vsizetype="Maximum"> | |||
<horstretch>0</horstretch> | |||
<verstretch>0</verstretch> | |||
</sizepolicy> | |||
</property> | |||
<property name="text"> | |||
<string><html><head/><body><p>Cette fenêtre permet de numériser votre document rapidement.</p><p>Placez votre document dans votre scanner, puis cliquez sur le bouton <span style=" font-style:italic;">Numériser</span> ci-dessous. Vous pouvez également effectuer un essai pour vérifier que votre document est bien placé.</p><p>Remarque : la numérisation de test est effectuée en basse résolution. Elle ne sera pas enregistrée sur Hermès.</p></body></html></string> | |||
</property> | |||
<property name="alignment"> | |||
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop</set> | |||
</property> | |||
<property name="wordWrap"> | |||
<bool>true</bool> | |||
</property> | |||
</widget> | |||
</item> | |||
<item> | |||
<widget class="QProgressBar" name="progressBar"> | |||
<property name="minimum"> | |||
<number>0</number> | |||
</property> | |||
<property name="maximum"> | |||
<number>0</number> | |||
</property> | |||
<property name="value"> | |||
<number>-1</number> | |||
</property> | |||
<property name="textVisible"> | |||
<bool>false</bool> | |||
</property> | |||
</widget> | |||
</item> | |||
<item> | |||
<spacer name="verticalSpacer"> | |||
<property name="orientation"> | |||
<enum>Qt::Vertical</enum> | |||
</property> | |||
<property name="sizeHint" stdset="0"> | |||
<size> | |||
<width>20</width> | |||
<height>40</height> | |||
</size> | |||
</property> | |||
</spacer> | |||
</item> | |||
<item> | |||
<layout class="QHBoxLayout" name="horizontalLayout"> | |||
<item> | |||
<spacer name="horizontalSpacer"> | |||
<property name="orientation"> | |||
<enum>Qt::Horizontal</enum> | |||
</property> | |||
<property name="sizeHint" stdset="0"> | |||
<size> | |||
<width>40</width> | |||
<height>20</height> | |||
</size> | |||
</property> | |||
</spacer> | |||
</item> | |||
<item> | |||
<widget class="QPushButton" name="btnTest"> | |||
<property name="text"> | |||
<string>Test</string> | |||
</property> | |||
</widget> | |||
</item> | |||
<item> | |||
<widget class="QPushButton" name="btnScan"> | |||
<property name="text"> | |||
<string>Numériser</string> | |||
</property> | |||
</widget> | |||
</item> | |||
<item> | |||
<widget class="QPushButton" name="btnAnnuler"> | |||
<property name="text"> | |||
<string>Annuler</string> | |||
</property> | |||
</widget> | |||
</item> | |||
</layout> | |||
</item> | |||
</layout> | |||
</widget> | |||
<resources/> | |||
<connections> | |||
<connection> | |||
<sender>btnAnnuler</sender> | |||
<signal>clicked()</signal> | |||
<receiver>ScannerDialog</receiver> | |||
<slot>reject()</slot> | |||
<hints> | |||
<hint type="sourcelabel"> | |||
<x>586</x> | |||
<y>218</y> | |||
</hint> | |||
<hint type="destinationlabel"> | |||
<x>640</x> | |||
<y>182</y> | |||
</hint> | |||
</hints> | |||
</connection> | |||
</connections> | |||
</ui> |