Ajout d'un panneau de configuration avec une premiere page pour parametrer les nouveaux schemas

Amelioration de la gestion de la date du cartouche
Mise a jour du --help
Mise a jour des traductions


git-svn-id: svn+ssh://svn.tuxfamily.org/svnroot/qet/qet/trunk@215 bfdf4180-ca20-0410-9c96-a3a8aa849046
This commit is contained in:
xavierqet 2007-11-18 00:22:19 +00:00
parent f0edf251d6
commit 15185bbc4a
14 changed files with 814 additions and 316 deletions

89
configdialog.cpp Normal file
View File

@ -0,0 +1,89 @@
#include "configdialog.h"
#include "qetapp.h"
/**
Constructeur
@param parent QWidget parent
*/
ConfigDialog::ConfigDialog(QWidget *parent) : QDialog(parent) {
setWindowTitle(tr("Configurer QElectroTech"));
setMinimumSize(900, 400);
// liste des pages
pages_list = new QListWidget();
pages_list -> setViewMode(QListView::IconMode);
pages_list -> setIconSize(QSize(48, 48));
pages_list -> setMovement(QListView::Static);
pages_list -> setMinimumWidth(135);
pages_list -> setMaximumWidth(135);
pages_list -> setSpacing(4);
// pages
pages_widget = new QStackedWidget();
addPage(new NewDiagramPage());
buildPagesList();
// boutons
buttons = new QDialogButtonBox(QDialogButtonBox::Ok|QDialogButtonBox::Cancel);
// layouts
QHBoxLayout *hlayout1 = new QHBoxLayout();
hlayout1 -> addWidget(pages_list);
hlayout1 -> addWidget(pages_widget);
QVBoxLayout *vlayout1 = new QVBoxLayout();
vlayout1 -> addLayout(hlayout1);
vlayout1 -> addWidget(buttons);
setLayout(vlayout1);
// connexion signaux / slots
connect(buttons, SIGNAL(accepted()), this, SLOT(applyConf()));
connect(buttons, SIGNAL(rejected()), this, SLOT(reject()));
connect(pages_list, SIGNAL(currentItemChanged(QListWidgetItem *, QListWidgetItem *)), this, SLOT(changePage(QListWidgetItem *, QListWidgetItem*)));
}
/// Destructeur
ConfigDialog::~ConfigDialog() {
}
/**
Gere les changements de page dans le dialogue de configuration
*/
void ConfigDialog::changePage(QListWidgetItem *current, QListWidgetItem *previous) {
if (!current) current = previous;
pages_widget -> setCurrentIndex(pages_list -> row(current));
}
/**
Construit la liste des pages sur la gauche
*/
void ConfigDialog::buildPagesList() {
pages_list -> clear();
foreach(ConfigPage *page, pages) {
QListWidgetItem *new_button = new QListWidgetItem(pages_list);
new_button -> setIcon(page -> icon());
new_button -> setText(page -> title());
new_button -> setTextAlignment(Qt::AlignHCenter);
new_button -> setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled);
}
}
/**
Applique la configuration de toutes les pages
*/
void ConfigDialog::applyConf() {
foreach(ConfigPage *page, pages) {
page -> applyConf();
}
accept();
}
/**
Ajoute une page au dialogue de configuration
*/
void ConfigDialog::addPage(ConfigPage *page) {
if (!page || pages.contains(page)) return;
pages << page;
pages_widget -> addWidget(page);
}

39
configdialog.h Normal file
View File

@ -0,0 +1,39 @@
#ifndef CONFIG_DIALOG_H
#define CONFIG_DIALOG_H
#include <QDialog>
#include "configpages.h"
class QListWidget;
class QListWidgetItem;
class QStackedWidget;
class QDialogButtonBox;
/**
Cette classe represente le dialogue de configuration de QElectroTech.
Il s'agit d'un dialogue affichant des "pages de configuration".
Chaque page de configuration doit fournir une icone et un titre.
*/
class ConfigDialog : public QDialog {
Q_OBJECT
// constructeurs, destructeur
public:
ConfigDialog(QWidget * = 0);
virtual ~ConfigDialog();
private:
ConfigDialog(const ConfigDialog &);
// methodes
public slots:
void changePage(QListWidgetItem *, QListWidgetItem *);
void applyConf();
void addPage(ConfigPage *);
private:
void buildPagesList();
// attributs
private:
QListWidget *pages_list;
QStackedWidget *pages_widget;
QDialogButtonBox *buttons;
QList<ConfigPage *> pages;
};
#endif

