wiRedPanda
Logic Circuit Simulator
Loading...
Searching...
No Matches
BeWavedDolphinUI.cpp
Go to the documentation of this file.
1// Copyright 2015 - 2026, GIBIS-UNIFESP and the wiRedPanda contributors
2// SPDX-License-Identifier: GPL-3.0-or-later
3
5
6#include <QtCore/QCoreApplication>
7#include <QtCore/QMetaObject>
8#include <QtGui/QIcon>
9
11{
12 if (BewavedDolphin->objectName().isEmpty()) {
13 BewavedDolphin->setObjectName("BewavedDolphin");
14 }
15
16 BewavedDolphin->setWindowIcon(QIcon(":/Interface/Toolbar/dolphin_icon.svg"));
17
18 actionAbout = new QAction(BewavedDolphin);
19 actionAbout->setObjectName("actionAbout");
20 actionAbout->setIcon(QIcon(":/Interface/Dolphin/help.svg"));
21
22 actionLoad = new QAction(BewavedDolphin);
23 actionLoad->setObjectName("actionLoad");
24 actionLoad->setIcon(QIcon(":/Interface/Dolphin/folder.svg"));
25
26 actionExit = new QAction(BewavedDolphin);
27 actionExit->setObjectName("actionExit");
28 actionExit->setIcon(QIcon(":/Interface/Dolphin/exit.svg"));
29
31 actionCombinational->setObjectName("actionCombinational");
32 actionCombinational->setIcon(QIcon(":/Interface/Toolbar/wavyIcon.svg"));
33
34 actionExportToPdf = new QAction(BewavedDolphin);
35 actionExportToPdf->setObjectName("actionExportToPdf");
36 actionExportToPdf->setIcon(QIcon(":/Interface/Dolphin/pdf.svg"));
37
38 actionSave = new QAction(BewavedDolphin);
39 actionSave->setObjectName("actionSave");
40 actionSave->setIcon(QIcon(":/Interface/Dolphin/save.svg"));
41
42 actionSaveAs = new QAction(BewavedDolphin);
43 actionSaveAs->setObjectName("actionSaveAs");
44 actionSaveAs->setIcon(QIcon(":/Interface/Dolphin/save.svg"));
45
46 actionUndo = new QAction(BewavedDolphin);
47 actionUndo->setObjectName("actionUndo");
48 actionUndo->setIcon(QIcon(":/Interface/Toolbar/undo.svg"));
49 actionUndo->setEnabled(false);
50
51 actionRedo = new QAction(BewavedDolphin);
52 actionRedo->setObjectName("actionRedo");
53 actionRedo->setIcon(QIcon(":/Interface/Toolbar/redo.svg"));
54 actionRedo->setEnabled(false);
55
56 actionCopy = new QAction(BewavedDolphin);
57 actionCopy->setObjectName("actionCopy");
58 actionCopy->setIcon(QIcon(":/Interface/Toolbar/copy.svg"));
59
60 actionPaste = new QAction(BewavedDolphin);
61 actionPaste->setObjectName("actionPaste");
62 actionPaste->setIcon(QIcon(":/Interface/Dolphin/paste.svg"));
63
64 actionSetTo0 = new QAction(BewavedDolphin);
65 actionSetTo0->setObjectName("actionSetTo0");
66 actionSetTo0->setIcon(QIcon(":/Components/Input/0.svg"));
67
68 actionSetTo1 = new QAction(BewavedDolphin);
69 actionSetTo1->setObjectName("actionSetTo1");
70 actionSetTo1->setIcon(QIcon(":/Components/Input/1.svg"));
71
73 actionSetClockWave->setObjectName("actionSetClockWave");
74 actionSetClockWave->setIcon(QIcon(":/Components/Input/clock1.svg"));
75 // Gated on a non-empty selection — kept in sync by on_tableView_selectionChanged.
76 actionSetClockWave->setEnabled(false);
77
78 actionInvert = new QAction(BewavedDolphin);
79 actionInvert->setObjectName("actionInvert");
80 actionInvert->setIcon(QIcon(":/Components/Logic/not.svg"));
81
82 // Merge/Split are reserved for future multi-bit bus functionality and intentionally
83 // disabled until the feature is implemented
84 actionMerge = new QAction(BewavedDolphin);
85 actionMerge->setObjectName("actionMerge");
86 actionMerge->setEnabled(false);
87
88 actionSplit = new QAction(BewavedDolphin);
89 actionSplit->setObjectName("actionSplit");
90 actionSplit->setEnabled(false);
91
92 actionExportToPng = new QAction(BewavedDolphin);
93 actionExportToPng->setObjectName("actionExportToPng");
94 actionExportToPng->setIcon(QIcon(":/Interface/Dolphin/png.svg"));
95
96 actionSetLength = new QAction(BewavedDolphin);
97 actionSetLength->setObjectName("actionSetLength");
98 actionSetLength->setIcon(QIcon(":/Interface/Dolphin/range.svg"));
99
100 actionAboutQt = new QAction(BewavedDolphin);
101 actionAboutQt->setObjectName("actionAboutQt");
102 actionAboutQt->setIcon(QIcon(":/Interface/Toolbar/helpQt.svg"));
103
104 actionZoomIn = new QAction(BewavedDolphin);
105 actionZoomIn->setObjectName("actionZoomIn");
106 actionZoomIn->setIcon(QIcon(":/Interface/Dolphin/zoomIn.svg"));
107
108 actionZoomOut = new QAction(BewavedDolphin);
109 actionZoomOut->setObjectName("actionZoomOut");
110 actionZoomOut->setIcon(QIcon(":/Interface/Dolphin/zoomOut.svg"));
111
112 actionFitScreen = new QAction(BewavedDolphin);
113 actionFitScreen->setObjectName("actionFitScreen");
114 actionFitScreen->setIcon(QIcon(":/Interface/Dolphin/zoomRange.svg"));
115
116 actionResetZoom = new QAction(BewavedDolphin);
117 actionResetZoom->setObjectName("actionResetZoom");
118 actionResetZoom->setIcon(QIcon(":/Interface/Dolphin/zoomReset.svg"));
119
120 actionClear = new QAction(BewavedDolphin);
121 actionClear->setObjectName("actionClear");
122 actionClear->setIcon(QIcon(":/Interface/Dolphin/reloadFile.svg"));
123
124 actionCut = new QAction(BewavedDolphin);
125 actionCut->setObjectName("actionCut");
126 actionCut->setIcon(QIcon(":/Interface/Dolphin/cut.svg"));
127
128 actionShowNumbers = new QAction(BewavedDolphin);
129 actionShowNumbers->setObjectName("actionShowNumbers");
130
131 actionShowWaveforms = new QAction(BewavedDolphin);
132 actionShowWaveforms->setObjectName("actionShowWaveforms");
133
134 actionAutoCrop = new QAction(BewavedDolphin);
135 actionAutoCrop->setObjectName("actionAutoCrop");
136 actionAutoCrop->setIcon(QIcon(":/Interface/Dolphin/autoCrop.svg"));
137 actionAutoCrop->setMenuRole(QAction::NoRole);
138
139 centralwidget = new QWidget(BewavedDolphin);
140 centralwidget->setObjectName("centralwidget");
141 // Expanding so the waveform table (added to the layout below) fills the window.
142 QSizePolicy sizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
143 sizePolicy.setHorizontalStretch(0);
144 sizePolicy.setVerticalStretch(0);
145 sizePolicy.setHeightForWidth(centralwidget->sizePolicy().hasHeightForWidth());
146 centralwidget->setSizePolicy(sizePolicy);
147
148 // Zero spacing/margins so the waveform view fills the entire central area
149 verticalLayout = new QVBoxLayout(centralwidget);
150 verticalLayout->setSpacing(0);
151 verticalLayout->setObjectName("verticalLayout");
152 verticalLayout->setContentsMargins(0, 0, 0, 0);
153 BewavedDolphin->setCentralWidget(centralwidget);
154
155 statusbar = new QStatusBar(BewavedDolphin);
156 statusbar->setObjectName("statusbar");
157 BewavedDolphin->setStatusBar(statusbar);
158
159 mainToolBar = new QToolBar(BewavedDolphin);
160 mainToolBar->setObjectName("mainToolBar");
161 BewavedDolphin->addToolBar(Qt::TopToolBarArea, mainToolBar);
162
163 menubar = new QMenuBar(BewavedDolphin);
164 menubar->setObjectName("menubar");
165 // Height of 27px matches the typical platform menubar height; width matches initial window size
166 menubar->setGeometry(QRect(0, 0, 800, 27));
167
168 menuFile = new QMenu(menubar);
169 menuFile->setObjectName("menuFile");
170
171 menuAbout = new QMenu(menubar);
172 menuAbout->setObjectName("menuAbout");
173
174 menuEdit = new QMenu(menubar);
175 menuEdit->setObjectName("menuEdit");
176
177 menuView = new QMenu(menubar);
178 menuView->setObjectName("menuView");
179 BewavedDolphin->setMenuBar(menubar);
180
181 mainToolBar->addAction(actionLoad);
182 mainToolBar->addAction(actionSave);
183 mainToolBar->addAction(actionExportToPdf);
184 mainToolBar->addAction(actionExportToPng);
185 mainToolBar->addSeparator();
186 mainToolBar->addAction(actionUndo);
187 mainToolBar->addAction(actionRedo);
188 mainToolBar->addSeparator();
189 mainToolBar->addAction(actionCut);
190 mainToolBar->addAction(actionCopy);
191 mainToolBar->addAction(actionPaste);
192 mainToolBar->addSeparator();
193 mainToolBar->addAction(actionClear);
195 mainToolBar->addSeparator();
196 mainToolBar->addAction(actionSetTo0);
197 mainToolBar->addAction(actionSetTo1);
198 mainToolBar->addAction(actionInvert);
200 mainToolBar->addAction(actionAutoCrop);
201 mainToolBar->addSeparator();
202 mainToolBar->addAction(actionZoomIn);
203 mainToolBar->addAction(actionZoomOut);
204 mainToolBar->addAction(actionResetZoom);
205 mainToolBar->addAction(actionFitScreen);
206 mainToolBar->addAction(actionSetLength);
207 mainToolBar->addSeparator();
208 mainToolBar->addAction(actionExit);
209 menubar->addAction(menuFile->menuAction());
210 menubar->addAction(menuEdit->menuAction());
211 menubar->addAction(menuView->menuAction());
212 menubar->addAction(menuAbout->menuAction());
213 menuFile->addAction(actionLoad);
214 menuFile->addSeparator();
215 menuFile->addAction(actionSave);
216 menuFile->addAction(actionSaveAs);
217 menuFile->addAction(actionExportToPdf);
218 menuFile->addAction(actionExportToPng);
219 menuFile->addSeparator();
220 menuFile->addAction(actionExit);
221 menuAbout->addAction(actionAbout);
222 menuAbout->addAction(actionAboutQt);
223 menuEdit->addAction(actionUndo);
224 menuEdit->addAction(actionRedo);
225 menuEdit->addSeparator();
226 menuEdit->addAction(actionCut);
227 menuEdit->addAction(actionCopy);
228 menuEdit->addAction(actionPaste);
229 menuEdit->addSeparator();
230 menuEdit->addAction(actionClear);
231 menuEdit->addAction(actionCombinational);
232 menuEdit->addAction(actionSetTo0);
233 menuEdit->addAction(actionSetTo1);
234 menuEdit->addAction(actionInvert);
235 menuEdit->addAction(actionSetClockWave);
236 menuEdit->addSeparator();
237 menuEdit->addAction(actionMerge);
238 menuEdit->addAction(actionSplit);
239 menuView->addAction(actionZoomOut);
240 menuView->addAction(actionZoomIn);
241 menuView->addAction(actionResetZoom);
242 menuView->addAction(actionFitScreen);
243 menuView->addAction(actionSetLength);
244 menuView->addSeparator();
245 menuView->addAction(actionShowNumbers);
246 menuView->addAction(actionShowWaveforms);
247
249
250 // Connects signals to slots by naming convention (on_<objectName>_<signal>), but
251 // BewavedDolphin manually connects all its actions, so this is a safety net only
252 QMetaObject::connectSlotsByName(BewavedDolphin);
253}
254
256{
257 // The window title is set by BewavedDolphin's constructor (and updated on file
258 // load/save), so no placeholder is applied here.
259 Q_UNUSED(BewavedDolphin)
260 actionAbout->setText(QCoreApplication::translate("BewavedDolphin", "About"));
261 actionAbout->setShortcut(QStringLiteral("F1")); // match the main window (Ctrl+H is Flip there)
262 actionLoad->setText(QCoreApplication::translate("BewavedDolphin", "Load"));
263 actionLoad->setShortcut(QStringLiteral("Ctrl+L"));
264 actionExit->setText(QCoreApplication::translate("BewavedDolphin", "Exit"));
265 actionExit->setShortcut(QStringLiteral("Ctrl+W"));
266 actionCombinational->setText(QCoreApplication::translate("BewavedDolphin", "Combinational"));
267 actionCombinational->setShortcut(QStringLiteral("Alt+C"));
268 actionExportToPdf->setText(QCoreApplication::translate("BewavedDolphin", "Export to PDF"));
269 actionExportToPdf->setShortcut(QStringLiteral("Ctrl+P"));
270 actionSave->setText(QCoreApplication::translate("BewavedDolphin", "Save"));
271 actionSave->setShortcut(QStringLiteral("Ctrl+S"));
272 actionSaveAs->setText(QCoreApplication::translate("BewavedDolphin", "Save As..."));
273 actionSaveAs->setShortcut(QStringLiteral("Ctrl+Shift+S"));
274 actionUndo->setText(QCoreApplication::translate("BewavedDolphin", "Undo"));
275 actionUndo->setShortcut(QKeySequence::Undo);
276 actionRedo->setText(QCoreApplication::translate("BewavedDolphin", "Redo"));
277 actionRedo->setShortcut(QKeySequence::Redo);
278 actionCopy->setText(QCoreApplication::translate("BewavedDolphin", "Copy"));
279 actionCopy->setShortcut(QStringLiteral("Ctrl+C"));
280 actionPaste->setText(QCoreApplication::translate("BewavedDolphin", "Paste"));
281 actionPaste->setShortcut(QStringLiteral("Ctrl+V"));
282 actionSetTo0->setText(QCoreApplication::translate("BewavedDolphin", "Set to 0"));
283 actionSetTo0->setShortcut(QStringLiteral("0"));
284 actionSetTo1->setText(QCoreApplication::translate("BewavedDolphin", "Set to 1"));
285 actionSetTo1->setShortcut(QStringLiteral("1"));
286 actionSetClockWave->setText(QCoreApplication::translate("BewavedDolphin", "Set clock period"));
287 actionSetClockWave->setToolTip(QCoreApplication::translate("BewavedDolphin", "Set clock period"));
288 actionSetClockWave->setShortcut(QStringLiteral("Alt+W"));
289 actionInvert->setText(QCoreApplication::translate("BewavedDolphin", "Invert"));
290 actionInvert->setShortcut(QStringLiteral("Space"));
291 actionMerge->setText(QCoreApplication::translate("BewavedDolphin", "Merge"));
292 actionSplit->setText(QCoreApplication::translate("BewavedDolphin", "Split"));
293 actionExportToPng->setText(QCoreApplication::translate("BewavedDolphin", "Export to PNG"));
294 actionExportToPng->setShortcut(QStringLiteral("Ctrl+Shift+P"));
295 actionSetLength->setText(QCoreApplication::translate("BewavedDolphin", "Set Length"));
296 actionSetLength->setShortcut(QStringLiteral("Alt+L"));
297 actionAboutQt->setText(QCoreApplication::translate("BewavedDolphin", "About Qt"));
298 actionAboutQt->setShortcut(QStringLiteral("Ctrl+Shift+H"));
299 actionZoomIn->setText(QCoreApplication::translate("BewavedDolphin", "Zoom In"));
300 actionZoomIn->setShortcut(QStringLiteral("Ctrl+="));
301 actionZoomOut->setText(QCoreApplication::translate("BewavedDolphin", "Zoom Out"));
302 actionZoomOut->setShortcut(QStringLiteral("Ctrl+-"));
303 actionFitScreen->setText(QCoreApplication::translate("BewavedDolphin", "Fit to screen"));
304 actionFitScreen->setToolTip(QCoreApplication::translate("BewavedDolphin", "Fit to screen"));
305 actionFitScreen->setShortcut(QStringLiteral("Ctrl+Shift+F")); // match the main window's Zoom to Fit (Ctrl+Shift+R is Rotate there)
306 actionResetZoom->setText(QCoreApplication::translate("BewavedDolphin", "Reset Zoom"));
307 actionResetZoom->setShortcut(QStringLiteral("Ctrl+Home"));
308 actionClear->setText(QCoreApplication::translate("BewavedDolphin", "Clear"));
309 actionClear->setShortcut(QStringLiteral("Alt+X"));
310 actionCut->setText(QCoreApplication::translate("BewavedDolphin", "Cut"));
311 actionCut->setShortcut(QStringLiteral("Ctrl+X"));
312 actionShowNumbers->setText(QCoreApplication::translate("BewavedDolphin", "Show Numbers"));
313 actionShowWaveforms->setText(QCoreApplication::translate("BewavedDolphin", "Show Waveforms"));
314 actionAutoCrop->setText(QCoreApplication::translate("BewavedDolphin", "AutoCrop"));
315 actionAutoCrop->setToolTip(QCoreApplication::translate("BewavedDolphin", "AutoCrop"));
316 actionAutoCrop->setShortcut(QStringLiteral("Alt+A")); // fits BWD's Alt+ family; frees Ctrl+A for its universal Select-All meaning
317 mainToolBar->setWindowTitle(QCoreApplication::translate("BewavedDolphin", "toolBar"));
318 menuFile->setTitle(QCoreApplication::translate("BewavedDolphin", "File"));
319 menuAbout->setTitle(QCoreApplication::translate("BewavedDolphin", "Help"));
320 menuEdit->setTitle(QCoreApplication::translate("BewavedDolphin", "Edit"));
321 menuView->setTitle(QCoreApplication::translate("BewavedDolphin", "View"));
322}
BewavedDolphinUi: hand-written UI class for the BeWavedDolphin main window.
QStatusBar * statusbar
QAction * actionCombinational
QAction * actionFitScreen
QAction * actionExportToPng
void setupUi(QMainWindow *BewavedDolphin)
Creates and lays out all child widgets inside BewavedDolphin.
QAction * actionShowWaveforms
QAction * actionShowNumbers
QAction * actionResetZoom
void retranslateUi(QMainWindow *BewavedDolphin)
Updates all translatable strings in the window.
QVBoxLayout * verticalLayout
QAction * actionExportToPdf
QAction * actionSetLength
QAction * actionSetClockWave
Waveform editor main window for creating and analyzing digital signal sequences.