]> git.tdb.fi Git - r2c2.git/blob - source/designer/toolbar.cpp
Arrange widgets in Designer with GLtk::Layout
[r2c2.git] / source / designer / toolbar.cpp
1 #include <msp/gltk/row.h>
2 #include "toolbar.h"
3
4 using namespace std;
5 using namespace Msp;
6
7 Toolbar::Toolbar(const string &name):
8         expanded(true)
9 {
10         set_focusable(false);
11         set_layout(new GLtk::Row);
12         layout->set_margin(GLtk::Sides(6, 10));
13         layout->set_column_spacing(10);
14
15         add(*(lbl_title = new GLtk::Label(name)));
16
17         add(*(btn_expand = new GLtk::Button));
18         btn_expand->set_style("arrow_left");
19         btn_expand->set_tooltip("Collapse toolbar");
20         btn_expand->signal_clicked.connect(sigc::mem_fun(this, &Toolbar::expand_clicked));
21
22         add(*(pnl_content = new GLtk::Panel));
23         pnl_content->set_style("group");
24         GLtk::Layout *content_layout = new GLtk::Row;
25         pnl_content->set_layout(content_layout);
26         content_layout->set_margin(0);
27 }
28
29 void Toolbar::expand(bool e)
30 {
31         expanded = e;
32         btn_expand->set_style(expanded ? "arrow_left" : "arrow_right");
33         btn_expand->set_tooltip(expanded ? "Collapse toolbar" : "Expand toolbar");
34         pnl_content->set_visible(expanded);
35         signal_autosize_changed.emit();
36
37         signal_expanded.emit(expanded);
38 }
39
40 void Toolbar::expand_clicked()
41 {
42         expand(!expanded);
43 }