164
configpages.cpp Normal file
View File

@ -0,0 +1,164 @@
#include "configpages.h"
#include "qetapp.h"
/**
Constructeur
@param parent QWidget parent
*/
NewDiagramPage::NewDiagramPage(QWidget *parent) : ConfigPage(parent) {
// acces a la configuration de QElectroTech
QSettings &settings = QETApp::settings();
// recupere les dimensions du schema
int columns_count_value = settings.value("diagrameditor/defaultcols", 15).toInt();
int columns_width_value = qRound(settings.value("diagrameditor/defaultcolsize", 50.0).toDouble());
int columns_height_value = qRound(settings.value("diagrameditor/defaultheight", 500.0).toDouble());
QVBoxLayout *vlayout1 = new QVBoxLayout();
QLabel *title = new QLabel(tr("Nouveau sch\351ma"));
vlayout1 -> addWidget(title);
QFrame *horiz_line = new QFrame();
horiz_line -> setFrameShape(QFrame::HLine);
vlayout1 -> addWidget(horiz_line);
QHBoxLayout *hlayout1 = new QHBoxLayout();
QVBoxLayout *vlayout2 = new QVBoxLayout();
QGroupBox *diagram_size_box = new QGroupBox(tr("Dimensions du sch\351ma"));
diagram_size_box -> setMinimumWidth(300);
QGridLayout *diagram_size_box_layout = new QGridLayout(diagram_size_box);
QLabel *ds1 = new QLabel(tr("Colonnes :"));
columns_count = new QSpinBox(diagram_size_box);
columns_count -> setMinimum(3); /// @todo methode statique pour recuperer ca
columns_count -> setValue(columns_count_value);
columns_width = new QSpinBox(diagram_size_box);
columns_width -> setMinimum(1);
columns_width -> setSingleStep(10);
columns_width -> setValue(columns_width_value);
columns_width -> setPrefix(tr("\327"));
columns_width -> setSuffix(tr("px"));
QLabel *ds2 = new QLabel(tr("Hauteur :"));
columns_height = new QSpinBox(diagram_size_box);
columns_height -> setRange(80, 10000); /// @todo methode statique pour recuperer ca
columns_height -> setSingleStep(80);
columns_height -> setValue(columns_height_value);
diagram_size_box_layout -> addWidget(ds1, 0, 0);
diagram_size_box_layout -> addWidget(columns_count, 0, 1);
diagram_size_box_layout -> addWidget(columns_width, 0, 2);
diagram_size_box_layout -> addWidget(ds2, 1, 0);
diagram_size_box_layout -> addWidget(columns_height, 1, 1);
QGroupBox *inset_infos = new QGroupBox(tr("Informations du cartouche"), this);
inset_infos -> setMinimumWidth(300);
inset_title = new QLineEdit(settings.value("diagrameditor/defaulttitle").toString(), this);
inset_author = new QLineEdit(settings.value("diagrameditor/defaultauthor").toString(), this);
QButtonGroup *date_policy_group = new QButtonGroup(this);
inset_no_date = new QRadioButton(tr("Pas de date"), this);
inset_current_date = new QRadioButton(tr("Date courante"), this);
inset_fixed_date = new QRadioButton(tr("Date fixe : "), this);
date_policy_group -> addButton(inset_no_date);
date_policy_group -> addButton(inset_current_date);
date_policy_group -> addButton(inset_fixed_date);
QString settings_date = settings.value("diagrameditor/defaultdate").toString();
QDate date_diagram;
if (settings_date == "now") {
date_diagram = QDate::currentDate();
inset_current_date -> setChecked(true);
} else if (settings_date.isEmpty() || settings_date == "null") {
date_diagram = QDate();
inset_no_date -> setChecked(true);
} else {
date_diagram = QDate::fromString(settings_date, "yyyyMMdd");
inset_fixed_date -> setChecked(true);
}
inset_date = new QDateEdit(date_diagram, this);
inset_date -> setEnabled(inset_fixed_date -> isChecked());
connect(inset_fixed_date, SIGNAL(toggled(bool)), inset_date, SLOT(setEnabled(bool)));
inset_date -> setCalendarPopup(true);
QGridLayout *layout_date = new QGridLayout();
layout_date -> addWidget(inset_no_date, 0, 0);
layout_date -> addWidget(inset_current_date, 1, 0);
layout_date -> addWidget(inset_fixed_date, 2, 0);
layout_date -> addWidget(inset_date, 2, 1);
inset_filename = new QLineEdit(settings.value("diagrameditor/defaultfilename").toString(), this);
inset_folio = new QLineEdit(settings.value("diagrameditor/defaultfolio").toString(), this);
QGridLayout *layout_champs = new QGridLayout(inset_infos);
layout_champs -> addWidget(new QLabel(tr("Titre : ")), 0, 0);
layout_champs -> addWidget(inset_title, 0, 1);
layout_champs -> addWidget(new QLabel(tr("Auteur : ")), 1, 0);
layout_champs -> addWidget(inset_author, 1, 1);
layout_champs -> addWidget(new QLabel(tr("Date : ")), 2, 0);
layout_champs -> addLayout(layout_date, 3, 1);
layout_champs -> addWidget(new QLabel(tr("Fichier : ")), 4, 0);
layout_champs -> addWidget(inset_filename, 4, 1);
layout_champs -> addWidget(new QLabel(tr("Folio : ")), 5, 0);
layout_champs -> addWidget(inset_folio, 5, 1);
// proprietes par defaut des conducteurs
ConductorProperties cp;
cp.fromSettings(settings, "diagrameditor/defaultconductor");
cpw = new ConductorPropertiesWidget(cp);
vlayout2 -> addWidget(diagram_size_box);
vlayout2 -> addWidget(inset_infos);
hlayout1 -> addLayout(vlayout2);
hlayout1 -> addWidget(cpw);
vlayout1 -> addLayout(hlayout1);
vlayout1 -> addStretch(1);
hlayout1 -> setAlignment(cpw, Qt::AlignTop);
setLayout(vlayout1);
}
/// Destructeur
NewDiagramPage::~NewDiagramPage() {
}
/**
Applique la configuration de cette page
*/
void NewDiagramPage::applyConf() {
QSettings &settings = QETApp::settings();
// dimensions des nouveaux schemas
settings.setValue("diagrameditor/defaultcols", columns_count -> value());
settings.setValue("diagrameditor/defaultcolsize", columns_width -> value());
settings.setValue("diagrameditor/defaultheight", columns_height -> value());
// proprietes du cartouche
settings.setValue("diagrameditor/defaulttitle", inset_title -> text());
settings.setValue("diagrameditor/defaultauthor", inset_author -> text());
settings.setValue("diagrameditor/defaultfilename", inset_filename -> text());
settings.setValue("diagrameditor/defaultfolio", inset_folio -> text());
QString date_setting_value;
if (inset_no_date -> isChecked()) date_setting_value = "null";
else if (inset_current_date -> isChecked()) date_setting_value = "now";
else date_setting_value = inset_date -> date().toString("yyyyMMdd");
settings.setValue("diagrameditor/defaultdate", date_setting_value);
// proprietes par defaut des conducteurs
cpw -> conductorProperties().toSettings(settings, "diagrameditor/defaultconductor");
}
/// @return l'icone de cette page
QIcon NewDiagramPage::icon() const {
return(QIcon(":/ico/conf_new_diagram.png"));
}
/// @return le titre de cette page
QString NewDiagramPage::title() const {
return(tr("Nouveau sch\351ma"));
}

