Subversion Repositories Scribus

Rev

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

Rev Author Line No. Line
3 paul 1
/***************************************************************************
2
                          serializer.cpp  -  description
3
                             -------------------
4
    begin                : Sat May 5 2001
5
    copyright            : (C) 2001 by Franz Schmid
6
    email                : Franz.Schmid@altmuehlnet.de
7
 ***************************************************************************/
8
 
9
/***************************************************************************
10
 *                                                                         *
11
 *   This program is free software; you can redistribute it and/or modify  *
12
 *   it under the terms of the GNU General Public License as published by  *
13
 *   the Free Software Foundation; either version 2 of the License, or     *
14
 *   (at your option) any later version.                                   *
15
 *                                                                         *
16
 ***************************************************************************/
17
 
18
#include "serializer.h"
19
#include <qfile.h>
20
#include <qtextstream.h>
21
#include <qtextcodec.h>
22
extern bool loadText(QString nam, QString *Buffer);
23
Serializer::Serializer(QString name)
24
{
25
        Filename = name;
26
        Objekt = "";
27
}
28
 
29
QString Serializer::GetObjekt()
30
{
31
        return Objekt;
32
}
33
 
34
void Serializer::PutText(PageItem *Item)
35
{
36
  uint a;
37
  QString Dat = "";
38
        QPtrList<Pti> y = Item->Ptext;
39
  for (a=0; a<y.count(); ++a)
40
        {
41
                QString b = y.at(a)->ch;
42
                if (b == QChar(13))
43
                        b = "\n";
44
    Dat += b;
45
    }
19 Franz 46
        Objekt = Dat;
3 paul 47
}
48
 
49
void Serializer::GetText(PageItem *Item, int Absatz, bool Append)
50
{
51
        struct Pti *hg;
52
        PageItem *nb;
53
        uint a;
54
        if (!Append)
55
                {
56
                if (Item->NextBox != 0)
57
                        {
58
                        nb = Item->NextBox;
59
                        while (nb != 0)
60
                                {
61
                                nb->Ptext.clear();
62
                                nb->CPos = 0;
63
                                nb->Dirty = true;
64
                                nb = nb->NextBox;
65
                                }
66
                        }
67
                Item->Ptext.clear();
68
                Item->CPos = 0;
69
                }
70
        for (a=0; a<Objekt.length(); ++a)
71
                {
72
                hg = new Pti;
73
                hg->ch = Objekt.at(a);
12 Franz 74
                if (hg->ch == QChar(0)) { continue; }
75
                if (hg->ch == QChar(13)) { continue; }
3 paul 76
                if (hg->ch == QChar(10)) { hg->ch = QChar(13); }
77
                if (hg->ch == QChar(5)) { hg->ch = QChar(13); }
78
                if (hg->ch == QChar(9)) { hg->ch = " "; }
79
                hg->cfont = Item->IFont;
80
                hg->csize = Item->ISize;
81
                hg->ccolor = Item->Pcolor2;
82
                hg->cextra = 0;
83
                hg->cshade = Item->Shade2;
84
                hg->cselect = false;
85
                hg->cstyle = 0;
86
                hg->cab = Absatz;
87
                hg->xp = 0;
88
                hg->yp = 0;
89
                hg->PRot = 0;
90
                hg->PtransX = 0;
91
                hg->PtransY = 0;
92
                if (Append)
93
                        Item->Ptext.insert(Item->CPos, hg);
94
                else
95
                        Item->Ptext.append(hg);
96
                Item->CPos += 1;
97
                }
98
}
99
 
19 Franz 100
bool Serializer::Write(QString Cod)
3 paul 101
{
19 Franz 102
        QTextCodec *codec;
103
        if (Cod == "")
104
                codec = QTextCodec::codecForLocale();
105
        else
106
                codec = QTextCodec::codecForName(Cod);
107
  QCString dec = codec->fromUnicode( Objekt );
3 paul 108
        QFile f(Filename);
109
        bool ret = false;
110
        if (f.open(IO_WriteOnly))
111
                {
19 Franz 112
                f.writeBlock(dec, dec.length());
3 paul 113
                f.close();
114
                ret = true;
115
                }
116
        else
117
                {
118
                ret = false;
119
                }
120
        return ret;
121
}
122
 
15 Franz 123
bool Serializer::Read(QString Cod)
3 paul 124
{
15 Franz 125
        QTextCodec *codec;
3 paul 126
        bool tmp = loadText(Filename, &Objekt);
15 Franz 127
        if (Cod == "")
128
                codec = QTextCodec::codecForLocale();
129
        else
130
                codec = QTextCodec::codecForName(Cod);
131
  QString dec = codec->toUnicode( Objekt );
132
        Objekt = dec;
3 paul 133
        return tmp;
134
}