mirror of
https://github.com/qelectrotech/qelectrotech-source-mirror.git
synced 2026-10-11 14:44:15 +02:00
955dfb3a73
Conflicts resolved in 24 files. Notable decisions: - ico/icon-themes.qrc: upstream's icon folder restructure kept; the 36 cable icon entries re-added under the new qet/qet-dark path scheme (XML valid, every referenced file exists). - Toolbar system: upstream's DiagramToolbarSettings now owns the toolbar filling. The cable tool is registered as diagrameditor.add_cable (generic group loop) and listed on the "diagram" toolbar right after the auto-break conductor action, separated by a divider, exactly like before the merge. - Paste: the cable lines of a copy are handed to PasteNumberingImport::push() as extra commands, so paste + cable lines + the numbering question stay ONE undo step on both paste paths (DiagramView::paste and DiagramEventAddPaste::commit). - PDF links: upstream's deterministic link sorting kept together with the cable cross-reference injector (injectLinkTo -> links list). - Element renumbering: upstream's ElementAutoNumSchemeCommand::renumber replaces the old formula-based body of QETProject::renumberElementsBySchemeTitle; the cable numbering rule API (cableAutoNum, axis priority, rule name) is kept in full. - Auto-numbering pages: upstream's scheme management kept, the Câbles tab added as index 4 (changeToCableTab), both entry points changeToCable() and changeToElement() kept side by side. - SelectAutonumW: dirty tracking and the contextEdited signal moved into upstream's insertPartRow() row API, so single-rule mode, the rule-removable button and "confirm without change leaves the project alone" keep working. - xrefpropertieswidget: upstream's offset clamping kept; the cable branch (Texte field, Police button, hidden display options) kept; the stack-overlapping checkbox is hidden for cables. Verified after the merge: build green (515/515, no errors), ctest 85/86 (only the pre-existing headless tst_menubarkeyboard failure), offscreen smoke exit 124.
122 lines
4.2 KiB
C++
122 lines
4.2 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/>.
|
|
*/
|
|
#include "projectpropertiesdialog.h"
|
|
|
|
#include "../configdialog.h"
|
|
#include "configpage/configpages.h"
|
|
#include "configpage/projectconfigpages.h"
|
|
#include "../TerminalStrip/ui/ConfigPage/terminalstripprojectconfigpage.h"
|
|
|
|
#include <QObject>
|
|
|
|
/**
|
|
@brief ProjectPropertiesDialog::ProjectPropertiesDialog
|
|
Default constructor
|
|
@param project : project to edit properties
|
|
@param parent : parent widget of this dialog
|
|
*/
|
|
ProjectPropertiesDialog::ProjectPropertiesDialog(QETProject *project, QWidget *parent)
|
|
{
|
|
m_properties_dialog = new ConfigDialog (parent);
|
|
m_properties_dialog -> setWindowTitle(QObject::tr("Propriétés du projet", "window title"));
|
|
m_properties_dialog -> addPage(new ProjectMainConfigPage(project));
|
|
|
|
NewDiagramPage *newDiagramPage = new NewDiagramPage(project,parent,this);
|
|
m_properties_dialog -> addPage(newDiagramPage);
|
|
|
|
ProjectAutoNumConfigPage *projectAutoNumConfigPage = new ProjectAutoNumConfigPage (project);
|
|
m_properties_dialog -> addPage(projectAutoNumConfigPage);
|
|
|
|
m_properties_dialog->addPage(new TerminalStripProjectConfigPage { project, parent });
|
|
|
|
connect(projectAutoNumConfigPage, qOverload<QString>(&ProjectAutoNumConfigPage::setAutoNum), newDiagramPage, &NewDiagramPage::setFolioAutonum);
|
|
connect(projectAutoNumConfigPage, &ProjectAutoNumConfigPage::saveCurrentTbp, newDiagramPage, &NewDiagramPage::saveCurrentTbp);
|
|
connect(projectAutoNumConfigPage, &ProjectAutoNumConfigPage::loadSavedTbp, newDiagramPage, &NewDiagramPage::loadSavedTbp);
|
|
}
|
|
|
|
/**
|
|
@brief ProjectPropertiesDialog::~ProjectPropertiesDialog
|
|
*/
|
|
ProjectPropertiesDialog::~ProjectPropertiesDialog ()
|
|
{
|
|
delete m_properties_dialog;
|
|
}
|
|
|
|
/**
|
|
@brief ProjectPropertiesDialog::exec
|
|
execute this dialog.
|
|
*/
|
|
void ProjectPropertiesDialog::exec()
|
|
{
|
|
// ApplicationModal (not WindowModal) so no other window — including other
|
|
// MDI subwindows — can dispatch events while the dialog holds raw
|
|
// QETProject* pointers in its config pages. WindowModal only blocks the
|
|
// parent ProjectView; the rest of the MDI area stays live, which allowed
|
|
// new_project / close_project to replace the project under the dialog
|
|
// and cause a SIGSEGV. See issue #527.
|
|
m_properties_dialog->setWindowModality(Qt::ApplicationModal);
|
|
m_properties_dialog -> exec();
|
|
}
|
|
|
|
/**
|
|
@brief ProjectPropertiesDialog::setCurrentPage
|
|
Change the current displayed page by p.
|
|
@param p : page to display
|
|
*/
|
|
void ProjectPropertiesDialog::setCurrentPage(ProjectPropertiesDialog::Page p) {
|
|
m_properties_dialog -> setCurrentPage(static_cast <int> (p));
|
|
}
|
|
|
|
/**
|
|
@brief ProjectPropertiesDialog::changeToFolio
|
|
Change the current displayed tab to folio tab.
|
|
*/
|
|
void ProjectPropertiesDialog::changeToFolio()
|
|
{
|
|
ProjectAutoNumConfigPage *autoNumPage =
|
|
static_cast <ProjectAutoNumConfigPage*>(
|
|
m_properties_dialog->pages.at(2));
|
|
autoNumPage->changeToTab(3);
|
|
}
|
|
|
|
/**
|
|
@brief ProjectPropertiesDialog::changeToCable
|
|
Change the current displayed tab to the cable numbering tab.
|
|
The caller is the cable tool, which opens this window when it finds
|
|
that the project numbers its cables by no rule at all.
|
|
*/
|
|
void ProjectPropertiesDialog::changeToCable()
|
|
{
|
|
ProjectAutoNumConfigPage *autoNumPage =
|
|
static_cast <ProjectAutoNumConfigPage*>(
|
|
m_properties_dialog->pages.at(2));
|
|
autoNumPage->changeToCableTab();
|
|
}
|
|
|
|
/**
|
|
@brief ProjectPropertiesDialog::changeToElement
|
|
Change the current displayed tab to the element numberings tab.
|
|
*/
|
|
void ProjectPropertiesDialog::changeToElement()
|
|
{
|
|
ProjectAutoNumConfigPage *autoNumPage =
|
|
static_cast <ProjectAutoNumConfigPage*>(
|
|
m_properties_dialog->pages.at(2));
|
|
autoNumPage->changeToTab(2);
|
|
}
|