Skip to content

Commit 61712c7

Browse files
committed
Begin to improve hot keys functionality
1 parent 4f458b5 commit 61712c7

23 files changed

+338
-86
lines changed

changelog.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,3 +70,8 @@
7070

7171
* Added the ability to import/export DataView data list selected items in CSV format
7272
* Fixed bugs
73+
74+
# 0.3.5
75+
76+
* When you click `Insert` in the `DataView` window, the new value is added to the list,
77+
but taking into account the address and size of the element format above.

src/client/gui/client_ui.cpp

Lines changed: 44 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,7 @@ void mbClientUi::initialize()
8989
ui->actionFileOpen ->setShortcuts(QKeySequence::Open );
9090
ui->actionFileSave ->setShortcuts(QKeySequence::Save );
9191
ui->actionFileSaveAs->setShortcuts(QKeySequence::SaveAs);
92-
ui->actionEdit ->setShortcut (QKeySequence(Qt::CTRL | Qt::Key_E));
92+
ui->actionEdit ->setShortcut (QKeySequence(Qt::CTRL | Qt::SHIFT | Qt::Key_E));
9393
ui->actionQuit ->setShortcuts(QKeySequence::Quit);
9494

9595
connect(ui->actionFileNew , &QAction::triggered, this, &mbClientUi::menuSlotFileNew );
@@ -106,7 +106,7 @@ void mbClientUi::initialize()
106106
ui->actionEditCopy ->setShortcuts(QKeySequence::Copy );
107107
ui->actionEditPaste ->setShortcuts(QKeySequence::Paste );
108108
ui->actionEditInsert ->setShortcut (QKeySequence(Qt::Key_Insert ));
109-
//ui->actionEditEdit ->setShortcut (QKeySequence(Qt::CTRL | Qt::Key_E));
109+
ui->actionEditEdit ->setShortcut (QKeySequence(Qt::CTRL | Qt::Key_E));
110110
ui->actionEditDelete ->setShortcuts(QKeySequence::Delete );
111111
ui->actionEditSelectAll->setShortcuts(QKeySequence::SelectAll );
112112

@@ -116,7 +116,7 @@ void mbClientUi::initialize()
116116
connect(ui->actionEditCopy , &QAction::triggered, this, &mbClientUi::menuSlotEditCopy );
117117
connect(ui->actionEditPaste , &QAction::triggered, this, &mbClientUi::menuSlotEditPaste );
118118
connect(ui->actionEditInsert , &QAction::triggered, this, &mbClientUi::menuSlotEditInsert );
119-
//connect(ui->actionEditEdit , &QAction::triggered, this, &mbClientUi::menuSlotEditEdit );
119+
connect(ui->actionEditEdit , &QAction::triggered, this, &mbClientUi::menuSlotEditEdit );
120120
connect(ui->actionEditDelete , &QAction::triggered, this, &mbClientUi::menuSlotEditDelete );
121121
connect(ui->actionEditSelectAll , &QAction::triggered, this, &mbClientUi::menuSlotEditSelectAll);
122122

@@ -125,7 +125,7 @@ void mbClientUi::initialize()
125125
connect(ui->actionViewLogView, &QAction::triggered, this, &mbClientUi::menuSlotViewLogView);
126126

127127
// Menu Port
128-
ui->actionPortDelete->setShortcut(QKeySequence(Qt::CTRL | Qt::SHIFT | Qt::Key_Delete));
128+
ui->actionPortNew->setShortcut(QKeySequence(Qt::ALT | Qt::Key_N));
129129

130130
connect(ui->actionPortNew , &QAction::triggered, this, &mbClientUi::menuSlotPortNew );
131131
connect(ui->actionPortEdit , &QAction::triggered, this, &mbClientUi::menuSlotPortEdit );
@@ -136,9 +136,7 @@ void mbClientUi::initialize()
136136
connect(ui->actionPortExport , &QAction::triggered, this, &mbClientUi::menuSlotPortExport );
137137

138138
// Menu Device
139-
ui->actionDeviceNew ->setShortcut(QKeySequence(Qt::SHIFT | Qt::Key_N ));
140-
ui->actionDeviceEdit ->setShortcut(QKeySequence(Qt::CTRL | Qt::SHIFT | Qt::Key_N ));
141-
ui->actionDeviceDelete->setShortcut(QKeySequence(Qt::SHIFT | Qt::CTRL | Qt::Key_Delete));
139+
ui->actionDeviceNew->setShortcut(QKeySequence(Qt::SHIFT | Qt::Key_N));
142140

