From 9d7c385bd271d73ea492eb3cd2036ca65f684784 Mon Sep 17 00:00:00 2001 From: Patrick Linstruth Date: Sat, 3 Nov 2018 18:03:14 -0700 Subject: [PATCH] Update macro editing --- rdlibrary/macro_cart.cpp | 79 ++++++++++++++++++++++++++++-------- rdlibrary/macro_cart.h | 3 +- rdlibrary/rdlibrary_cs.ts | 4 ++ rdlibrary/rdlibrary_de.ts | 4 ++ rdlibrary/rdlibrary_es.ts | 4 ++ rdlibrary/rdlibrary_fr.ts | 4 ++ rdlibrary/rdlibrary_nb.ts | 4 ++ rdlibrary/rdlibrary_nn.ts | 4 ++ rdlibrary/rdlibrary_pt_BR.ts | 4 ++ 9 files changed, 91 insertions(+), 19 deletions(-) diff --git a/rdlibrary/macro_cart.cpp b/rdlibrary/macro_cart.cpp index bf018c94..e846c983 100644 --- a/rdlibrary/macro_cart.cpp +++ b/rdlibrary/macro_cart.cpp @@ -67,6 +67,7 @@ MacroCart::MacroCart(RDCart *cart,QWidget *parent) rdcart_add_button->setGeometry(10,0,80,50); rdcart_add_button->setFont(button_font); rdcart_add_button->setText(tr("Add")); + rdcart_add_button->setEnabled(false); connect(rdcart_add_button,SIGNAL(clicked()),this,SLOT(addMacroData())); // @@ -76,6 +77,7 @@ MacroCart::MacroCart(RDCart *cart,QWidget *parent) rdcart_delete_button->setGeometry(10,60,80,50); rdcart_delete_button->setFont(button_font); rdcart_delete_button->setText(tr("Delete")); + rdcart_delete_button->setEnabled(false); connect(rdcart_delete_button,SIGNAL(clicked()),this,SLOT(deleteMacroData())); // @@ -85,6 +87,7 @@ MacroCart::MacroCart(RDCart *cart,QWidget *parent) rdcart_copy_button->setGeometry(10,120,80,50); rdcart_copy_button->setFont(button_font); rdcart_copy_button->setText(tr("Copy")); + rdcart_copy_button->setEnabled(false); connect(rdcart_copy_button,SIGNAL(clicked()),this,SLOT(copyMacroData())); // @@ -95,6 +98,7 @@ MacroCart::MacroCart(RDCart *cart,QWidget *parent) paste_macro_button->setFont(button_font); paste_macro_button->setText(tr("Paste")); paste_macro_button->setDisabled(true); + paste_macro_button->setEnabled(false); connect(paste_macro_button,SIGNAL(clicked()),this,SLOT(pasteMacroData())); // @@ -109,9 +113,13 @@ MacroCart::MacroCart(RDCart *cart,QWidget *parent) rdcart_macro_list->setItemMargin(5); rdcart_macro_list->setSorting(-1); connect(rdcart_macro_list, - SIGNAL(doubleClicked(Q3ListViewItem *,const QPoint &,int)), + SIGNAL(selectionChanged(Q3ListViewItem *)), this, - SLOT(doubleClickedData(Q3ListViewItem *,const QPoint &,int))); + SLOT(selectionChangedData(Q3ListViewItem *))); + connect(rdcart_macro_list, + SIGNAL(doubleClicked(Q3ListViewItem *)), + this, + SLOT(doubleClickedData(Q3ListViewItem *))); rdcart_macro_list->addColumn(tr("Line")); rdcart_macro_list->setColumnAlignment(0,Qt::AlignHCenter); @@ -132,6 +140,7 @@ MacroCart::MacroCart(RDCart *cart,QWidget *parent) rdcart_edit_button->setGeometry(550,0,80,50); rdcart_edit_button->setFont(button_font); rdcart_edit_button->setText(tr("Edit")); + rdcart_edit_button->setEnabled(false); connect(rdcart_edit_button,SIGNAL(clicked()),this,SLOT(editMacroData())); // @@ -141,6 +150,7 @@ MacroCart::MacroCart(RDCart *cart,QWidget *parent) rdcart_runline_button->setGeometry(550,120,80,50); rdcart_runline_button->setFont(button_font); rdcart_runline_button->setText(tr("Run\nLine")); + rdcart_runline_button->setEnabled(false); connect(rdcart_runline_button,SIGNAL(clicked()), this,SLOT(runLineMacroData())); @@ -153,14 +163,6 @@ MacroCart::MacroCart(RDCart *cart,QWidget *parent) rdcart_runcart_button->setText(tr("Run\nCart")); connect(rdcart_runcart_button,SIGNAL(clicked()), this,SLOT(runCartMacroData())); - - // - // Set Control Permissions - // - rdcart_add_button->setEnabled(rdcart_allow_modification); - rdcart_delete_button->setEnabled(rdcart_allow_modification); - rdcart_copy_button->setEnabled(rdcart_allow_modification); - rdcart_edit_button->setEnabled(rdcart_allow_modification); } @@ -194,7 +196,7 @@ void MacroCart::addMacroData() RDMacro cmd; unsigned line; - if(item==NULL) { + if(item==NULL||item->text(0).isEmpty()) { line=rdcart_events->size(); } else { @@ -229,7 +231,7 @@ void MacroCart::copyMacroData() return; } rdcart_clipboard=*rdcart_events->command(item->text(0).toUInt()-1); - paste_macro_button->setEnabled(true); + paste_macro_button->setEnabled(rdcart_allow_modification); } @@ -287,11 +289,30 @@ void MacroCart::runCartMacroData() } -void MacroCart::doubleClickedData(Q3ListViewItem *,const QPoint &,int) +void MacroCart::selectionChangedData(Q3ListViewItem *item) +{ + rdcart_add_button->setEnabled(rdcart_allow_modification); + if(!rdcart_clipboard.isNull()) { + paste_macro_button->setEnabled(rdcart_allow_modification); + } + if(!item->text(0).isEmpty()) { + rdcart_runline_button->setEnabled(rdcart_allow_modification); + rdcart_delete_button->setEnabled(rdcart_allow_modification); + rdcart_copy_button->setEnabled(rdcart_allow_modification); + rdcart_edit_button->setEnabled(rdcart_allow_modification); + } + else { + rdcart_runline_button->setEnabled(false); + rdcart_delete_button->setEnabled(false); + rdcart_copy_button->setEnabled(false); + rdcart_edit_button->setEnabled(false); + } +} + + +void MacroCart::doubleClickedData(Q3ListViewItem *item) { if(rdcart_allow_modification) { - Q3ListViewItem *item=rdcart_macro_list->selectedItem(); - if((item==NULL)||(item->text(0).isEmpty())) { addMacroData(); } @@ -304,14 +325,36 @@ void MacroCart::doubleClickedData(Q3ListViewItem *,const QPoint &,int) void MacroCart::RefreshList() { - Q3ListViewItem *item; + Q3ListViewItem *item=NULL; + Q3ListViewItem *selected; + QString line; + selected=rdcart_macro_list->selectedItem(); + if(selected!=NULL) { + line=selected->text(0); + } + + rdcart_macro_list->clear(); for(int i=0;isize();i++) { item=new Q3ListViewItem(rdcart_macro_list); item->setText(0,QString().sprintf("%03d",i+1)); item->setText(1,rdcart_events->command(i)->toString()); } SortLines(); + if(item!=NULL) { + item=new Q3ListViewItem(rdcart_macro_list,item); + } + else { + item=new Q3ListViewItem(rdcart_macro_list); + } + item->setText(1,tr("--- End of Cart ---")); + + if (!line.isEmpty()) { + selected=rdcart_macro_list->findItem(line,0); + if(selected!=NULL) { + rdcart_macro_list->setSelected(selected,true); + } + } } @@ -319,7 +362,6 @@ void MacroCart::RefreshLine(Q3ListViewItem *item) { int line=item->text(0).toInt()-1; item->setText(1,rdcart_events->command(line)->toString()); - SortLines(); } @@ -345,8 +387,9 @@ void MacroCart::AddLine(unsigned line,RDMacro *cmd) rdcart_events->insert(line,cmd); item=new Q3ListViewItem(rdcart_macro_list); item->setText(0,QString().sprintf("%03u",line+1)); - RefreshLine(item); + item->setText(1,rdcart_events->command(line)->toString()); rdcart_macro_list->setSelected(item,true); + RefreshList(); } diff --git a/rdlibrary/macro_cart.h b/rdlibrary/macro_cart.h index 1f9b814f..b1c60e7e 100644 --- a/rdlibrary/macro_cart.h +++ b/rdlibrary/macro_cart.h @@ -60,7 +60,8 @@ class MacroCart : public QWidget void editMacroData(); void runLineMacroData(); void runCartMacroData(); - void doubleClickedData(Q3ListViewItem *,const QPoint &,int); + void selectionChangedData(Q3ListViewItem *); + void doubleClickedData(Q3ListViewItem *); private: void RefreshList(); diff --git a/rdlibrary/rdlibrary_cs.ts b/rdlibrary/rdlibrary_cs.ts index c7f17688..470ea4c3 100644 --- a/rdlibrary/rdlibrary_cs.ts +++ b/rdlibrary/rdlibrary_cs.ts @@ -1150,6 +1150,10 @@ vozík Command + + --- End of Cart --- + + MainWidget diff --git a/rdlibrary/rdlibrary_de.ts b/rdlibrary/rdlibrary_de.ts index 63410ce3..9aaee180 100644 --- a/rdlibrary/rdlibrary_de.ts +++ b/rdlibrary/rdlibrary_de.ts @@ -1138,6 +1138,10 @@ starten Command + + --- End of Cart --- + + MainWidget diff --git a/rdlibrary/rdlibrary_es.ts b/rdlibrary/rdlibrary_es.ts index 590a0146..463131d7 100644 --- a/rdlibrary/rdlibrary_es.ts +++ b/rdlibrary/rdlibrary_es.ts @@ -1147,6 +1147,10 @@ Cartucho Command + + --- End of Cart --- + + MainWidget diff --git a/rdlibrary/rdlibrary_fr.ts b/rdlibrary/rdlibrary_fr.ts index 507b0027..753d0615 100644 --- a/rdlibrary/rdlibrary_fr.ts +++ b/rdlibrary/rdlibrary_fr.ts @@ -946,6 +946,10 @@ Cart Command + + --- End of Cart --- + + MainWidget diff --git a/rdlibrary/rdlibrary_nb.ts b/rdlibrary/rdlibrary_nb.ts index 044a48d4..06bcfe7a 100644 --- a/rdlibrary/rdlibrary_nb.ts +++ b/rdlibrary/rdlibrary_nb.ts @@ -1134,6 +1134,10 @@ korg Command + + --- End of Cart --- + + MainWidget diff --git a/rdlibrary/rdlibrary_nn.ts b/rdlibrary/rdlibrary_nn.ts index 044a48d4..06bcfe7a 100644 --- a/rdlibrary/rdlibrary_nn.ts +++ b/rdlibrary/rdlibrary_nn.ts @@ -1134,6 +1134,10 @@ korg Command + + --- End of Cart --- + + MainWidget diff --git a/rdlibrary/rdlibrary_pt_BR.ts b/rdlibrary/rdlibrary_pt_BR.ts index 64097f38..2fa0ca49 100644 --- a/rdlibrary/rdlibrary_pt_BR.ts +++ b/rdlibrary/rdlibrary_pt_BR.ts @@ -1136,6 +1136,10 @@ Cartão Command + + --- End of Cart --- + + MainWidget