Subversion Repositories Scribus

Rev

Rev 1676 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
1644 cbradney 1
/****************************************************************************
2
** ui.h extension file, included from the uic-generated form implementation.
3
**
4
** If you want to add, delete, or rename functions or slots, use
5
** Qt Designer to update this file, preserving your code.
6
**
7
** You should not define a constructor or destructor in this file.
8
** Instead, write your code in functions called init() and destroy().
9
** These will automatically be called by the form's constructor and
10
** destructor.
11
*****************************************************************************/
12
 
13
//Basically the same as Document Item Attributes for now... will get comboboxes later etc
14
void PageItemAttributes::init()
15
{
1652 cbradney 16
        relationships << tr("None") << tr("Relates To") << tr("Is Parent Of") << tr("Is Child Of");
1654 cbradney 17
        relationshipsData << "none" << "relation" << "parent" << "child";
1644 cbradney 18
}
19
 
20
void PageItemAttributes::destroy()
21
{
22
        //blah2
23
}
24
 
25
 
2570 cbradney 26
void PageItemAttributes::setup(ObjAttrVector *pageItemAttrs, ObjAttrVector *docItemAttrs)
1644 cbradney 27
{
2570 cbradney 28
        localAttributes=*pageItemAttrs;
29
        localDocAttributes=*docItemAttrs;
30
 
31
        nameList.clear();
32
        nameList.append("");
33
        for(ObjAttrVector::Iterator it = localDocAttributes.begin(); it!= localDocAttributes.end(); ++it)
34
                nameList.append((*it).name);
35
 
1654 cbradney 36
        updateTable();
1644 cbradney 37
}
38
 
1649 cbradney 39
ObjAttrVector* PageItemAttributes::getNewAttributes()
1644 cbradney 40
{
1649 cbradney 41
        return &localAttributes;
1644 cbradney 42
}
43
 
44
 
45
void PageItemAttributes::tableItemChanged( int row, int col )
46
{
1649 cbradney 47
        switch (col)
1644 cbradney 48
        {
1649 cbradney 49
                case 0:
50
                        localAttributes[row].name=attributesTable->text(row, col);
51
                        break;
52
                case 1:
53
                        localAttributes[row].type=attributesTable->text(row, col);
54
                        break;
55
                case 2:
56
                        localAttributes[row].value=attributesTable->text(row, col);
57
                        break;
58
                case 3:
59
                        localAttributes[row].parameter=attributesTable->text(row, col);
60
                        break;
1654 cbradney 61
                case 4:
62
                {
63
                        QComboTableItem* qcti=dynamic_cast<QComboTableItem*>(attributesTable->item(row,col));
64
                        if (qcti!=NULL)
65
                        {
66
                                uint index=qcti->currentItem();
67
                                if (index<relationshipsData.count())
68
                                        localAttributes[row].relationship=relationshipsData[index];
69
                        }
70
                }
71
                break;
72
                case 5:
73
                        localAttributes[row].relationshipto=attributesTable->text(row, col);
74
                        break;
75
                case 6:
76
                        //AutoAddTo is not used once this gets to the page items
77
                        /*
78
                        {
79
                                QComboTableItem* qcti=dynamic_cast<QComboTableItem*>(attributesTable->item(row,col));
80
                                if (qcti!=NULL)
81
                                {
82
                                        uint index=qcti->currentItem();
83
                                        if (index<autoAddToData.count())
84
                                                localAttributes[row].autoaddto=autoAddToData[index];
85
                                }
86
                        }
87
                        */
88
                        break;
1649 cbradney 89
                default:
90
                        break;
1644 cbradney 91
        }
92
}
1650 cbradney 93
 
94
 
95
void PageItemAttributes::addEntry()
96
{
97
        ObjectAttribute blank;
1652 cbradney 98
        blank.relationship="None";
99
        blank.autoaddto="none";
1650 cbradney 100
        localAttributes.append(blank);
101
        updateTable();
102
}
103
 
104
 
105
void PageItemAttributes::deleteEntry()
106
{
107
        int currRow=attributesTable->currentRow();
108
        bool found=false;
109
        ObjAttrVector::Iterator it;
110
        int count=0;
111
        for(it = localAttributes.begin(); it!= localAttributes.end(); ++it)
112
        {
113
                if(count==currRow)
114
                {
115
                        found=true;
116
                        break;
117
                }
118
                ++count;
119
        }
120
        if (found)
121
        {
122
                localAttributes.erase(it);
123
                updateTable();
124
        }
125
}
126
 
