Subversion Repositories Scribus

Rev

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

Rev Author Line No. Line
3 paul 1
#include "editformats.h"
2
#include "editformats.moc"
3
#include "edit1format.h"
4
#include <qmessagebox.h>
117 Franz 5
#include "customfdialog.h"
6
#include "scribusXml.h"
3 paul 7
extern QPixmap loadIcon(QString nam);
8
 
33 Franz 9
StilFormate::StilFormate( QWidget* parent, ScribusDoc *doc, preV *avail)
3 paul 10
    : QDialog( parent, "Formate", true, 0)
11
{
12
    resize( 327, 260 );
13
    setCaption( tr( "Edit Styles" ) );
83 Franz 14
        setIcon(loadIcon("AppIcon.png"));
3 paul 15
                fon = avail;
16
                Docu = doc;
17
    StilFormateLayout = new QHBoxLayout( this );
18
    StilFormateLayout->setSpacing( 5 );
19
    StilFormateLayout->setMargin( 10 );
20
 
21
    ListBox1 = new QListBox( this, "ListBox1" );
22
    ListBox1->setMinimumSize( QSize( 200, 240 ) );
23
    StilFormateLayout->addWidget( ListBox1 );
24
 
25
    Layout15 = new QVBoxLayout;
26
    Layout15->setSpacing( 6 );
27
    Layout15->setMargin( 0 );
28
 
117 Franz 29
    LoadS = new QPushButton( this, "LoadF" );
30
    LoadS->setText( tr( "Append" ) );
31
    Layout15->addWidget( LoadS );
32
 
3 paul 33
    NewB = new QPushButton( this, "NewB" );
34
    NewB->setText( tr( "New" ) );
35
    Layout15->addWidget( NewB );
36
 
37
    EditB = new QPushButton( this, "EditB" );
38
    EditB->setText( tr( "Edit" ) );
39
    EditB->setDefault( true );
40
    EditB->setEnabled(false);
41
    Layout15->addWidget( EditB );
42
 
43
    DublicateB = new QPushButton( this, "DublicateB" );
44
    DublicateB->setText( tr( "Duplicate" ) );
45
    DublicateB->setEnabled(false);
46
    Layout15->addWidget( DublicateB );
47
 
48
    DeleteB = new QPushButton( this, "DeleteB" );
49
    DeleteB->setText( tr( "Delete" ) );
50
    DeleteB->setEnabled(false);
51
    Layout15->addWidget( DeleteB );
52
 
53
    SaveB = new QPushButton( this, "SaveB" );
54
    SaveB->setText( tr( "Save" ) );
55
    Layout15->addWidget( SaveB );
56
 
57
    CancelB = new QPushButton( this, "CancelB" );
58
    CancelB->setText( tr( "Cancel" ) );
59
    Layout15->addWidget( CancelB );
60
    QSpacerItem* spacer = new QSpacerItem( 0, 0, QSizePolicy::Minimum, QSizePolicy::Expanding );
61
    Layout15->addItem( spacer );
62
    StilFormateLayout->addLayout( Layout15 );
63
 
64
    // signals and slots connections
65
    connect(CancelB, SIGNAL(clicked()), this, SLOT(reject()));
66
    connect(SaveB, SIGNAL(clicked()), this, SLOT(accept()));
67
    connect(EditB, SIGNAL(clicked()), this, SLOT(editFormat()));
68
    connect(NewB, SIGNAL(clicked()), this, SLOT(neuesFormat()));
117 Franz 69
    connect(LoadS, SIGNAL(clicked()), this, SLOT(loadStyles()));
3 paul 70
    connect(DublicateB, SIGNAL(clicked()), this, SLOT(dupFormat()));
71
    connect(DeleteB, SIGNAL(clicked()), this, SLOT(deleteFormat()));
72
    connect(ListBox1, SIGNAL(highlighted(QListBoxItem*)), this, SLOT(selFormat(QListBoxItem*)));
73
    TempVorl = doc->Vorlagen;
74
    UpdateFList();
75
}
76
 
77
void StilFormate::selFormat(QListBoxItem *c)
78
{
79
    sFnumber = c->listBox()->currentItem() + 5;
80
    EditB->setEnabled(true);
81
    DublicateB->setEnabled(true);
82
    DeleteB->setEnabled(true);
83
}
84
 
85
void StilFormate::dupFormat()
86
{
87
        struct StVorL sty;
115 Franz 88
        sty.Vname = tr("Copy of %1").arg(TempVorl[sFnumber].Vname);
3 paul 89
        sty.LineSpa = TempVorl[sFnumber].LineSpa;
90
        sty.Ausri = TempVorl[sFnumber].Ausri;
91
        sty.Indent = TempVorl[sFnumber].Indent;
92
        sty.First = TempVorl[sFnumber].First;
93
        sty.Avor = TempVorl[sFnumber].Avor;
94
        sty.Anach = TempVorl[sFnumber].Anach;
95
        sty.Font = TempVorl[sFnumber].Font;
96
        sty.FontSize = TempVorl[sFnumber].FontSize;
97
        TempVorl.append(sty);
98
        sFnumber = TempVorl.count()-1;
80 Franz 99
                EditStyle* dia2 = new EditStyle(this, &TempVorl[sFnumber], TempVorl, true, fon, static_cast<double>(Docu->AutoLine));
3 paul 100
                if (!dia2->exec())
101
                        TempVorl.remove(TempVorl.fromLast());
102
        delete dia2;
103
                UpdateFList();
104
}
105
 