53
configpages.h Normal file
View File

@ -0,0 +1,53 @@
#ifndef CONFIG_PAGES_H
#define CONFIG_PAGES_H
#include <QtGui>
#include "conductorpropertieswidget.h"
/**
Cette classe abstraite contient les methodes que toutes les pages de
configuration doivent implementer.
*/
class ConfigPage : public QWidget {
Q_OBJECT
public:
ConfigPage(QWidget *parent) : QWidget(parent) {};
virtual ~ConfigPage() {};
virtual void applyConf() = 0;
virtual QString title() const = 0;
virtual QIcon icon() const = 0;
};
/**
Cette classe represente la page de configuration des nouveaux schemas.
*/
class NewDiagramPage : public ConfigPage {
Q_OBJECT
// constructeurs, destructeur
public:
NewDiagramPage(QWidget * = 0);
virtual ~NewDiagramPage();
private:
NewDiagramPage(const NewDiagramPage &);
// methodes
public:
void applyConf();
QString title() const;
QIcon icon() const;
// attributs
public:
QSpinBox *columns_count;
QSpinBox *columns_width;
QSpinBox *columns_height;
QLineEdit *inset_title;
QLineEdit *inset_author;
QDateEdit *inset_date;
QLineEdit *inset_filename;
QLineEdit *inset_folio;
QRadioButton *inset_no_date;
QRadioButton *inset_current_date;
QRadioButton *inset_fixed_date;
ConductorPropertiesWidget *cpw;
};
#endif

