mirror of
https://github.com/qelectrotech/qelectrotech-source-mirror.git
synced 2026-10-10 22:24:13 +02:00
Add a generic device: a box symbol with terminals on any side
Edit > Add > Generic device (also on the Add toolbar, and found by the
command search as diagrameditor.add_generic_device) opens a three-page
wizard for devices used too rarely to draw a symbol for, such as a VSD
or a power supply:
1. Layout: terminals per side (0 for none), a gap every N terminals,
divider marks on gaps, groups lined up across opposite sides, pitch
and extra size.
2. Terminals: a table per side and the same list as one line, where
In{4} is In1..In4, Q{z4} is Q0..Q3, X{3-6} is X3..X6 and an empty
entry is a gap; number pins 1..n counter-clockwise; paste rows of
side, name, function from a spreadsheet or a CSV file.
3. Information: name, label, manufacturer, reference, description.
A preview beside every page shows the box as it will be placed. Finish,
available from the first page, writes an ordinary symbol to the folder
"Generic devices" of the project's collection and puts it on the cursor.
The box sizes itself to its terminals and their names; every terminal
lands on the grid and gets a uuid. No new XML: any QElectroTech reads it.
The layout is pure (sources/genericdevice/genericdevice.cpp) and tested
by tst_genericdevice. ElementPictureFactory gains pictureFromDefinition()
to draw the preview with the same code as a placed element.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,61 @@
|
||||
/*
|
||||
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/>.
|
||||
*/
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
#ifndef GENERICDEVICEWIZARD_H
|
||||
#define GENERICDEVICEWIZARD_H
|
||||
|
||||
#include "genericdevice.h"
|
||||
|
||||
#include <QWizard>
|
||||
|
||||
class GenericDevicePreview;
|
||||
|
||||
/**
|
||||
@brief The GenericDeviceWizard class
|
||||
Three pages, layout, terminals and information, that fill one
|
||||
GenericDevice::Spec, with a preview of the box beside every page.
|
||||
Finish is offered from the first page: a box with numbered pins needs
|
||||
nothing more.
|
||||
*/
|
||||
class GenericDeviceWizard : public QWizard
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
enum { LayoutPageId, TerminalsPageId, InformationPageId };
|
||||
|
||||
GenericDeviceWizard(const GenericDevice::Fonts &fonts,
|
||||
QWidget *parent = nullptr);
|
||||
|
||||
GenericDevice::Spec spec() const;
|
||||
GenericDevice::Spec &editableSpec() { return m_spec; }
|
||||
const GenericDevice::Fonts &fonts() const { return m_fonts; }
|
||||
|
||||
/// Redraw the preview and tell the pages the spec changed.
|
||||
void specChanged();
|
||||
|
||||
signals:
|
||||
void specUpdated();
|
||||
|
||||
private:
|
||||
GenericDevice::Spec m_spec;
|
||||
GenericDevice::Fonts m_fonts;
|
||||
GenericDevicePreview *m_preview = nullptr;
|
||||
};
|
||||
|
||||
#endif // GENERICDEVICEWIZARD_H
|
||||
Reference in New Issue
Block a user