LibreCAD
 All Classes Namespaces Files Functions Variables Enumerations Enumerator Friends Macros
toolbartab.cpp
Go to the documentation of this file.
1 #include "toolbartab.h"
2 #include "ui_toolbartab.h"
3 
4 ToolbarTab::ToolbarTab(QWidget *parent) :
5  QWidget(parent),
6  ui(new Ui::ToolbarTab) {
7  ui->setupUi(this);
8 
9  if(ui->container->layout() == 0) {
10  _layout = new QHBoxLayout();
11  ui->container->setLayout(_layout);
12  }
13  else {
14  _layout = dynamic_cast<QHBoxLayout*>(ui->container->layout());
15 
16  if(!_layout) {
17  throw "Wrong layout for ToolbarTab container";
18  }
19  }
20 }
21 
22 QGroupBox* ToolbarTab::addGroup(const char* name) {
23  auto group = new QGroupBox(tr(name));
24  group->setLayout(new QGridLayout());
25 
26  _layout->insertWidget(_layout->count() - 1, group);
27 
28  return group;
29 }
30 
31 QPushButton* ToolbarTab::addButton(QGroupBox* groupBox, const char* buttonName, int x, int y, int w, int h) {
32  auto button = new QPushButton(buttonName);
33 
34  addWidget(groupBox, button, x, y, w, h);
35 
36  return button;
37 }
38 
39 void ToolbarTab::addWidget(QGroupBox *groupBox, QWidget *widget, int x, int y, int w, int h) {
40  if(groupBox == nullptr) {
41  return;
42  }
43 
44  auto gridLayout = dynamic_cast<QGridLayout*>(groupBox->layout());
45 
46  if(gridLayout) {
47  gridLayout->addWidget(widget, y, x, h, w);
48  }
49  else {
50  groupBox->layout()->addWidget(widget);
51  }
52 }
53 
54 QGroupBox* ToolbarTab::groupByName(const char* groupName) {
55  auto nbGroups = _layout->count();
56 
57  for (int i = 0; i < nbGroups; i++) {
58  auto groupBox = dynamic_cast<QGroupBox*>(_layout->itemAt(i)->widget());
59 
60  if (groupBox && groupBox->title() == groupName) {
61  return groupBox;
62  }
63  }
64 
65  return nullptr;
66 }
67 
68 QPushButton *ToolbarTab::buttonByText(QGroupBox* groupBox, const char* buttonText) {
69  auto nbButtons = groupBox->layout()->count();
70 
71  for (int i = 0; i < nbButtons; i++) {
72  auto button = dynamic_cast<QPushButton*>(groupBox->layout()->itemAt(i)->widget());
73 
74  if(button && button->text() == buttonText) {
75  return button;
76  }
77  }
78 
79  return nullptr;
80 }
81 
82 void ToolbarTab::removeGroup(QGroupBox *group) {
83  if(group == nullptr) {
84  return;
85  }
86 
87  delete group;
88 }
89 
90 void ToolbarTab::removeButton(QPushButton *button) {
91  if(button != nullptr) {
92  delete button;
93  }
94 }
QGroupBox * addGroup(const char *name)
Add new group.
Definition: toolbartab.cpp:22
void addWidget(QGroupBox *groupBox, QWidget *widget, int x=0, int y=0, int w=0, int h=1)
Add new widget.
Definition: toolbartab.cpp:39
Widget used as tab for toolbar containing buttons.
Definition: toolbartab.h:19
void removeGroup(QGroupBox *group)
Remove group.
Definition: toolbartab.cpp:82
Ui::ToolbarTab * ui
Definition: toolbartab.h:84
void removeButton(QPushButton *button)
Remove button.
Definition: toolbartab.cpp:90
ToolbarTab(QWidget *parent=0)
Create widget.
Definition: toolbartab.cpp:4
QHBoxLayout * _layout
Definition: toolbartab.h:85
QPushButton * addButton(QGroupBox *groupBox, const char *buttonName, int x=0, int y=0, int w=1, int h=1)
Create a new button and add it to the page.
Definition: toolbartab.cpp:31
QPushButton * buttonByText(QGroupBox *groupBox, const char *buttonText)
Get existing button.
Definition: toolbartab.cpp:68
QGroupBox * groupByName(const char *groupName)
Get existing group.
Definition: toolbartab.cpp:54