143141
connect(ui->actionDeviceNew , &QAction::triggered, this, &mbClientUi::menuSlotDeviceNew );
144142
connect(ui->actionDeviceEdit , &QAction::triggered, this, &mbClientUi::menuSlotDeviceEdit );
@@ -228,10 +226,49 @@ void mbClientUi::menuSlotEditInsert()
228226
mbCoreUi::menuSlotEditInsert();
229227
}
230228

229+
void mbClientUi::menuSlotEditEdit()
230+
{
231+
QWidget* focus = QApplication::focusWidget();
232+
if (focus)
233+
{
234+
if (focus == ui->dockProject || ui->dockProject->isAncestorOf(focus))
235+
{
236+
if (m_projectUi->selectedDeviceCore())
237+
{
238+
menuSlotDeviceEdit();
239+
return;
240+
}
241+
if (m_projectUi->selectedPortCore())
242+
{
243+
menuSlotPortEdit();
244+
return;
245+
}
246+
}
247+
}
248+
mbCoreUi::menuSlotEditEdit();
249+
}
250+
231251
void mbClientUi::menuSlotEditDelete()
232252
{
233253
if (core()->isRunning())
234254
return;
255+
QWidget* focus = QApplication::focusWidget();
256+
if (focus)
257+
{
258+
if (focus == ui->dockProject || ui->dockProject->isAncestorOf(focus))
259+
{
260+
if (m_projectUi->selectedDeviceCore())
261+
{
262+
menuSlotDeviceDelete();
263+
return;
264+
}
265+
if (m_projectUi->selectedPortCore())
266+
{
267+
menuSlotPortDelete();
268+
return;
269+
}
270+
}
271+
}
235272
mbCoreUi::menuSlotEditDelete();
236273
}
237274

src/client/gui/client_ui.h

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -79,9 +79,10 @@ private Q_SLOTS:
7979
// ----------------------------
8080
// ------------EDIT------------
8181
// ----------------------------
82-
void menuSlotEditPaste () override;
83-
void menuSlotEditInsert () override;
84-
void menuSlotEditDelete () override;
82+
void menuSlotEditPaste () override;
83+
void menuSlotEditInsert () override;
84+
void menuSlotEditEdit () override;
85+
void menuSlotEditDelete () override;
8586
// ----------------------------
8687
// ------------PORT------------
8788
// ----------------------------

src/client/gui/client_ui.ui

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@
4848
<x>0</x>
4949
<y>0</y>
5050
<width>1239</width>
51-
<height>22</height>
51+
<height>21</height>
5252
</rect>
5353
</property>
5454
<widget class="QMenu" name="menuFile">
@@ -125,6 +125,7 @@
125125
<addaction name="actionEditCopy"/>
126126
<addaction name="actionEditPaste"/>
127127
<addaction name="actionEditInsert"/>
128+
<addaction name="actionEditEdit"/>
128129
<addaction name="actionEditDelete"/>
129130
<addaction name="separator"/>
130131
<addaction name="actionEditSelectAll"/>
@@ -550,6 +551,11 @@
550551
<string>Scanner...</string>
551552
</property>
552553
</action>
554+
<action name="actionEditEdit">
555+
<property name="text">
556+
<string>Edit</string>
557+
</property>
558+
</action>
553559
</widget>
554560
<resources>
555561
<include location="client_rsc.qrc"/>

src/client/gui/project/client_projectmodel.cpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,11 @@ mbCorePort *mbClientProjectModel::getPortByIndex(const QModelIndex &index) const
9696
return nullptr;
9797
}
9898

