Subversion Repositories Scribus

Rev

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

Rev Author Line No. Line
13808 pierre 1
/***************************************************************************
2
 *   Copyright (C) 2009 by Pierre Marchand                                 *
3
 *   pierre@oep-h.com                                                      *
4
 *                                                                         *
5
 *   This program is free software; you can redistribute it and/or modify  *
6
 *   it under the terms of the GNU General Public License as published by  *
7
 *   the Free Software Foundation; either version 2 of the License, or     *
8
 *   (at your option) any later version.                                   *
9
 *                                                                         *
10
 *   This program is distributed in the hope that it will be useful,       *
11
 *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
12
 *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
13
 *   GNU General Public License for more details.                          *
14
 *                                                                         *
15
 *   You should have received a copy of the GNU General Public License     *
16
 *   along with this program; if not, write to the                         *
17
 *   Free Software Foundation, Inc.,                                       *
18122 mrdocs 18
 *   51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.             *
13808 pierre 19
 ***************************************************************************/
20
 
21
#include "openpalette.h"
22
#include "pageitemsettersmanager.h"
23
#include "ui/pageitemsetterbase.h"
13809 pierre 24
#include "prefsfile.h"
25
#include "scpaths.h"
13808 pierre 26
 
27
#include <QDragEnterEvent>
28
#include <QDropEvent>
13809 pierre 29
#include <QCloseEvent>
13808 pierre 30
#include <QRect>
31
#include <QDebug>
32
 
33
OpenPalette::OpenPalette(QWidget * parent)
13809 pierre 34
#if QT_VERSION >= 0x040500
35
        : QDialog ( parent, Qt::Tool | Qt::CustomizeWindowHint
36
                        | Qt::WindowTitleHint | Qt::WindowMinMaxButtonsHint
37
                        | Qt::WindowSystemMenuHint | Qt::WindowCloseButtonHint )
38
#else
39
        : QDialog ( parent, Qt::Tool | Qt::CustomizeWindowHint
40
                        | Qt::WindowTitleHint | Qt::WindowMinMaxButtonsHint
41
                        | Qt::WindowSystemMenuHint | Qt::WindowType(0x08000000))
42
#endif
13808 pierre 43
{
44
        setAcceptDrops(true);
13809 pierre 45
//      setAttribute ( Qt::WA_DeleteOnClose );
13808 pierre 46
        setWindowTitle(tr("empty palette"));
47
        if(parent)
48
                setGeometry(QRect(parent->x(),parent->y(), 300, 200));
49
        else
50
                setGeometry(QRect(64, 64 , 300, 200));
51
        mainLayout = new QVBoxLayout(this);
52
}
53
 
13809 pierre 54
QStringList OpenPalette::hostedList() const
55
{
56
        QStringList retL;
57
        foreach(PageItemSetterBase  * b, hosted)
58
        {
59
                retL << b->objectName();
60
        }
61
        return retL;
62
}
13808 pierre 63
 
13809 pierre 64
void OpenPalette::setHosted(const QStringList& sList)
65
{
66
        foreach(PageItemSetterBase  * b, hosted)
67
        {
68
                delete b;
69
        }
70
        hosted.clear();
71
 
72
        foreach(QString oName, sList)
73
        {
74
                PageItemSetterBase * base(PageItemSettersManager::getClone(oName));
75
                if(base)
76
                {
77
                        mainLayout->addWidget(base);
78
                        hosted << base;
79
                }
80
        }
81
        QStringList gList;
82
        foreach(PageItemSetterBase  * b, hosted)
83
        {
84
                QStringList fn(b->objectName().split("."));
85
                if(fn.count() > 0)
86
                {
87
                        if(!gList.contains(fn.first()))
88
                                gList << fn.first();
89
                }
90
        }
91
        setWindowTitle(gList.join("/"));
92
}
93
 
94
void OpenPalette::closeEvent(QCloseEvent * event)
95
{
96
        event->ignore();
97
        hide();
98
}
99
 
100
void OpenPalette::showEvent(QShowEvent *event)
101
{
102
        QDialog::show();
103
        emit changed();
104
}
105
 
106
void OpenPalette::hideEvent(QHideEvent *event)
107
{
108
        QDialog::hide();
109
        emit changed();
110
}
111
 
13808 pierre 112
void OpenPalette::dragEnterEvent( QDragEnterEvent *event )
113
{
114
        if (event->mimeData()->hasFormat("text/x-scribus-palette-item"))
115
        {
116
                // prevent copy of an item already present
13809 pierre 117
                QString oName(QString::fromUtf8(event->mimeData()->data("text/x-scribus-palette-item")));
13808 pierre 118
                foreach(PageItemSetterBase  * b, hosted)
119
                {
13809 pierre 120
                        if(b->objectName() == oName)
13808 pierre 121
                                return;
122
                }
123
                event->acceptProposedAction();
124
        }
125
        else
126
                qDebug()<<"Entered in Open Palette:"<<event->mimeData()->formats().join("; ");
127
}
128
 
129
 
130
void OpenPalette::dropEvent ( QDropEvent * event )
131
{
13809 pierre 132
        QString oName(QString::fromUtf8(event->mimeData()->data("text/x-scribus-palette-item")));
133
        if(oName.isEmpty())
13808 pierre 134
                qDebug()<<"Dropped a Null setter uuid on Open Palette";
135
        else
136
        {
13809 pierre 137
                PageItemSetterBase * base(PageItemSettersManager::getClone(oName));
13808 pierre 138
                if(base)
139
                {
140
                        mainLayout->addWidget(base);
141
                        hosted << base;
142
                        QStringList gList;
143
                        foreach(PageItemSetterBase  * b, hosted)
144
                        {
13809 pierre 145
                                QStringList fn(b->objectName().split("."));
146
                                if(fn.count() > 0)
147
                                {
148
                                        if(!gList.contains(fn.first()))
149
                                                gList << fn.first();
150
                                }
13808 pierre 151
                        }
152
                        setWindowTitle(gList.join("/"));
153
                }
154
        }
155
}
156
 
157
 
158