Subversion Repositories Scribus

Rev

Rev 20424 | Rev 22600 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
20424 jghali 1
/*
2
For general Scribus (>=1.3.2) copyright and licensing information please refer
3
to the COPYING file provided with the program. Following this notice may exist
4
a copyright and/or license notice that predates the release of Scribus 1.3.2
5
for which a new license (GPL+exception) is in place.
6
*/
7
#include <QModelIndex>
8
 
9
#include "ui/scrspinbox.h"
10
#include "scribusdoc.h"
11
#include "guidesdelegate.h"
12
#include "units.h"
13
 
14
 
15
GuidesDelegate::GuidesDelegate(QObject *parent)
16
        : QItemDelegate(parent),
17
                m_doc(0)
18
{
19
}
20
 
21
// QWidget * GuidesDelegate::createEditor(QWidget *parent,
22
//                                                                         const QStyleOptionViewItem &/* option */,
23
//                                                                         const QModelIndex &/* index */) const
24
// {
25
//      Q_ASSERT_X(m_doc != 0, "GuidesDelegate::createEditor",
26
//                         "No reference to the doc");
27
//      ScrSpinBox *editor = new ScrSpinBox(0, m_doc->currentPage()->height(),
28
//                                                                              parent, m_doc->unitIndex());
29
//      return editor;
30
// }
31
 
32
void GuidesDelegate::setEditorData(QWidget *editor,
33
                                                                   const QModelIndex &index) const
34
{
35
        double value = index.model()->data(index, Qt::EditRole).toDouble();
36
        ScrSpinBox *w = static_cast<ScrSpinBox*>(editor);
37
        w->setValue(value);
38
}
39
 
40
void GuidesDelegate::setModelData(QWidget *editor,
41
                                                                  QAbstractItemModel *model,
42
                                                                  const QModelIndex &index) const
43
{
44
        ScrSpinBox *w = static_cast<ScrSpinBox*>(editor);
21026 craig 45
        // When user exit widget, editor value may not be committed at this point
20424 jghali 46
        // so we have to get value from widget text
47
        double value = w->valueFromText(w->text());
48
        model->setData(index, value, Qt::EditRole);
49
}
50
 
51
void GuidesDelegate::updateEditorGeometry(QWidget *editor,
52
                                                                                  const QStyleOptionViewItem &option,
53
                                                                                  const QModelIndex &/* index */) const
54
{
55
        editor->setGeometry(option.rect);
56
}
57
 
58
void GuidesDelegate::setDoc(ScribusDoc * doc)
59
{
60
        m_doc = doc;
61
}
62
 
63
 
64
// horizontals
65
 
66
GuidesHDelegate::GuidesHDelegate(QObject *parent)
67
        : GuidesDelegate(parent)
68
{
69
}
70
 
71
QWidget * GuidesHDelegate::createEditor(QWidget *parent,
72
                                                                           const QStyleOptionViewItem &/* option */,
73
                                                                           const QModelIndex &/* index */) const
74
{
75
        Q_ASSERT_X(m_doc != 0, "GuidesHDelegate::createEditor",
76
                           "No reference to the doc");
77
        double uix = unitGetRatioFromIndex(m_doc->unitIndex());
78
        double min = 0.0 - (m_doc->bleeds()->top() * uix);
79
        double max = (m_doc->currentPage()->height() * uix)
80
                                 + (m_doc->bleeds()->bottom() * uix);
81
        ScrSpinBox *editor =
82
                        new ScrSpinBox(min,
83
                                                   max,
84
                                                   parent, m_doc->unitIndex());
85
        return editor;
86
}
87
 
88
// verticals
89
 
90
GuidesVDelegate::GuidesVDelegate(QObject *parent)
91
        : GuidesDelegate(parent)
92
{
93
}
94
 
95
QWidget * GuidesVDelegate::createEditor(QWidget *parent,
96
                                                                           const QStyleOptionViewItem &/* option */,
97
                                                                           const QModelIndex &/* index */) const
98
{
99
        Q_ASSERT_X(m_doc != 0, "GuidesVDelegate::createEditor",
100
                           "No reference to the doc");
101
        double uix = unitGetRatioFromIndex(m_doc->unitIndex());
102
        double min = 0.0 - (m_doc->bleeds()->left() * uix);
103
        double max = (m_doc->currentPage()->width() * uix)
104
                                 + (m_doc->bleeds()->right() * uix);
105
        ScrSpinBox *editor =
106
                        new ScrSpinBox(min,
107
                                                   max,
108
                                                   parent, m_doc->unitIndex());
109
        return editor;
110
}