1
#include "guides2page.h"
2
#include "guidessetupdialog.h"
4
#include "tkfloatspinbox.h"
5
#include "tkcombobox.h"
8
#include "kivio_page.h"
9
#include "kivio_canvas.h"
10
#include "kivio_view.h"
11
#include "kivio_guidelines.h"
13
#include <kiconloader.h>
18
#include <qlistview.h>
19
#include <qpushbutton.h>
21
GuidesTwoPositionPage::GuidesTwoPositionPage(KivioView* view, QWidget* parent, const char* name)
22
: GuidesTwoPositionPageBase(parent, name)
24
installEventFilter(this);
26
m_pCanvas = view->canvasWidget();
27
m_pPage = view->activePage();
29
listView->addColumn("",20);
30
listView->addColumn("",1);
31
listView->addColumn("",1);
32
listView->header()->hide();
33
listView->setColumnAlignment(1,AlignRight);
34
listView->setColumnAlignment(2,AlignRight);
35
listView->clipper()->installEventFilter(this);
37
connect(moveButton,SIGNAL(clicked()),SLOT(slotMoveButton()));
38
connect(moveByButton,SIGNAL(clicked()),SLOT(slotMoveByButton()));
39
connect(deleteButton,SIGNAL(clicked()),SLOT(slotDeleteButton()));
40
connect(deleteAllButton,SIGNAL(clicked()),SLOT(slotDeleteAllButton()));
41
connect(selectAllButton,SIGNAL(clicked()),SLOT(slotSelectAllButton()));
42
connect(clearSelectionButton,SIGNAL(clicked()),SLOT(slotClearSelectionButton()));
44
connect(units,SIGNAL(activated(int)),SLOT(slotUnitChanged(int)));
46
connect(listView,SIGNAL(currentChanged(QListViewItem*)),SLOT(slotCurrentChanged(QListViewItem*)));
47
connect(listView,SIGNAL(selectionChanged()),SLOT(selectionChanged()));
49
units->setUnit(m_pPage->doc()->units());
55
GuidesTwoPositionPage::~GuidesTwoPositionPage()
59
void GuidesTwoPositionPage::slotUnitChanged(int u)
61
for (QListViewItem* i = listView->firstChild(); i; i = i->nextSibling())
62
((GuidesListViewItem*)i)->setUnit(u);
65
void GuidesTwoPositionPage::updateListView(bool rebuild)
68
KivioGuidesList list = m_pPage->guideLines()->guides();
71
for (KivioGuideLineData* d = list.first(); d; d = list.next()) {
72
GuidesListViewItem* i = new GuidesListViewItem(listView,d,true);
73
i->setUnit(units->unit());
75
updateListViewColumn();
76
slotCurrentChanged(0);
78
listView->triggerUpdate();
83
bool haveSelections = false;
84
for (QListViewItem* i = listView->firstChild(); i; i = i->nextSibling()) {
85
KivioGuideLineData* d = ((GuidesListViewItem*)i)->guideData();
86
i->setSelected(d->isSelected());
88
haveSelections = true;
90
listView->triggerUpdate();
92
moveByButton->setEnabled(haveSelections);
93
deleteButton->setEnabled(haveSelections);
98
void GuidesTwoPositionPage::updateButton()
100
bool state=listView->childCount()>0;
101
moveButton->setEnabled(state);
102
moveByButton->setEnabled(state);
103
deleteButton->setEnabled(state);
104
deleteAllButton->setEnabled(state);
105
selectAllButton->setEnabled(state);
106
clearSelectionButton->setEnabled(state);
109
void GuidesTwoPositionPage::updateListViewColumn()
111
int s = listView->clipper()->width();
112
s -= listView->header()->sectionSize(0);
113
listView->setColumnWidth(1,s/2);
114
listView->setColumnWidth(2,s/2);
115
listView->triggerUpdate();
118
void GuidesTwoPositionPage::slotMoveButton()
120
KivioGuideLineData* data = 0;
121
if (listView->currentItem())
122
data = ((GuidesListViewItem*)listView->currentItem())->guideData();
127
m_pCanvas->eraseGuides();
128
KivioGuideLines* gl = m_pPage->guideLines();
129
if (data->orientation() == Vertical) {
130
gl->moveSelectedByX(posVertical->value() - data->position());
131
gl->moveSelectedByY(posHorizontal->value());
133
gl->moveSelectedByY(posHorizontal->value() - data->position());
134
gl->moveSelectedByX(posVertical->value());
137
m_pCanvas->paintGuides();
138
updateListView(true);
143
void GuidesTwoPositionPage::slotMoveByButton()
145
KivioGuideLineData* data = 0;
146
if (listView->currentItem())
147
data = ((GuidesListViewItem*)listView->currentItem())->guideData();
149
m_pCanvas->eraseGuides();
150
KivioGuideLines* gl = m_pPage->guideLines();
151
gl->moveSelectedByX(posVertical->value());
152
gl->moveSelectedByY(posHorizontal->value());
153
m_pCanvas->paintGuides();
154
updateListView(true);
159
void GuidesTwoPositionPage::slotDeleteButton()
161
m_pCanvas->eraseGuides();
162
KivioGuideLines* gl = m_pPage->guideLines();
163
gl->removeSelected();
164
m_pCanvas->paintGuides();
165
updateListView(true);
166
slotCurrentChanged(0);
169
void GuidesTwoPositionPage::slotDeleteAllButton()
171
listView->selectAll(true);
173
slotCurrentChanged(0);
176
void GuidesTwoPositionPage::slotCurrentChanged(QListViewItem* i)
179
posVertical->setValue(0.0,UnitPoint);
180
posHorizontal->setValue(0.0,UnitPoint);
181
icon->setPixmap(QPixmap());
182
moveButton->setEnabled(false);
186
KivioGuideLineData* d = ((GuidesListViewItem*)i)->guideData();
187
if (d->orientation() == Vertical) {
188
posVertical->setValue(d->position(),UnitPoint);
189
posHorizontal->setValue(0.0,UnitPoint);
190
icon->setPixmap(BarIcon("guides_vertical"));
192
posHorizontal->setValue(d->position(),UnitPoint);
193
posVertical->setValue(0.0,UnitPoint);
194
icon->setPixmap(BarIcon("guides_horizontal"));
196
moveButton->setEnabled(true);
199
void GuidesTwoPositionPage::setCurrent(KivioGuideLineData* data)
201
for (QListViewItem* i = listView->firstChild(); i; i = i->nextSibling()) {
202
KivioGuideLineData* d = ((GuidesListViewItem*)i)->guideData();
204
listView->setCurrentItem(i);
208
listView->setCurrentItem(0);
211
bool GuidesTwoPositionPage::eventFilter(QObject* o, QEvent* ev)
213
if (o == this && ev->type() == QEvent::Show) {
214
updateListView(true);
217
if (o == listView->clipper() && (ev->type() == QEvent::LayoutHint || ev->type() == QEvent::Resize)) {
218
updateListViewColumn();
220
return GuidesTwoPositionPageBase::eventFilter(o,ev);
223
void GuidesTwoPositionPage::slotClearSelectionButton()
225
KivioGuideLines* gl = m_pPage->guideLines();
228
m_pCanvas->updateGuides();
229
updateListView(false);
232
void GuidesTwoPositionPage::selectionChanged()
234
KivioGuideLines* gl = m_pPage->guideLines();
235
for (QListViewItem* i = listView->firstChild(); i; i = i->nextSibling()) {
236
KivioGuideLineData* d = ((GuidesListViewItem*)i)->guideData();
243
m_pCanvas->updateGuides();
246
void GuidesTwoPositionPage::slotSelectAllButton()
248
KivioGuideLines* gl = m_pPage->guideLines();
251
m_pCanvas->updateGuides();
252
updateListView(false);
255
void GuidesTwoPositionPage::apply(QWidget*)
259
#include "guides2page.moc"