diff --git a/.gitattributes b/.gitattributes index 259d47a40483500935b1f7fd751796c10b5685fa..01202c1da9a72c1e910d949913ba50b0fd7fd6df 100644 --- a/.gitattributes +++ b/.gitattributes @@ -182,6 +182,7 @@ CEP/DP3/AOFlagger/include/AOFlagger/blaswrap.h -text CEP/DP3/AOFlagger/include/AOFlagger/cleaner.h -text CEP/DP3/AOFlagger/include/AOFlagger/configuration.h -text CEP/DP3/AOFlagger/include/AOFlagger/f2c.h -text +CEP/DP3/AOFlagger/include/AOFlagger/gui/addstrategyactionmenu.h -text CEP/DP3/AOFlagger/include/AOFlagger/gui/antennamap/antenna.h -text CEP/DP3/AOFlagger/include/AOFlagger/gui/antennamap/antennamap.h -text CEP/DP3/AOFlagger/include/AOFlagger/gui/antennamap/antennamapwidget.h -text @@ -198,7 +199,6 @@ CEP/DP3/AOFlagger/include/AOFlagger/gui/imageplanewindow.h -text CEP/DP3/AOFlagger/include/AOFlagger/gui/imagewidget.h -text CEP/DP3/AOFlagger/include/AOFlagger/gui/msoptionwindow.h -text CEP/DP3/AOFlagger/include/AOFlagger/gui/mswindow.h -text -CEP/DP3/AOFlagger/include/AOFlagger/gui/newstrategyactionframe.h -text CEP/DP3/AOFlagger/include/AOFlagger/gui/noisestatoptionwindow.h -text CEP/DP3/AOFlagger/include/AOFlagger/gui/numinputdialog.h -text CEP/DP3/AOFlagger/include/AOFlagger/gui/plot/colorscale.h -text @@ -448,7 +448,6 @@ CEP/DP3/AOFlagger/src/gui/imageplanewindow.cpp -text CEP/DP3/AOFlagger/src/gui/imagewidget.cpp -text CEP/DP3/AOFlagger/src/gui/msoptionwindow.cpp -text CEP/DP3/AOFlagger/src/gui/mswindow.cpp -text -CEP/DP3/AOFlagger/src/gui/newstrategyactionframe.cpp -text CEP/DP3/AOFlagger/src/gui/noisestatoptionwindow.cpp -text CEP/DP3/AOFlagger/src/gui/plot/colorscale.cpp -text CEP/DP3/AOFlagger/src/gui/plot/horizontalplotscale.cpp -text diff --git a/CEP/DP3/AOFlagger/include/AOFlagger/gui/newstrategyactionframe.h b/CEP/DP3/AOFlagger/include/AOFlagger/gui/addstrategyactionmenu.h similarity index 57% rename from CEP/DP3/AOFlagger/include/AOFlagger/gui/newstrategyactionframe.h rename to CEP/DP3/AOFlagger/include/AOFlagger/gui/addstrategyactionmenu.h index f9341a9d77a082b67e619c24146fb14ef0c81931..45d3a8f342e22a2575f0ba835c7b89fe50ed8043 100644 --- a/CEP/DP3/AOFlagger/include/AOFlagger/gui/newstrategyactionframe.h +++ b/CEP/DP3/AOFlagger/include/AOFlagger/gui/addstrategyactionmenu.h @@ -17,27 +17,50 @@ * Free Software Foundation, Inc., * * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * ***************************************************************************/ -#ifndef NEWSTRATEGYACTIONFRAME_H -#define NEWSTRATEGYACTIONFRAME_H +#ifndef ADDSTRATEGYACTIONMENU_H +#define ADDSTRATEGYACTIONMENU_H -#include <gtkmm/button.h> -#include <gtkmm/buttonbox.h> -#include <gtkmm/frame.h> -#include <gtkmm/image.h> +#include <gtkmm/menu.h> + +#include <AOFlagger/strategy/control/actionfactory.h> + +#include <AOFlagger/gui/editstrategywindow.h> /** @author A.R. Offringa <offringa@astro.rug.nl> */ -class NewStrategyActionFrame : public Gtk::Frame { +class AddStrategyActionMenu : public Gtk::Menu { public: - NewStrategyActionFrame(class EditStrategyWindow &editStrategyWindow); - ~NewStrategyActionFrame(); + AddStrategyActionMenu(class EditStrategyWindow &editStrategyWindow) : + _editStrategyWindow(editStrategyWindow) + { + std::vector<std::string> actions = rfiStrategy::ActionFactory::GetActionList(); + + for(std::vector<std::string>::const_iterator i=actions.begin();i!=actions.end();++i) + { + Gtk::MenuItem *item = new Gtk::MenuItem(*i); + append(*item); + item->signal_activate().connect(sigc::bind<const std::string>(sigc::mem_fun(*this, &AddStrategyActionMenu::onActionSelected), *i)); + item->show(); + + _items.push_back(item); + } + } + + ~AddStrategyActionMenu() + { + for(std::vector<Gtk::MenuItem *>::const_iterator i=_items.begin();i!=_items.end();++i) + delete *i; + } + private: - void onButtonClicked(const std::string str); + void onActionSelected(const std::string str) + { + _editStrategyWindow.AddAction(rfiStrategy::ActionFactory::CreateAction(str)); + } - Gtk::VButtonBox _buttonBox; - std::vector<Gtk::Button *> _buttons; class EditStrategyWindow &_editStrategyWindow; + std::vector<Gtk::MenuItem *> _items; }; #endif diff --git a/CEP/DP3/AOFlagger/include/AOFlagger/gui/editstrategywindow.h b/CEP/DP3/AOFlagger/include/AOFlagger/gui/editstrategywindow.h index 3631762d896782117112529a5d5d47374fad0163..1dfa4d362257ce228b14dd4bfd8e60b0c56837e0 100644 --- a/CEP/DP3/AOFlagger/include/AOFlagger/gui/editstrategywindow.h +++ b/CEP/DP3/AOFlagger/include/AOFlagger/gui/editstrategywindow.h @@ -24,6 +24,7 @@ #include <gtkmm/button.h> #include <gtkmm/buttonbox.h> #include <gtkmm/frame.h> +#include <gtkmm/menutoolbutton.h> #include <gtkmm/paned.h> #include <gtkmm/scrolledwindow.h> #include <gtkmm/treemodel.h> @@ -52,7 +53,6 @@ class EditStrategyWindow : public Gtk::Window void fillStore(); void fillStore(Gtk::TreeModel::Row &row, rfiStrategy::Action &action, size_t childIndex); - void onAddActionClicked(); void onRemoveActionClicked(); void onMoveUpClicked(); void onMoveDownClicked(); @@ -100,13 +100,15 @@ class EditStrategyWindow : public Gtk::Window Gtk::VBox _strategyBox; rfiStrategy::Strategy *_strategy; Gtk::HButtonBox _strategyEditButtonBox, _strategyFileButtonBox, _strategyLoadDefaultsButtonBox; - Gtk::Button _addActionButton, _removeActionButton, _moveUpButton, _moveDownButton; + Gtk::MenuToolButton _addActionButton; + Gtk::Button _removeActionButton, _moveUpButton, _moveDownButton; Gtk::Button _addFOBButton, _addFOMSButton; Gtk::Button _loadEmptyButton, _loadDefaultButton, _load1Button, _load2Button, _load3Button, _saveButton, _openButton; ModelColumns _columns; Gtk::ScrolledWindow _viewScrollWindow; Gtk::TreeView _view; Glib::RefPtr<Gtk::TreeStore> _store; + Gtk::Menu *_addMenu; Gtk::Frame *_rightFrame; }; diff --git a/CEP/DP3/AOFlagger/src/CMakeLists.txt b/CEP/DP3/AOFlagger/src/CMakeLists.txt index 330526b26c138e18289ada85c6be7f53d92768d1..5a2b06b11ac8f1b2756ec9e7e8fc2ba275cb5adb 100644 --- a/CEP/DP3/AOFlagger/src/CMakeLists.txt +++ b/CEP/DP3/AOFlagger/src/CMakeLists.txt @@ -25,11 +25,11 @@ set(GUI_FILES gui/application.cpp gui/complexplaneplotwindow.cpp gui/editstrategywindow.cpp - gui/gotowindow gui/highlightwindow.cpp + gui/gotowindow + gui/highlightwindow.cpp gui/imageplanewindow gui/imagewidget.cpp gui/msoptionwindow.cpp gui/mswindow.cpp - gui/newstrategyactionframe.cpp gui/noisestatoptionwindow.cpp gui/plotframe.cpp gui/progresswindow.cpp diff --git a/CEP/DP3/AOFlagger/src/gui/editstrategywindow.cpp b/CEP/DP3/AOFlagger/src/gui/editstrategywindow.cpp index 498004a245e6e994ba6702043809f2b9eca9dfb7..96be82c13d90ca347fea057b8c4f293d465c22fa 100644 --- a/CEP/DP3/AOFlagger/src/gui/editstrategywindow.cpp +++ b/CEP/DP3/AOFlagger/src/gui/editstrategywindow.cpp @@ -29,7 +29,7 @@ #include <AOFlagger/gui/editstrategywindow.h> #include <AOFlagger/gui/mswindow.h> -#include <AOFlagger/gui/newstrategyactionframe.h> +#include <AOFlagger/gui/addstrategyactionmenu.h> #include <AOFlagger/gui/strategyframes/absthresholdframe.h> #include <AOFlagger/gui/strategyframes/baselineselectionframe.h> @@ -75,74 +75,64 @@ EditStrategyWindow::EditStrategyWindow(class MSWindow &msWindow) _viewScrollWindow.add(_view); _view.get_selection()->signal_changed().connect( sigc::mem_fun(*this, &EditStrategyWindow::onSelectionChanged)); - _view.show(); _viewScrollWindow.set_policy(Gtk::POLICY_AUTOMATIC, Gtk::POLICY_AUTOMATIC); _viewScrollWindow.set_size_request(100, 400); _strategyBox.pack_start(_viewScrollWindow); - _viewScrollWindow.show(); initEditButtons(); initLoadDefaultsButtons(); _paned.add1(_strategyBox); - _strategyBox.show(); add(_paned); - _paned.show(); - + + show_all(); + _strategy = &_msWindow.Strategy(); fillStore(); } EditStrategyWindow::~EditStrategyWindow() { + delete _addMenu; } void EditStrategyWindow::initEditButtons() { _strategyEditButtonBox.pack_start(_addActionButton); _addActionButton.set_sensitive(false); - _addActionButton.signal_clicked().connect(sigc::mem_fun(*this, &EditStrategyWindow::onAddActionClicked)); - _addActionButton.show(); + _addMenu = new AddStrategyActionMenu(*this); + _addActionButton.set_menu(*_addMenu); _strategyEditButtonBox.pack_start(_moveUpButton); _moveUpButton.set_sensitive(false); _moveUpButton.signal_clicked().connect(sigc::mem_fun(*this, &EditStrategyWindow::onMoveUpClicked)); - _moveUpButton.show(); _strategyEditButtonBox.pack_start(_moveDownButton); _moveDownButton.set_sensitive(false); _moveDownButton.signal_clicked().connect(sigc::mem_fun(*this, &EditStrategyWindow::onMoveDownClicked)); - _moveDownButton.show(); _strategyEditButtonBox.pack_start(_removeActionButton); _removeActionButton.set_sensitive(false); _removeActionButton.signal_clicked().connect(sigc::mem_fun(*this, &EditStrategyWindow::onRemoveActionClicked)); - _removeActionButton.show(); _strategyBox.pack_start(_strategyEditButtonBox, Gtk::PACK_SHRINK, 0); - _strategyEditButtonBox.show(); _strategyFileButtonBox.pack_start(_addFOBButton); _addFOBButton.signal_clicked().connect(sigc::mem_fun(*this, &EditStrategyWindow::onAddFOBaseline)); - _addFOBButton.show(); _strategyFileButtonBox.pack_start(_addFOMSButton); _addFOMSButton.signal_clicked().connect(sigc::mem_fun(*this, &EditStrategyWindow::onAddFOMS)); - _addFOMSButton.show(); _strategyFileButtonBox.pack_start(_saveButton); _saveButton.signal_clicked().connect(sigc::mem_fun(*this, &EditStrategyWindow::onSaveClicked)); - _saveButton.show(); _strategyFileButtonBox.pack_start(_openButton); _openButton.signal_clicked().connect(sigc::mem_fun(*this, &EditStrategyWindow::onOpenClicked)); - _openButton.show(); _strategyBox.pack_start(_strategyFileButtonBox, Gtk::PACK_SHRINK, 0); - _strategyFileButtonBox.show(); } void EditStrategyWindow::initLoadDefaultsButtons() @@ -202,12 +192,6 @@ void EditStrategyWindow::fillStore(Gtk::TreeModel::Row &row, Action &action, siz } } -void EditStrategyWindow::onAddActionClicked() -{ - clearRightFrame(); - showRight(new NewStrategyActionFrame(*this)); -} - void EditStrategyWindow::onRemoveActionClicked() { clearRightFrame(); diff --git a/CEP/DP3/AOFlagger/src/gui/newstrategyactionframe.cpp b/CEP/DP3/AOFlagger/src/gui/newstrategyactionframe.cpp deleted file mode 100644 index 2c7ac27cfbb3ee445f64f37c083c08e055180070..0000000000000000000000000000000000000000 --- a/CEP/DP3/AOFlagger/src/gui/newstrategyactionframe.cpp +++ /dev/null @@ -1,57 +0,0 @@ -/*************************************************************************** - * Copyright (C) 2008 by A.R. Offringa * - * offringa@astro.rug.nl * - * * - * This program is free software; you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation; either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program; if not, write to the * - * Free Software Foundation, Inc., * - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * - ***************************************************************************/ -#include <gtkmm/stock.h> -#include <gtkmm/enums.h> - -#include <AOFlagger/gui/editstrategywindow.h> -#include <AOFlagger/gui/newstrategyactionframe.h> - -#include <AOFlagger/strategy/control/actionfactory.h> - -NewStrategyActionFrame::NewStrategyActionFrame(EditStrategyWindow &editStrategyWindow) - : Gtk::Frame("New action"), - _editStrategyWindow(editStrategyWindow) -{ - std::vector<std::string> actions = rfiStrategy::ActionFactory::GetActionList(); - - for(std::vector<std::string>::const_iterator i=actions.begin();i!=actions.end();++i) - { - Gtk::Button *button = new Gtk::Button(*i); - _buttonBox.pack_start(*button); - button->signal_clicked().connect(sigc::bind<const std::string>(sigc::mem_fun(*this, &NewStrategyActionFrame::onButtonClicked), *i)); - button->show(); - - _buttons.push_back(button); - } - - add(_buttonBox); - _buttonBox.show(); -} - -NewStrategyActionFrame::~NewStrategyActionFrame() -{ - for(std::vector<Gtk::Button *>::const_iterator i=_buttons.begin();i!=_buttons.end();++i) - delete *i; -} - -void NewStrategyActionFrame::onButtonClicked(const std::string str) -{ - _editStrategyWindow.AddAction(rfiStrategy::ActionFactory::CreateAction(str)); -}