127
 
128
void PageItemAttributes::clearEntries()
129
{
130
        localAttributes.clear();
131
        updateTable();
132
}
133
 
134
 
135
void PageItemAttributes::copyEntry()
136
{
137
        int currRow=attributesTable->currentRow();
138
        bool found=false;
139
        ObjAttrVector::Iterator it;
140
        int count=0;
141
        for(it = localAttributes.begin(); it!= localAttributes.end(); ++it)
142
        {
143
                if(count==currRow)
144
                {
145
                        found=true;
146
                        break;
147
                }
148
                ++count;
149
        }
150
        if (found)
151
        {
152
                localAttributes.append((*it));
153
                updateTable();
154
        }
155
}
156
 
157
 
158
void PageItemAttributes::updateTable()
159
{
160
        attributesTable->setNumRows(localAttributes.count());
161
        int row=0;
162
        for(ObjAttrVector::Iterator it = localAttributes.begin(); it!= localAttributes.end(); ++it)
163
        {
164
                uint i=0;
1652 cbradney 165
                //Name
2570 cbradney 166
                QComboTableItem *item1 = new QComboTableItem(attributesTable, nameList, true);
167
                if (nameList.contains((*it).name))
168
                        item1->setCurrentItem((*it).name);
169
                else
170
                        item1->setCurrentItem("");
1650 cbradney 171
                attributesTable->setItem(row, i++, item1);
1652 cbradney 172
                //Type
1650 cbradney 173
                QTableItem *item2 = new QTableItem(attributesTable, QTableItem::WhenCurrent, (*it).type);
174
                attributesTable->setItem(row, i++, item2);
1652 cbradney 175
                //Default Value
1650 cbradney 176
                QTableItem *item3 = new QTableItem(attributesTable, QTableItem::WhenCurrent, (*it).value);
177
                attributesTable->setItem(row, i++, item3);
1652 cbradney 178
                //Default Parameter
1650 cbradney 179
                QTableItem *item4 = new QTableItem(attributesTable, QTableItem::WhenCurrent, (*it).parameter);
180
                attributesTable->setItem(row, i++, item4);
1652 cbradney 181
                //Relationship
1654 cbradney 182
                QComboTableItem *item5 = new QComboTableItem(attributesTable, relationships);
1652 cbradney 183
                attributesTable->setItem(row, i++, item5);
1654 cbradney 184
                int index=relationshipsData.findIndex((*it).relationship);
185
                if (index==-1)
186
                {
187
                        (*it).relationship="none";
188
                        index=0;
189
                }
190
                item5->setCurrentItem(index);
1652 cbradney 191
                //Relationship to
192
                QTableItem *item6 = new QTableItem(attributesTable, QTableItem::WhenCurrent, (*it).relationshipto);
193
                attributesTable->setItem(row, i++, item6);
1654 cbradney 194
                //Auto Add to not used here
195
                /*
196
                QComboTableItem *item7 = new QComboTableItem(attributesTable, autoAddTo);
1652 cbradney 197
                attributesTable->setItem(row, i++, item7);
1654 cbradney 198
                index=autoAddToData.findIndex((*it).autoaddto);
199
                if (index==-1)
200
                {
201
                        (*it).autoaddto="none";
202
                        index=0;
203
                }
204
                item7->setCurrentItem(index);          
205
                */
1650 cbradney 206
 
207
                attributesTable->verticalHeader()->setLabel(row, QString("%1").arg(row));
208
                row++;
209
        }
210
        deleteButton->setEnabled(localAttributes.count()!=0);
211
        copyButton->setEnabled(localAttributes.count()!=0);
212
        clearButton->setEnabled(localAttributes.count()!=0);
213
}
1676 cbradney 214
 
215
 
216
void PageItemAttributes::okClicked()
217
{
218
        //Qt hack as we will lose data if the user hasnt left a cell
219
        //http://www.qtforum.org/thread.php?threadid=9078
220
        if (attributesTable->numRows()>0 && attributesTable->currentRow()!=-1)
221
        {
222
                //Avoid selecting 0,0 if 0,0 is current cell
223
                int selectCol;
224
                if(attributesTable->currentColumn()!=0)
225
                        selectCol=0;
226
                else
227
                        selectCol=1;
228
 
229
                attributesTable->setCurrentCell(0,selectCol);
230
                tableItemChanged(attributesTable->currentRow(), attributesTable->currentColumn());
231
        }
232
        accept();
233
}