99+
mbCoreDevice *mbClientProjectModel::getDeviceByIndex(const QModelIndex &index) const
100+
{
101+
return device(index);
102+
}
103+
99104
QModelIndex mbClientProjectModel::deviceIndex(mbClientDevice *device) const
100105
{
101106
mbClientPort *port = device->port();

src/client/gui/project/client_projectmodel.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@ class mbClientProjectModel : public mbCoreProjectModel
4949
inline QModelIndex portIndex(mbClientPort *port) const { return mbCoreProjectModel::portIndex(reinterpret_cast<mbCorePort*>(port)); }
5050
inline mbClientPort *port(const QModelIndex &index) const { return reinterpret_cast<mbClientPort*>(portCore(index)); }
5151
mbCorePort *getPortByIndex(const QModelIndex &index) const override;
52+
mbCoreDevice *getDeviceByIndex(const QModelIndex &index) const override;
5253

5354
public:
5455
QModelIndex deviceIndex(mbClientDevice *device) const;

src/client/gui/project/client_projectui.cpp

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -36,14 +36,6 @@ mbClientProjectUi::mbClientProjectUi(QWidget *parent) :
3636
{
3737
}
3838

39-
mbClientDevice *mbClientProjectUi::currentDevice() const
40-
{
41-
QModelIndexList ls = m_view->selectionModel()->selectedIndexes();
42-
if (!ls.isEmpty())
43-
return static_cast<mbClientProjectModel*>(m_model)->device(ls.first());
44-
return nullptr;
45-
}
46-
4739
void mbClientProjectUi::doubleClick(const QModelIndex &index)
4840
{
4941
if (mbClientPort *d = static_cast<mbClientProjectModel*>(m_model)->port(index))

src/client/gui/project/client_projectui.h

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -35,9 +35,10 @@ class mbClientProjectUi : public mbCoreProjectUi
3535
explicit mbClientProjectUi(QWidget *parent = nullptr);
3636

3737
public:
38-
mbClientPort *currentPort () const { return reinterpret_cast<mbClientPort*>(currentPortCore ()); }
39-
mbClientPort *selectedPort() const { return reinterpret_cast<mbClientPort*>(selectedPortCore()); }
40-
mbClientDevice *currentDevice() const;
38+
inline mbClientPort *currentPort() const { return reinterpret_cast<mbClientPort*>(currentPortCore ()); }
39+
inline mbClientPort *selectedPort() const { return reinterpret_cast<mbClientPort*>(selectedPortCore()); }
40+
inline mbClientDevice *currentDevice() const { return reinterpret_cast<mbClientDevice*>(currentDeviceCore ()); }
41+
inline mbClientDevice *selectedDevice() const { return reinterpret_cast<mbClientDevice*>(selectedDeviceCore()); }
4142

4243
Q_SIGNALS:
4344
void deviceDoubleClick(mbClientDevice *device);

src/core/gui/core_ui.cpp

Lines changed: 56 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -152,7 +152,7 @@ void mbCoreUi::initialize()
152152
QAction* actionQuit = new QAction("Quit", menu);
153153
connect(actionShow, SIGNAL(triggered()), this, SLOT(fileQuit()));
154154
connect(m_tray, SIGNAL(activated(QSystemTrayIcon::ActivationReason)),
155-
this, SLOT(trayActivated(QSystemTrayIcon::ActivationReason)));
155+
this, SLOT(slotTrayActivated(QSystemTrayIcon::ActivationReason)));
156156
menu->addAction(actionShow);
157157
menu->addSeparator();
158158
menu->addAction(actionQuit);
@@ -325,44 +325,12 @@ void mbCoreUi::menuSlotEditCut()
325325

326326
void mbCoreUi::menuSlotEditCopy()
327327
{
328-
mbCoreDataViewUi *ui = m_dataViewManager->activeDataViewUiCore();
329-
if (ui)
330-
{
331-
auto selectedItems = ui->selectedItemsCore();
332-
if (selectedItems.count())
333-
{
334-
QBuffer buff;
335-
buff.open(QIODevice::ReadWrite);
336-
m_builder->exportDataViewItemsXml(&buff, selectedItems);
337-
buff.seek(0);
338-
QByteArray b = buff.readAll();
339-
QApplication::clipboard()->setText(QString::fromUtf8(b));
340-
}
341-
}
328+
slotDataViewItemCopy();
342329
}
343330

344331
void mbCoreUi::menuSlotEditPaste()
345332
{
346-
mbCoreDataViewUi *ui = m_dataViewManager->activeDataViewUiCore();
347-
if (ui)
348-
{
349-
QString text = QApplication::clipboard()->text();
350-
if (text.isEmpty())
351-
return;
352-
QByteArray b = text.toUtf8();
353-
QBuffer buff(&b);
354-
buff.open(QIODevice::ReadOnly);
355-
auto items = m_builder->importDataViewItemsXml(&buff);
356-
if (items.count())
357-
{
358-
mbCoreDataView *dataView = ui->dataViewCore();
359-
int index = -1;
360-
auto selectedItems = ui->selectedItemsCore();
361-
if (selectedItems.count())
362-
index = dataView->itemIndex(selectedItems.first());
363-
dataView->itemsInsert(items, index);
364-
}
365-
}
333+
slotDataViewItemPaste();
366334
}
367335

368336
void mbCoreUi::menuSlotEditInsert()
@@ -372,24 +340,17 @@ void mbCoreUi::menuSlotEditInsert()
372340

373341
void mbCoreUi::menuSlotEditEdit()
374342
{
343+
menuSlotDataViewItemEdit();
375344
}
376345

377346
void mbCoreUi::menuSlotEditDelete()
378347
{
379-
mbCoreDataViewUi *ui = m_dataViewManager->activeDataViewUiCore();
380-
if (ui)
381-
{
382-
mbCoreDataView *dataView = ui->dataViewCore();
383-
auto selectedItems = ui->selectedItemsCore();
384-
dataView->itemsRemove(selectedItems);
385-
}
348+
menuSlotDataViewItemDelete();
386349
}
387350

388351
void mbCoreUi::menuSlotEditSelectAll()
389352
{
390-
mbCoreDataViewUi *ui = m_dataViewManager->activeDataViewUiCore();
391-
if (ui)
392-
ui->selectAll();
353+
slotDataViewItemSelectAll();
393354
}
394355

395356
void mbCoreUi::menuSlotViewProject()
@@ -770,7 +731,56 @@ void mbCoreUi::menuSlotHelpContents()
770731
m_help->show();
771732
}
772733

