mirror of
https://github.com/qelectrotech/qelectrotech-source-mirror.git
synced 2026-06-13 08:13:14 +02:00
ba6320bff8
When a title block template uses custom variables (e.g. %{department},
%{owner}), the user previously had to declare each one by hand in the
folio properties 'Custom' tab before a value could be entered. Now the
template's undefined custom variables are added automatically, so the
user only fills in the values.
- listOfVariables() now extracts %{name} placeholders with a regex
(deduplicated) instead of a crude '%' strip that returned '{name}'.
- The folio properties widget merges the template's custom variables into
the Custom tab both on open (setProperties) and when the template is
changed, preserving any values already entered and skipping the
standard fields (title, author, date, ...) which have their own inputs.
Fixes #271 (variable auto-population; the revision-history request in the
thread is a separate feature).
107 lines
3.4 KiB
C++
107 lines
3.4 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 TITLEBLOCKPROPERTIESWIDGET_H
|
|
#define TITLEBLOCKPROPERTIESWIDGET_H
|
|
|
|
#include "../autoNum/numerotationcontext.h"
|
|
#include "../qet.h"
|
|
#include "../qetproject.h"
|
|
#include "../titleblockproperties.h"
|
|
#include "diagramcontextwidget.h"
|
|
|
|
#include <QWidget>
|
|
|
|
class NumerotationContext;
|
|
class QETProject;
|
|
class QMenu;
|
|
class TitleBlockTemplatesCollection;
|
|
class TitleBlockTemplate;
|
|
|
|
namespace Ui {
|
|
class TitleBlockPropertiesWidget;
|
|
}
|
|
|
|
class TitleBlockPropertiesWidget : public QWidget
|
|
{
|
|
Q_OBJECT
|
|
|
|
public:
|
|
explicit TitleBlockPropertiesWidget(
|
|
const TitleBlockProperties &titleblock = TitleBlockProperties(),
|
|
bool current_date = false,
|
|
QETProject *project = nullptr,
|
|
QWidget *parent = nullptr);
|
|
explicit TitleBlockPropertiesWidget(
|
|
TitleBlockTemplatesCollection *tbt_collection,
|
|
const TitleBlockProperties &titleblock = TitleBlockProperties(),
|
|
bool current_date = false,
|
|
QETProject *project = nullptr,
|
|
QWidget *parent = nullptr);
|
|
explicit TitleBlockPropertiesWidget(
|
|
QList <TitleBlockTemplatesCollection *> tbt_collection,
|
|
const TitleBlockProperties &titleblock = TitleBlockProperties(),
|
|
bool current_date = false,
|
|
QETProject *project = nullptr,
|
|
QWidget *parent = nullptr);
|
|
~TitleBlockPropertiesWidget() override;
|
|
|
|
void setProperties(const TitleBlockProperties &properties);
|
|
TitleBlockProperties properties() const;
|
|
TitleBlockProperties propertiesAutoNum(QString autoNum) const;
|
|
TitleBlockTemplateLocation currentTitleBlockLocation () const;
|
|
void setPropertiesWithAutoNum(
|
|
const TitleBlockProperties &properties,
|
|
QString autoNum);
|
|
|
|
void setTitleBlockTemplatesVisible(const bool &visible);
|
|
void setReadOnly (const bool &ro);
|
|
|
|
private:
|
|
void addCollection (
|
|
TitleBlockTemplatesCollection *tbt_collection);
|
|
QString currentTitleBlockTemplateName () const;
|
|
void initDialog(const bool ¤t_date, QETProject *project);
|
|
int getIndexFor (const QString &tbt_name,
|
|
const QET::QetCollection collection) const;
|
|
TitleBlockTemplate *templateForIndex (int index) const;
|
|
void addTemplateVariables (DiagramContext &context, int index) const;
|
|
|
|
private slots:
|
|
void editCurrentTitleBlockTemplate();
|
|
void duplicateCurrentTitleBlockTemplate();
|
|
void updateTemplateList();
|
|
void changeCurrentTitleBlockTemplate(int);
|
|
void on_m_date_now_pb_clicked();
|
|
void on_m_edit_autofolionum_pb_clicked();
|
|
|
|
signals:
|
|
void set_auto_page_num() const;
|
|
void openAutoNumFolioEditor (QString);
|
|
|
|
private:
|
|
Ui::TitleBlockPropertiesWidget *ui;
|
|
DiagramContextWidget *m_dcw;
|
|
QAction *m_tbt_edit, *m_tbt_duplicate;
|
|
QMenu *m_tbt_menu;
|
|
QList <TitleBlockTemplatesCollection *> m_tbt_collection_list;
|
|
QList <QET::QetCollection> m_map_index_to_collection_type;
|
|
QList <QString> keys_2;
|
|
};
|
|
|
|
#endif // TITLEBLOCKPROPERTIESWIDGET_H
|