22 #include <QStandardPaths> 31 managed_template_(managed_template)
50 QListWidgetItem *current_item =
logos_view_ -> currentItem();
51 if (!current_item)
return QString();
53 return(current_item -> text());
75 open_dialog_dir_ = QStandardPaths::writableLocation(QStandardPaths::DesktopLocation);
77 setWindowTitle(
tr(
"Gestionnaire de logos"));
79 setWindowFlags(Qt::Dialog);
97 buttons_ =
new QDialogButtonBox(QDialogButtonBox::Ok);
123 SIGNAL(currentItemChanged(QListWidgetItem *, QListWidgetItem *)),
143 if (!current_logo.isNull()) {
144 current_icon = QIcon(current_logo);
148 QPixmap *svg_pixmap =
new QPixmap(
iconsize());
149 svg_pixmap -> fill();
152 svg_logo -> render(&p);
154 current_icon = QIcon(*svg_pixmap);
157 QListWidgetItem *qlwi =
new QListWidgetItem(current_icon, logo_name);
158 qlwi -> setTextAlignment(Qt::AlignBottom | Qt::AlignHCenter);
162 QListWidgetItem *current_item =
logos_view_ -> currentItem();
171 return(QSize(80, 80));
183 QString name = initial_name;
184 QDialog *rename_dialog =
nullptr;
185 QLabel *rd_label =
nullptr;
186 QLineEdit *rd_input =
nullptr;
188 if (!rename_dialog) {
189 rename_dialog =
new QDialog(
this);
190 rename_dialog -> setWindowTitle(
tr(
"Logo déjà existant"));
192 rd_label =
new QLabel();
193 rd_label -> setWordWrap(
true);
194 rd_input =
new QLineEdit();
195 QDialogButtonBox *rd_buttons =
new QDialogButtonBox();
196 QPushButton *replace_button = rd_buttons -> addButton(
tr(
"Remplacer"), QDialogButtonBox::YesRole);
197 QPushButton *rename_button = rd_buttons -> addButton(
tr(
"Renommer"), QDialogButtonBox::NoRole);
200 QVBoxLayout *rd_vlayout0 =
new QVBoxLayout();
201 rd_vlayout0 -> addWidget(rd_label);
202 rd_vlayout0 -> addWidget(rd_input);
203 rd_vlayout0 -> addWidget(rd_buttons);
204 rename_dialog -> setLayout(rd_vlayout0);
206 QSignalMapper *signal_mapper =
new QSignalMapper(rename_dialog);
207 signal_mapper -> setMapping(replace_button, QDialogButtonBox::YesRole);
208 signal_mapper -> setMapping(rename_button, QDialogButtonBox::NoRole);
209 signal_mapper -> setMapping(cancel_button, QDialogButtonBox::RejectRole);
210 connect(replace_button, SIGNAL(clicked()), signal_mapper, SLOT(map()));
211 connect(rename_button, SIGNAL(clicked()), signal_mapper, SLOT(map()));
212 connect(cancel_button, SIGNAL(clicked()), signal_mapper, SLOT(map()));
213 connect(signal_mapper, SIGNAL(mapped(
int)), rename_dialog, SLOT(done(
int)));
217 "Il existe déjà un logo portant le nom \"%1\" au sein de " 218 "ce modèle de cartouche. Voulez-vous le remplacer ou " 219 "préférez-vous spécifier un autre nom pour ce nouveau " 223 rd_input -> setText(name);
224 int answer = rename_dialog -> exec();
225 if (answer == QDialogButtonBox::YesRole) {
228 }
else if (answer == QDialogButtonBox::NoRole) {
230 name = rd_input -> text();
248 QString logo_name = current -> text();
267 QString filepath = QFileDialog::getOpenFileName(
269 tr(
"Choisir une image / un logo"),
271 tr(
"Images vectorielles (*.svg);;Images bitmap (*.png *.jpg *.jpeg *.gif *.bmp *.xpm);;Tous les fichiers (*)")
273 if (filepath.isEmpty())
return;
276 QFileInfo filepath_info(filepath);
277 if (!filepath_info.exists() || !filepath_info.isReadable()) {
284 if (logo_name.isNull())
return;
298 if (current_logo.isNull())
return;
300 QString filepath = QFileDialog::getSaveFileName(
302 tr(
"Choisir un fichier pour exporter ce logo"),
304 tr(
"Tous les fichiers (*);;Images vectorielles (*.svg);;Images bitmap (*.png *.jpg *.jpeg *.gif *.bmp *.xpm)")
306 if (filepath.isEmpty())
return;
321 if (current_logo.isNull())
return;
334 if (current_logo.isNull())
return;
337 QString warning_title =
tr(
"Renommer un logo");
338 if (entered_name == current_logo) {
342 tr(
"Vous devez saisir un nouveau nom.")
347 if (entered_name.trimmed().isEmpty()) {
351 tr(
"Le nouveau nom ne peut pas être vide.")
360 tr(
"Le nom saisi est déjà utilisé par un autre logo.")
QLineEdit * logo_name_
current logo name
QLabel * logo_name_label_
"name:" label
QString currentLogo() const
QListWidget * logos_view_
area showing the logos
QVBoxLayout * vlayout1_
vertical layouts
QLabel * logo_type_
current logo type
bool read_only_
Whether this logo manager should allow logo edition (renaming, addition, deletion) ...
QHBoxLayout * hlayout1_
horizontal layouts
QGroupBox * logo_box_
current logo properties box
QString confirmLogoName(const QString &)
void emitLogosChangedSignal()
QPushButton * export_button_
button to export an embedded logo
QPushButton * rename_button_
button to rename the current logo
QDialogButtonBox * buttons_
ok/cancel buttons
TitleBlockTemplateLogoManager(TitleBlockTemplate *, QWidget *=nullptr)
void logosChanged(const TitleBlockTemplate *)
QPushButton * add_button_
button to add a new logo
QLabel * logos_label_
simple displayed label
TitleBlockTemplate * managed_template_
title block template which this class manages logos
QMessageBox::StandardButton critical(QWidget *, const QString &, const QString &, QMessageBox::StandardButtons=QMessageBox::Ok, QMessageBox::StandardButton=QMessageBox::NoButton)
void updateLogoInformations(QListWidgetItem *, QListWidgetItem *)
QPushButton * delete_button_
button to delete an embedded logo
QMessageBox::StandardButton warning(QWidget *, const QString &, const QString &, QMessageBox::StandardButtons=QMessageBox::Ok, QMessageBox::StandardButton=QMessageBox::NoButton)
~TitleBlockTemplateLogoManager() override
QDir open_dialog_dir_
last opened directory