diff --git a/ChangeLog b/ChangeLog index 971aa5cc..a32e999c 100644 --- a/ChangeLog +++ b/ChangeLog @@ -17981,3 +17981,6 @@ * Tweaked parameters of the Systemd service file to provide for more response startup of the 'rivendell' service after a system restart. +2018-11-05 Patrick Linstruth + * Update macro editor in rdlibrary(1) to fix display of + "--- End of cart ---" item and improve buttons and permissions. diff --git a/rdlibrary/macro_cart.cpp b/rdlibrary/macro_cart.cpp index e9ba1780..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())); // @@ -107,11 +111,15 @@ MacroCart::MacroCart(RDCart *cart,QWidget *parent) rdcart_macro_list->setGeometry(100,0,430,sizeHint().height()); rdcart_macro_list->setAllColumnsShowFocus(true); rdcart_macro_list->setItemMargin(5); - rdcart_macro_list->setSorting(0); + 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,10 +196,7 @@ void MacroCart::addMacroData() RDMacro cmd; unsigned line; - if(item==NULL) { - return; - } - if(item->text(0).isEmpty()) { + if(item==NULL||item->text(0).isEmpty()) { line=rdcart_events->size(); } else { @@ -232,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); } @@ -290,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(); } @@ -307,15 +325,36 @@ void MacroCart::doubleClickedData(Q3ListViewItem *,const QPoint &,int) void MacroCart::RefreshList() { - Q3ListViewItem *item; + Q3ListViewItem *item=NULL; + Q3ListViewItem *selected; + QString line; - item=new Q3ListViewItem(rdcart_macro_list); - item->setText(1,tr("--- End of cart ---")); + 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); + } + } } @@ -326,6 +365,13 @@ void MacroCart::RefreshLine(Q3ListViewItem *item) } +void MacroCart::SortLines() +{ + rdcart_macro_list->setSorting(0); + rdcart_macro_list->sort(); + rdcart_macro_list->setSorting(-1); +} + void MacroCart::AddLine(unsigned line,RDMacro *cmd) { unsigned curr_line; @@ -341,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 e4ecd7eb..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(); @@ -68,6 +69,7 @@ class MacroCart : public QWidget void AddLine(unsigned line,RDMacro *cmd); void DeleteLine(Q3ListViewItem *item); void UpdateLength(); + void SortLines(); RDCart *rdcart_cart; Q3ListView *rdcart_macro_list; QLabel *rdcart_macro_list_label; diff --git a/rdlibrary/rdlibrary_cs.ts b/rdlibrary/rdlibrary_cs.ts index 1f084b7c..470ea4c3 100644 --- a/rdlibrary/rdlibrary_cs.ts +++ b/rdlibrary/rdlibrary_cs.ts @@ -1140,7 +1140,7 @@ vozík --- End of cart --- - --- Konec vozíku --- + --- Konec vozíku --- Line @@ -1150,6 +1150,10 @@ vozík Command + + --- End of Cart --- + + MainWidget diff --git a/rdlibrary/rdlibrary_de.ts b/rdlibrary/rdlibrary_de.ts index 40cbff1e..9aaee180 100644 --- a/rdlibrary/rdlibrary_de.ts +++ b/rdlibrary/rdlibrary_de.ts @@ -1128,7 +1128,7 @@ starten --- End of cart --- - --- Ende des Carts --- + --- Ende des Carts --- Line @@ -1138,6 +1138,10 @@ starten Command + + --- End of Cart --- + + MainWidget diff --git a/rdlibrary/rdlibrary_es.ts b/rdlibrary/rdlibrary_es.ts index 08c96756..463131d7 100644 --- a/rdlibrary/rdlibrary_es.ts +++ b/rdlibrary/rdlibrary_es.ts @@ -1137,7 +1137,7 @@ Cartucho --- End of cart --- - --- Fin del cartucho --- + --- Fin del cartucho --- Line @@ -1147,6 +1147,10 @@ Cartucho Command + + --- End of Cart --- + + MainWidget diff --git a/rdlibrary/rdlibrary_fr.ts b/rdlibrary/rdlibrary_fr.ts index d151ba08..753d0615 100644 --- a/rdlibrary/rdlibrary_fr.ts +++ b/rdlibrary/rdlibrary_fr.ts @@ -938,10 +938,6 @@ Line Cart - - --- End of cart --- - - Line @@ -950,6 +946,10 @@ Cart Command + + --- End of Cart --- + + MainWidget diff --git a/rdlibrary/rdlibrary_nb.ts b/rdlibrary/rdlibrary_nb.ts index b5bb55c4..06bcfe7a 100644 --- a/rdlibrary/rdlibrary_nb.ts +++ b/rdlibrary/rdlibrary_nb.ts @@ -1124,7 +1124,7 @@ korg --- End of cart --- - --- Slutten på korga --- + --- Slutten på korga --- Line @@ -1134,6 +1134,10 @@ korg Command + + --- End of Cart --- + + MainWidget diff --git a/rdlibrary/rdlibrary_nn.ts b/rdlibrary/rdlibrary_nn.ts index b5bb55c4..06bcfe7a 100644 --- a/rdlibrary/rdlibrary_nn.ts +++ b/rdlibrary/rdlibrary_nn.ts @@ -1124,7 +1124,7 @@ korg --- End of cart --- - --- Slutten på korga --- + --- Slutten på korga --- Line @@ -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 2021d197..2fa0ca49 100644 --- a/rdlibrary/rdlibrary_pt_BR.ts +++ b/rdlibrary/rdlibrary_pt_BR.ts @@ -1126,7 +1126,7 @@ Cartão --- End of cart --- - -- Fim do Cartão -- + -- Fim do Cartão -- Line @@ -1136,6 +1136,10 @@ Cartão Command + + --- End of Cart --- + + MainWidget