1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
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);
}
|