~ubuntu-branches/ubuntu/edgy/koffice/edgy-updates

« back to all changes in this revision

Viewing changes to kivio/kiviopart/ui/guides2page.cpp

  • Committer: Bazaar Package Importer
  • Author(s): Ben Burton
  • Date: 2004-05-09 11:33:00 UTC
  • mto: This revision was merged to the branch mainline in revision 3.
  • Revision ID: james.westby@ubuntu.com-20040509113300-xi5t1z4yxe7n03x7
Tags: upstream-1.3.1
ImportĀ upstreamĀ versionĀ 1.3.1

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
#include "guides2page.h"
2
 
#include "guidessetupdialog.h"
3
 
 
4
 
#include "tkfloatspinbox.h"
5
 
#include "tkcombobox.h"
6
 
 
7
 
#include "kivio_doc.h"
8
 
#include "kivio_page.h"
9
 
#include "kivio_canvas.h"
10
 
#include "kivio_view.h"
11
 
#include "kivio_guidelines.h"
12
 
 
13
 
#include <kiconloader.h>
14
 
#include <kdebug.h>
15
 
 
16
 
#include <qheader.h>
17
 
#include <qlabel.h>
18
 
#include <qlistview.h>
19
 
#include <qpushbutton.h>
20
 
 
21
 
GuidesTwoPositionPage::GuidesTwoPositionPage(KivioView* view, QWidget* parent, const char* name)
22
 
: GuidesTwoPositionPageBase(parent, name)
23
 
{
24
 
  installEventFilter(this);
25
 
 
26
 
  m_pCanvas = view->canvasWidget();
27
 
  m_pPage = view->activePage();
28
 
 
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);
36
 
 
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()));
43
 
 
44
 
  connect(units,SIGNAL(activated(int)),SLOT(slotUnitChanged(int)));
45
 
 
46
 
  connect(listView,SIGNAL(currentChanged(QListViewItem*)),SLOT(slotCurrentChanged(QListViewItem*)));
47
 
  connect(listView,SIGNAL(selectionChanged()),SLOT(selectionChanged()));
48
 
 
49
 
  units->setUnit(m_pPage->doc()->units());
50
 
  units->activate();
51
 
 
52
 
  updateListView(true);
53
 
}
54
 
 
55
 
GuidesTwoPositionPage::~GuidesTwoPositionPage()
56
 
{
57
 
}
58
 
 
59
 
void GuidesTwoPositionPage::slotUnitChanged(int u)
60
 
{
61
 
  for (QListViewItem* i = listView->firstChild(); i; i = i->nextSibling())
62
 
    ((GuidesListViewItem*)i)->setUnit(u);
63
 
}
64
 
 
65
 
void GuidesTwoPositionPage::updateListView(bool rebuild)
66
 
{
67
 
  if (rebuild) {
68
 
    KivioGuidesList list = m_pPage->guideLines()->guides();
69
 
    list.sort();
70
 
    listView->clear();
71
 
    for (KivioGuideLineData* d = list.first(); d; d = list.next()) {
72
 
      GuidesListViewItem* i = new GuidesListViewItem(listView,d,true);
73
 
      i->setUnit(units->unit());
74
 
    }
75
 
    updateListViewColumn();
76
 
    slotCurrentChanged(0);
77
 
 
78
 
    listView->triggerUpdate();
79
 
    updateButton();
80
 
    return;
81
 
  }
82
 
 
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());
87
 
    if (d->isSelected())
88
 
      haveSelections = true;
89
 
  }
90
 
  listView->triggerUpdate();
91
 
 
92
 
  moveByButton->setEnabled(haveSelections);
93
 
  deleteButton->setEnabled(haveSelections);
94
 
 
95
 
  listView->setFocus();
96
 
}
97
 
 
98
 
void GuidesTwoPositionPage::updateButton()
99
 
{
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);
107
 
}
108
 
 
109
 
void GuidesTwoPositionPage::updateListViewColumn()
110
 
{
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();
116
 
}
117
 
 
118
 
void GuidesTwoPositionPage::slotMoveButton()
119
 
{
120
 
  KivioGuideLineData* data = 0;
121
 
  if (listView->currentItem())
122
 
    data = ((GuidesListViewItem*)listView->currentItem())->guideData();
123
 
 
124
 
  if (!data)
125
 
    return;
126
 
 
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());
132
 
  } else {
133
 
    gl->moveSelectedByY(posHorizontal->value() - data->position());
134
 
    gl->moveSelectedByX(posVertical->value());
135
 
  }