773-
void mbCoreUi::trayActivated(QSystemTrayIcon::ActivationReason reason)
734+
void mbCoreUi::slotDataViewItemCopy()
735+
{
736+
mbCoreDataViewUi *ui = m_dataViewManager->activeDataViewUiCore();
737+
if (ui)
738+
{
739+
auto selectedItems = ui->selectedItemsCore();
740+
if (selectedItems.count())
741+
{
742+
QBuffer buff;
743+
buff.open(QIODevice::ReadWrite);
744+
m_builder->exportDataViewItemsXml(&buff, selectedItems);
745+
buff.seek(0);
746+
QByteArray b = buff.readAll();
747+
QApplication::clipboard()->setText(QString::fromUtf8(b));
748+
}
749+
}
750+
}
751+
752+
void mbCoreUi::slotDataViewItemPaste()
753+
{
754+
mbCoreDataViewUi *ui = m_dataViewManager->activeDataViewUiCore();
755+
if (ui)
756+
{
757+
QString text = QApplication::clipboard()->text();
758+
if (text.isEmpty())
759+
return;
760+
QByteArray b = text.toUtf8();
761+
QBuffer buff(&b);
762+
buff.open(QIODevice::ReadOnly);
763+
auto items = m_builder->importDataViewItemsXml(&buff);
764+
if (items.count())
765+
{
766+
mbCoreDataView *dataView = ui->dataViewCore();
767+
int index = -1;
768+
auto selectedItems = ui->selectedItemsCore();
769+
if (selectedItems.count())
770+
index = dataView->itemIndex(selectedItems.first());
771+
dataView->itemsInsert(items, index);
772+
}
773+
}
774+
}
775+
776+
void mbCoreUi::slotDataViewItemSelectAll()
777+
{
778+
mbCoreDataViewUi *ui = m_dataViewManager->activeDataViewUiCore();
779+
if (ui)
780+
ui->selectAll();
781+
}
782+
783+
void mbCoreUi::slotTrayActivated(QSystemTrayIcon::ActivationReason reason)
774784
{
775785
switch(reason)
776786
{

src/core/gui/core_ui.h

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -182,7 +182,12 @@ protected Q_SLOTS:
182182
virtual void menuSlotHelpAboutQt ();
183183
virtual void menuSlotHelpContents();
184184
//------------------------------
185-
virtual void trayActivated(QSystemTrayIcon::ActivationReason reason);
185+
186+
protected Q_SLOTS: // non menu slots
187+
virtual void slotDataViewItemCopy();
188+
virtual void slotDataViewItemPaste();
189+
virtual void slotDataViewItemSelectAll();
190+
virtual void slotTrayActivated(QSystemTrayIcon::ActivationReason reason);
186191

187192
protected Q_SLOTS:
188193
void currentPortChanged(mbCorePort *port);

0 commit comments

Comments
 (0)