106
void StilFormate::neuesFormat()
107
{
108
        struct StVorL sty;
109
        sty.Vname = tr("New Style");
111 Franz 110
        sty.LineSpa = ((Docu->Dsize / 10.0) * static_cast<double>(Docu->AutoLine) / 100) + (Docu->Dsize / 10.0);
3 paul 111
        sty.Ausri = 0;
112
        sty.Indent = 0;
113
        sty.First = 0;
114
        sty.Avor = 0;
115
        sty.Anach = 0;
116
                sty.Font = Docu->Dfont;
117
                sty.FontSize = Docu->Dsize;
118
        TempVorl.append(sty);
119
        sFnumber = TempVorl.count()-1;
80 Franz 120
                EditStyle* dia2 = new EditStyle(this, &TempVorl[sFnumber], TempVorl, true, fon, static_cast<double>(Docu->AutoLine));
3 paul 121
                if (!dia2->exec())
122
                        TempVorl.remove(TempVorl.fromLast());
123
        delete dia2;
124
                UpdateFList();
125
}
126
 
127
void StilFormate::editFormat()
128
{
80 Franz 129
        EditStyle* dia = new EditStyle(this, &TempVorl[sFnumber], TempVorl, false, fon, static_cast<double>(Docu->AutoLine));
3 paul 130
        dia->exec();
131
        delete dia;
132
        UpdateFList();
133
}
134
 
135
void StilFormate::deleteFormat()
136
{
137
  int exit=QMessageBox::warning(this,
138
                                                                                                                        tr("Warning"),
139
                                tr("Do you really want do delete this Style?"),
140
                                tr("No"),
141
                                tr("Yes"),
142
                                0, 0, 1);
143
  if (exit == 1)
144
        {
145
                ListBox1->removeItem(sFnumber);
146
                TempVorl.remove(TempVorl.at(sFnumber));
147
                UpdateFList();
148
                }
149
}
150
 
117 Franz 151
void StilFormate::loadStyles()
152
{
153
        QString fileName;
154
#ifdef HAVE_LIBZ
155
        CustomFDialog dia(this, tr("Open"), tr("Documents (*.sla *.sla.gz *.scd *.scd.gz);;All Files (*)"));
156
#else
157
        CustomFDialog dia(this, tr("Open"), tr("Documents (*.sla *.scd);;All Files (*)"));
158
#endif
159
        if (dia.exec() == QDialog::Accepted)
160
                fileName = dia.selectedFile();
161
        else
162
                return;
163
  if (!fileName.isEmpty())
164
        {
165
        ScriXmlDoc *ss = new ScriXmlDoc();
118 Franz 166
                ss->Vorlagen.clear();
167
                for (uint x = 5; x < TempVorl.count(); ++x)
168
                        {
169
                        ss->Vorlagen.append(TempVorl[x]);
170
                        }
171
                uint old = TempVorl.count()-5;
117 Franz 172
        if (ss->ReadStyles(fileName, Docu, fon))
173
                {
118 Franz 174
                        if (ss->Vorlagen.count() > old)
117 Franz 175
                                {
118 Franz 176
                                for (uint xx=old; xx<ss->Vorlagen.count(); ++xx)
177
                                        {
178
                                struct StVorL sty;
179
                                sty.Vname = ss->Vorlagen[xx].Vname;
180
                                sty.LineSpa = ss->Vorlagen[xx].LineSpa;
181
                                sty.Ausri = ss->Vorlagen[xx].Ausri;
182
                                sty.Indent = ss->Vorlagen[xx].Indent;
183
                                sty.First = ss->Vorlagen[xx].First;
184
                                sty.Avor = ss->Vorlagen[xx].Avor;
185
                                sty.Anach = ss->Vorlagen[xx].Anach;
186
                                sty.Font = ss->Vorlagen[xx].Font;
187
                                sty.FontSize = ss->Vorlagen[xx].FontSize;
188
                                TempVorl.append(sty);
189
                                        }
117 Franz 190
                                }
191
                        UpdateFList();
192
                }
118 Franz 193
                delete ss;
117 Franz 194
        }
195
}
196
 
3 paul 197
void StilFormate::UpdateFList()
198
{
199
        ListBox1->clear();
200
        if (TempVorl.count() < 6)
201
                return;
202
        for (uint x = 5; x < TempVorl.count(); ++x)
203
                {
204
                ListBox1->insertItem(TempVorl[x].Vname);
205
                }
206
        if (ListBox1->currentItem() == -1)
207
        {
208
        DublicateB->setEnabled(false);
209
        EditB->setEnabled(false);
210
    DeleteB->setEnabled(false);
211
        }
212
        ListBox1->setSelected(ListBox1->currentItem(), false);
213
}