View File

@ -504,29 +504,45 @@ void DiagramView::dialogEditInfos() {
QLineEdit *titre = new QLineEdit(inset.title, &popup);
QLineEdit *auteur = new QLineEdit(inset.author, &popup);
QDate date_diagram = QDate(inset.date);
if (date_diagram.isNull() || !date_diagram.isValid()) date_diagram = QDate::currentDate();
QDateEdit *date = new QDateEdit(date_diagram, &popup);
QButtonGroup *date_policy_group = new QButtonGroup(this);
QRadioButton *inset_no_date = new QRadioButton(tr("Pas de date"));
QRadioButton *inset_fixed_date = new QRadioButton(tr("Date fixe : "));
date_policy_group -> addButton(inset_no_date);
date_policy_group -> addButton(inset_fixed_date);
QDate date_diagram(inset.date);
inset_no_date -> setChecked(date_diagram.isNull());
inset_fixed_date -> setChecked(!date_diagram.isNull());
QDateEdit *date = new QDateEdit(date_diagram.isNull() ? QDate::currentDate() : date_diagram);
date -> setCalendarPopup(true);
date -> setEnabled(inset_fixed_date -> isChecked());
connect(inset_fixed_date, SIGNAL(toggled(bool)), date, SLOT(setEnabled(bool)));
QLineEdit *fichier = new QLineEdit(inset.filename, &popup);
QLineEdit *folio = new QLineEdit(inset.folio, &popup);
QGridLayout layout_champs(inset_infos);
QGridLayout *layout_date = new QGridLayout();
layout_date -> addWidget(inset_no_date, 0, 0);
layout_date -> addWidget(inset_fixed_date, 1, 0);
layout_date -> addWidget(date, 1, 1);
layout_champs.addWidget(new QLabel(tr("Titre : ")), 0, 0);
layout_champs.addWidget(titre, 0, 1);
layout_champs.addWidget(new QLabel(tr("Auteur : ")), 1, 0);
layout_champs.addWidget(auteur, 1, 1);
layout_champs.addWidget(new QLabel(tr("Date : ")), 2, 0);
layout_champs.addWidget(date, 2, 1);
layout_champs.addWidget(new QLabel(tr("Fichier : ")), 3, 0);
layout_champs.addWidget(fichier, 3, 1);
layout_champs.addWidget(new QLabel(tr("Folio : ")), 4, 0);
layout_champs.addWidget(folio, 4, 1);
layout_champs.addLayout(layout_date, 3, 1);
layout_champs.addWidget(new QLabel(tr("Fichier : ")), 4, 0);
layout_champs.addWidget(fichier, 4, 1);
layout_champs.addWidget(new QLabel(tr("Folio : ")), 5, 0);
layout_champs.addWidget(folio, 5, 1);
// boutons
QDialogButtonBox boutons(QDialogButtonBox::Ok | QDialogButtonBox::Cancel);
connect(&boutons, SIGNAL(accepted()), &popup, SLOT(accept()));
connect(&boutons, SIGNAL(rejected()), &popup, SLOT(accept()));
connect(&boutons, SIGNAL(rejected()), &popup, SLOT(reject()));
// ajout dans une disposition verticale
QVBoxLayout layout_v(&popup);
@ -538,7 +554,7 @@ void DiagramView::dialogEditInfos() {
InsetProperties new_inset;
new_inset.title = titre -> text();
new_inset.author = auteur -> text();
new_inset.date = date -> date();
new_inset.date = inset_no_date -> isChecked() ? QDate() : date -> date();
new_inset.filename = fichier -> text();
new_inset.folio = folio -> text();

BIN
ico/conf_new_diagram.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 237 B

Binary file not shown.

File diff suppressed because it is too large Load Diff

16
misc/qelectrotech.conf Normal file
View File

@ -0,0 +1,16 @@
[diagrameditor]
defaultauthor=
defaultcols=15
defaultcolsize=50.0
defaultconductorhasGround=true
defaultconductorhasNeutral=true
defaultconductorphases=1
defaultconductortext=_
defaultconductortype=multi
defaultdate=null
defaultfilename=
defaultfolio=
defaultheight=500.0
defaulttitle=
[elementeditor]

View File

@ -40,6 +40,8 @@ HEADERS += aboutqet.h \
conductorprofile.h \
conductorsegment.h \
conductorsegmentprofile.h \
configdialog.h \
configpages.h \
customelement.h \
diagram.h \
diagramview.h \
@ -102,6 +104,8 @@ SOURCES += aboutqet.cpp \
conductorprofile.cpp \
conductorsegment.cpp \
customelement.cpp \
configdialog.cpp \
configpages.cpp \
diagram.cpp \
diagramview.cpp \
element.cpp \

View File

@ -17,6 +17,7 @@
<file>ico/conductor.png</file>
<file>ico/conductor2.png</file>
<file>ico/conductor3.png</file>
<file>ico/conf_new_diagram.png</file>
<file>ico/configure.png</file>
<file>ico/copy.png</file>
<file>ico/cut.png</file>

View File

@ -556,6 +556,9 @@ bool QETApp::event(QEvent *e) {
}
}
/**
Affiche l'aide et l'usage sur la sortie standard
*/
void QETApp::printHelp() {
QString help(
tr("Usage : ") + QFileInfo(applicationFilePath()).fileName() + tr(" [options] [fichier]...\n\n") +
@ -566,15 +569,24 @@ void QETApp::printHelp() {
" --license Afficher la licence\n")
#ifdef QET_ALLOW_OVERRIDE_CED_OPTION
+ tr(" --common-elements-dir=DIR Definir le dossier de la collection d'elements\n")
#endif
#ifdef QET_ALLOW_OVERRIDE_CD_OPTION
+ tr(" --config-dir=DIR Definir le dossier de configuration\n")
#endif
);
std::cout << qPrintable(help) << std::endl;
}
/**
Affiche la version sur la sortie standard
*/
void QETApp::printVersion() {
std::cout << qPrintable(QET::version) << std::endl;
}
/**
Affiche la licence sur la sortie standard
*/
void QETApp::printLicense() {
std::cout << qPrintable(QET::license()) << std::endl;
}

View File

@ -5,6 +5,7 @@
#include "elementspanelwidget.h"
#include "aboutqet.h"
#include "conductorpropertieswidget.h"
#include "configdialog.h"
/**
constructeur
@ -315,6 +316,7 @@ void QETDiagramEditor::actions() {
connect(rotate_selection, SIGNAL(triggered()), this, SLOT(slot_rotate()) );
connect(fullscreen_on, SIGNAL(triggered()), this, SLOT(toggleFullScreen()) );
connect(fullscreen_off, SIGNAL(triggered()), this, SLOT(toggleFullScreen()) );
connect(configure, SIGNAL(triggered()), this, SLOT(configureQET()) );
connect(mode_selection, SIGNAL(triggered()), this, SLOT(slot_setSelectionMode()) );
connect(mode_visualise, SIGNAL(triggered()), this, SLOT(slot_setVisualisationMode()));
connect(about_qet, SIGNAL(triggered()), this, SLOT(aboutQET()) );
@ -432,7 +434,7 @@ void QETDiagramEditor::menus() {
// menu Configuration
menu_config -> addMenu(display_toolbars);
menu_config -> addAction(fullscreen_on);
//menu_config -> addAction(configure);
menu_config -> addAction(configure);
// menu Fenetres
slot_updateWindowsMenu();
@ -964,3 +966,8 @@ void QETDiagramEditor::writeSettings() {
settings.setValue("diagrameditor/geometry", saveGeometry());
settings.setValue("diagrameditor/state", saveState());
}
void QETDiagramEditor::configureQET() {
ConfigDialog cd;
cd.exec();
}

View File

@ -36,6 +36,7 @@ class QETDiagramEditor : public QMainWindow {
public slots:
void toggleFullScreen();
void configureQET();
void aboutQET();
void printDialog();
void exportDialog();