136
 
 
137
 
  m_pCanvas->paintGuides();
138
 
  updateListView(true);
139
 
 
140
 
  setCurrent(data);
141
 
}
142
 
 
143
 
void GuidesTwoPositionPage::slotMoveByButton()
144
 
{
145
 
  KivioGuideLineData* data = 0;
146
 
  if (listView->currentItem())
147
 
    data = ((GuidesListViewItem*)listView->currentItem())->guideData();
148
 
 
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);
155
 
 
156
 
  setCurrent(data);
157
 
}
158
 
 
159
 
void GuidesTwoPositionPage::slotDeleteButton()
160
 
{
161
 
  m_pCanvas->eraseGuides();
162
 
  KivioGuideLines* gl = m_pPage->guideLines();
163
 
  gl->removeSelected();
164
 
  m_pCanvas->paintGuides();
165
 
  updateListView(true);
166
 
  slotCurrentChanged(0);
167
 
}
168
 
 
169
 
void GuidesTwoPositionPage::slotDeleteAllButton()
170
 
{
171
 
  listView->selectAll(true);
172
 
  slotDeleteButton();
173
 
  slotCurrentChanged(0);
174
 
}
175
 
 
176
 
void GuidesTwoPositionPage::slotCurrentChanged(QListViewItem* i)
177
 
{
178
 
  if (!i) {
179
 
    posVertical->setValue(0.0,UnitPoint);
180
 
    posHorizontal->setValue(0.0,UnitPoint);
181
 
    icon->setPixmap(QPixmap());
182
 
    moveButton->setEnabled(false);
183
 
    return;
184
 
  }
185
 
 
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"));
191
 
  } else {
192
 
    posHorizontal->setValue(d->position(),UnitPoint);
193
 
    posVertical->setValue(0.0,UnitPoint);
194
 
    icon->setPixmap(BarIcon("guides_horizontal"));
195
 
  }
196
 
  moveButton->setEnabled(true);
197
 
}
198
 
 
199
 
void GuidesTwoPositionPage::setCurrent(KivioGuideLineData* data)
200
 
{
201
 
  for (QListViewItem* i = listView->firstChild(); i; i = i->nextSibling()) {
202
 
    KivioGuideLineData* d = ((GuidesListViewItem*)i)->guideData();
203
 
    if (d == data) {
204
 
      listView->setCurrentItem(i);
205
 
      return;
206
 
    }
207
 
  }
208
 
  listView->setCurrentItem(0);
209
 
}
210
 
 
211
 
bool GuidesTwoPositionPage::eventFilter(QObject* o, QEvent* ev)
212
 
{
213
 
  if (o == this && ev->type() == QEvent::Show) {
214
 
    updateListView(true);
215
 
  }
216
 
 
217
 
  if (o == listView->clipper() && (ev->type() == QEvent::LayoutHint || ev->type() == QEvent::Resize)) {
218
 
    updateListViewColumn();
219
 
  }
220
 
  return GuidesTwoPositionPageBase::eventFilter(o,ev);
221
 
}
222
 
 
223
 
void GuidesTwoPositionPage::slotClearSelectionButton()
224
 
{
225
 
  KivioGuideLines* gl = m_pPage->guideLines();
226
 
  gl->unselectAll();
227
 
 
228
 
  m_pCanvas->updateGuides();
229
 
  updateListView(false);
230
 
}
231
 
 
232
 
void GuidesTwoPositionPage::selectionChanged()
233
 
{
234
 
  KivioGuideLines* gl = m_pPage->guideLines();
235
 
  for (QListViewItem* i = listView->firstChild(); i; i = i->nextSibling()) {
236
 
    KivioGuideLineData* d = ((GuidesListViewItem*)i)->guideData();
237
 
    if (i->isSelected())
238
 
      gl->select(d);
239
 
    else
240
 
      gl->unselect(d);
241
 
  }
242
 
 
243
 
  m_pCanvas->updateGuides();
244
 
}
245
 
 
246
 
void GuidesTwoPositionPage::slotSelectAllButton()
247
 
{
248
 
  KivioGuideLines* gl = m_pPage->guideLines();
249
 
  gl->selectAll();
250
 
 
251
 
  m_pCanvas->updateGuides();
252
 
  updateListView(false);
253
 
}
254
 
 
255
 
void GuidesTwoPositionPage::apply(QWidget*)
256
 
{
257
 
}
258
 
 
259
 
#include "guides2page.moc"