summaryrefslogtreecommitdiffstats
path: root/src/ui/widget/anchor-selector.cpp
diff options
context:
space:
mode:
authorDenis Declara <declara91@gmail.com>2012-03-26 15:30:27 +0000
committerDenis Declara <declara91@gmail.com>2012-03-26 15:30:27 +0000
commit6b958fd1779e1882dbd91f714719cfae08752f67 (patch)
tree33bffa424686fdfc81c2aff6a6699d6787a5f70d /src/ui/widget/anchor-selector.cpp
parenttrunk merge (diff)
downloadinkscape-6b958fd1779e1882dbd91f714719cfae08752f67.tar.gz
inkscape-6b958fd1779e1882dbd91f714719cfae08752f67.zip
Added anchor-selection widget, it doesn't do much at the moment, next step will be to wire everything together,
btw, you can see the widget in the 'rows and columns' panel (bzr r11073.1.3)
Diffstat (limited to 'src/ui/widget/anchor-selector.cpp')
-rw-r--r--src/ui/widget/anchor-selector.cpp123
1 files changed, 123 insertions, 0 deletions
diff --git a/src/ui/widget/anchor-selector.cpp b/src/ui/widget/anchor-selector.cpp
new file mode 100644
index 000000000..f32346436
--- /dev/null
+++ b/src/ui/widget/anchor-selector.cpp
@@ -0,0 +1,123 @@
+/*
+ * anchor-selector.cpp
+ *
+ * Created on: Mar 22, 2012
+ * Author: denis
+ */
+
+#include <iostream>
+#include "widgets/icon.h"
+#include "ui/icon-names.h"
+#include "ui/widget/anchor-selector.h"
+
+void AnchorSelector::setupButton(const Glib::ustring& icon, Gtk::ToggleButton& button) {
+ Gtk::Widget* buttonIcon = Gtk::manage(sp_icon_get_icon(icon, Inkscape::ICON_SIZE_LARGE_TOOLBAR));
+ buttonIcon->show();
+
+ button.set_relief(Gtk::RELIEF_NONE);
+ button.show();
+ button.add(*buttonIcon);
+ button.set_can_focus(false);
+}
+
+AnchorSelector::AnchorSelector()
+ : Gtk::Alignment(0.5, 0, 0, 0),
+ _container(3, 3, true)
+{
+ setupButton(INKSCAPE_ICON("boundingbox_top_left"), _buttons[0]);
+ setupButton(INKSCAPE_ICON("boundingbox_top"), _buttons[1]);
+ setupButton(INKSCAPE_ICON("boundingbox_top_right"), _buttons[2]);
+ setupButton(INKSCAPE_ICON("boundingbox_left"), _buttons[3]);
+ setupButton(INKSCAPE_ICON("boundingbox_center"), _buttons[4]);
+ setupButton(INKSCAPE_ICON("boundingbox_right"), _buttons[5]);
+ setupButton(INKSCAPE_ICON("boundingbox_bottom_left"), _buttons[6]);
+ setupButton(INKSCAPE_ICON("boundingbox_bottom"), _buttons[7]);
+ setupButton(INKSCAPE_ICON("boundingbox_bottom_right"), _buttons[8]);
+
+ _buttons[0].signal_clicked().connect(sigc::mem_fun(*this, &AnchorSelector::btn_tl_activated));
+ _buttons[1].signal_clicked().connect(sigc::mem_fun(*this, &AnchorSelector::btn_t_activated));
+ _buttons[2].signal_clicked().connect(sigc::mem_fun(*this, &AnchorSelector::btn_tr_activated));
+ _buttons[3].signal_clicked().connect(sigc::mem_fun(*this, &AnchorSelector::btn_l_activated));
+ _buttons[4].signal_clicked().connect(sigc::mem_fun(*this, &AnchorSelector::btn_c_activated));
+ _buttons[5].signal_clicked().connect(sigc::mem_fun(*this, &AnchorSelector::btn_r_activated));
+ _buttons[6].signal_clicked().connect(sigc::mem_fun(*this, &AnchorSelector::btn_bl_activated));
+ _buttons[7].signal_clicked().connect(sigc::mem_fun(*this, &AnchorSelector::btn_b_activated));
+ _buttons[8].signal_clicked().connect(sigc::mem_fun(*this, &AnchorSelector::btn_br_activated));
+
+ for(int i = 0; i < 9; ++i) {
+ _container.attach(_buttons[i], i % 3, i % 3+1, i / 3, i / 3+1, Gtk::FILL, Gtk::FILL);
+ }
+ _selection = 4;
+ _buttons[4].set_active();
+
+ this->add(_container);
+}
+
+AnchorSelector::~AnchorSelector()
+{
+ // TODO Auto-generated destructor stub
+}
+
+void AnchorSelector::btn_activated(int index)
+{
+ if(_buttons[index].get_active())
+ {
+ std::cout << "btn_activated(" << index << ", old=" << _selection << ");" << std::endl;
+ if(index != _selection)
+ {
+ _buttons[_selection].set_active(false);
+ _buttons[index].set_active();
+ _selection = index;
+ } else {
+ _buttons[index].set_active();
+ }
+ }
+}
+
+void AnchorSelector::btn_tl_activated()
+{
+ btn_activated(0);
+}
+
+void AnchorSelector::btn_t_activated()
+{
+ btn_activated(1);
+}
+
+void AnchorSelector::btn_tr_activated()
+{
+ btn_activated(2);
+}
+
+void AnchorSelector::btn_l_activated()
+{
+ btn_activated(3);
+}
+
+void AnchorSelector::btn_c_activated()
+{
+ btn_activated(4);
+}
+
+void AnchorSelector::btn_r_activated()
+{
+ btn_activated(5);
+}
+
+void AnchorSelector::btn_bl_activated()
+{
+ btn_activated(6);
+}
+
+void AnchorSelector::btn_b_activated()
+{
+ btn_activated(7);
+}
+
+void AnchorSelector::btn_br_activated()
+{
+ btn_activated(8);
+}
+
+
+