mirror of
https://github.com/qelectrotech/qelectrotech-source-mirror.git
synced 2026-10-09 05:24:14 +02:00
863c5e07ba
TitleBlockTemplateLogoManager never sets read_only_: its constructor leaves the member uninitialised, and setReadOnly() returns early when the new value equals the member. The template editor calls setReadOnly() right after creating the manager, so whenever the garbage value happened to match, the call did nothing: the add, delete and rename buttons stayed enabled on a read-only template, and isReadOnly() returned garbage. Give the member a default value, false, in the header, matching the buttons' state after construction. Only sources/titleblock/templatelogomanager.h changes. No behaviour change for an editable template: setReadOnly(false) on a manager that is already editable still returns early. No file-format change. Tests: none of their own; an uninitialised read is what a sanitizer finds, and this one is the same kind as the BorderTitleBlock and ConductorProfile fixes (#1358, #1359). ctest on macOS, and all example projects through --resave and --export-svg, unchanged. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Signed-off-by: Beat Hangartner <beat@hangartners.ch>
79 lines
2.8 KiB
C++
79 lines
2.8 KiB
C++
/*
|
|
Copyright 2006-2026 The QElectroTech Team
|
|
This file is part of QElectroTech.
|
|
|
|
QElectroTech 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.
|
|
|
|
QElectroTech is distributed in the hope that it will be useful,
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
GNU General Public License for more details.
|
|
|
|
You should have received a copy of the GNU General Public License
|
|
along with QElectroTech. If not, see <http://www.gnu.org/licenses/>.
|
|
*/
|
|
#ifndef TITLEBLOCK_SLASH_TEMPLATE_LOGO_MANAGER
|
|
#define TITLEBLOCK_SLASH_TEMPLATE_LOGO_MANAGER
|
|
#include <QtWidgets>
|
|
class TitleBlockTemplate;
|
|
|
|
/**
|
|
This widget allows users to manage (list, add, edit, delete) logos embedded
|
|
within a title block template.
|
|
*/
|
|
class TitleBlockTemplateLogoManager : public QWidget {
|
|
Q_OBJECT
|
|
// Constructor, destructor
|
|
public:
|
|
TitleBlockTemplateLogoManager(TitleBlockTemplate *, QWidget * = nullptr);
|
|
~TitleBlockTemplateLogoManager() override;
|
|
|
|
// methods
|
|
public:
|
|
QString currentLogo() const;
|
|
bool isReadOnly() const;
|
|
void setReadOnly(bool);
|
|
|
|
signals:
|
|
void logosChanged(const TitleBlockTemplate *);
|
|
|
|
protected:
|
|
void emitLogosChangedSignal();
|
|
|
|
private:
|
|
void initWidgets();
|
|
void fillView();
|
|
QSize iconsize() const;
|
|
QString confirmLogoName(const QString &);
|
|
|
|
private slots:
|
|
void updateLogoInformations(QListWidgetItem *, QListWidgetItem *);
|
|
void addLogo();
|
|
void exportLogo();
|
|
void removeLogo();
|
|
void renameLogo();
|
|
|
|
// attributes
|
|
private:
|
|
TitleBlockTemplate *managed_template_; ///< title block template which this class manages logos
|
|
QVBoxLayout *vlayout0_, *vlayout1_; ///< vertical layouts
|
|
QHBoxLayout *hlayout0_, *hlayout1_; ///< horizontal layouts
|
|
QLabel *logos_label_; ///< simple displayed label
|
|
QListWidget *logos_view_; ///< area showing the logos
|
|
QPushButton *add_button_; ///< button to add a new logo
|
|
QPushButton *export_button_; ///< button to export an embedded logo
|
|
QPushButton *delete_button_; ///< button to delete an embedded logo
|
|
QGroupBox *logo_box_; ///< current logo properties box
|
|
QLabel *logo_name_label_; ///< "name:" label
|
|
QLineEdit *logo_name_; ///< current logo name
|
|
QPushButton *rename_button_; ///< button to rename the current logo
|
|
QLabel *logo_type_; ///< current logo type
|
|
QDialogButtonBox *buttons_; ///< ok/cancel buttons
|
|
QDir open_dialog_dir_; ///< last opened directory
|
|
bool read_only_ = false; ///< Whether this logo manager should allow logo edition (renaming, addition, deletion)
|
|
};
|
|
#endif
|