From feb47d5791840cacac582a1f5cb648c21e5de886 Mon Sep 17 00:00:00 2001 From: Bill Somerville Date: Mon, 7 Apr 2014 17:32:54 +0000 Subject: [PATCH] Palette editor improvements. Added an "Insert after..." context menu entry so it is possible to add new entires to the end of the list when the scroll area is full. git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@3988 ab8295b8-cf94-4d9e-aec4-7959e3be5d79 --- WFPalette.cpp | 34 ++++++++++++++++++++-------------- 1 file changed, 20 insertions(+), 14 deletions(-) diff --git a/WFPalette.cpp b/WFPalette.cpp index 37c9d00e7..af4754f49 100644 --- a/WFPalette.cpp +++ b/WFPalette.cpp @@ -169,6 +169,18 @@ namespace ui_.colour_table_widget->setItem (row, 0, item.release ()); } + void insert_new_item (int row, QColor const& default_colour) + { + // use the prior row colour as default if available + auto new_colour = QColorDialog::getColor (row > 0 ? colours_[row - 1] : default_colour, this); + if (new_colour.isValid ()) + { + ui_.colour_table_widget->insertRow (row); + colours_.insert (row, new_colour); + insert_item (row); + } + } + void context_menu (QPoint const& p) { context_menu_.clear (); @@ -188,21 +200,15 @@ namespace { auto item = ui_.colour_table_widget->itemAt (menu_pos_); int row = item ? item->row () : colours_.size (); + insert_new_item (row, QColor {0, 0, 0}); + }); - auto default_colour = QColor {0, 0, 0}; - if (row > 0) - { - // use the prior row colour - default_colour = colours_[row - 1]; - } - - auto new_colour = QColorDialog::getColor (default_colour, this); - if (new_colour.isValid ()) - { - ui_.colour_table_widget->insertRow (row); - colours_.insert (row, new_colour); - insert_item (row); - } + auto insert_after_action = context_menu_.addAction (tr ("Insert &after ...")); + connect (insert_after_action, &QAction::triggered, [this] () + { + auto item = ui_.colour_table_widget->itemAt (menu_pos_); + int row = item ? item->row () + 1 : colours_.size (); + insert_new_item( row, QColor {255, 255, 255}); }); menu_pos_ = p; // save for context menu action handlers