Subversion Repositories Scribus

Rev

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

Rev Author Line No. Line
4430 cbradney 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
*/
103 Franz 7
#include "cmddialog.h"
332 Franz 8
#include "cmdutil.h"
5781 cbradney 9
#include "scribuscore.h"
418 Franz 10
#include "valuedialog.h"
3017 subik 11
#include "editformats.h"
5846 jghali 12
#include "customfdialog.h"
9354 subik 13
#include "stylemanager.h"
9388 jghali 14
#include "styleitem.h"
792 subik 15
 
138 Franz 16
#include <qmessagebox.h>
645 fschmid 17
#include <qcursor.h>
792 subik 18
 
2790 craig 19
PyObject *scribus_newdocdia(PyObject* /* self */)
82 Franz 20
{
645 fschmid 21
        QApplication::setOverrideCursor(QCursor(Qt::ArrowCursor));
5781 cbradney 22
        bool ret = ScCore->primaryMainWindow()->slotFileNew();
1060 subik 23
        QApplication::restoreOverrideCursor();
82 Franz 24
        return PyInt_FromLong(static_cast<long>(ret));
25
}
26
 
2790 craig 27
PyObject *scribus_filedia(PyObject* /* self */, PyObject* args, PyObject* kw)
82 Franz 28
{
934 subik 29
        char *caption = const_cast<char*>("");
30
        char *filter = const_cast<char*>("");
31
        char *defName = const_cast<char*>("");
899 cbradney 32
        int haspreview = 0;
33
        int issave = 0;
2267 subik 34
        int isdir = 0;
35
        // FIXME: parsing named params failure. e.g. fileDialog(caption="foo", issave=True)
2794 subik 36
        // FIXME: it's a bug in Python. I'm monitoring it
37
        // https://sourceforge.net/tracker/index.php?func=detail&aid=893549&group_id=5470&atid=105470
934 subik 38
        char* kwargs[] = {const_cast<char*>("caption"), const_cast<char*>("filter"),
39
                                                const_cast<char*>("defaultname"), const_cast<char*>("haspreview"),
2267 subik 40
                                                const_cast<char*>("issave"), const_cast<char*>("isdir"),
41
                                                NULL};
42
        if (!PyArg_ParseTupleAndKeywords(args, kw, "es|esesiii", kwargs,
900 cbradney 43
                                                                         "utf-8", &caption, "utf-8", &filter, "utf-8", &defName,
2267 subik 44
                                                                         &haspreview, &issave, &isdir))
45
        {
332 Franz 46
                return NULL;
2267 subik 47
        }
645 fschmid 48
        QApplication::setOverrideCursor(QCursor(Qt::ArrowCursor));
2267 subik 49
        /* nobool = Nothing doing boolean for CFileDialog last attrs.
50
        Due the 'isdir' parameter. CFileDialog needs the last 2 pointers
51
        initialized. */
52
        bool nobool = false;
5846 jghali 53
        int optionFlags = 0;
54
        if (haspreview)
55
                optionFlags |= fdShowPreview;
56
        if (issave)
57
                optionFlags |= fdExistingFiles;
58
        if (isdir)
59
                optionFlags |= fdDirectoriesOnly;
5781 cbradney 60
        QString fName = ScCore->primaryMainWindow()->CFileDialog(".",
2267 subik 61
                                                                                 QString::fromUtf8(caption),
62
                                                                                 QString::fromUtf8(filter),
63
                                                                                 QString::fromUtf8(defName),
5846 jghali 64
                                                                                 optionFlags,
2267 subik 65
                                                                                 &nobool,
5846 jghali 66
                                                                                 &nobool,
2267 subik 67
                                                                                 &nobool
68
                                                                                );
1060 subik 69
        QApplication::restoreOverrideCursor();
900 cbradney 70
        // FIXME: filename return unicode OK?
645 fschmid 71
        return PyString_FromString(fName.utf8());
82 Franz 72
}
73
 
2790 craig 74
PyObject *scribus_messdia(PyObject* /* self */, PyObject* args, PyObject* kw)
138 Franz 75
{
934 subik 76
        char *caption = const_cast<char*>("");
77
        char *message = const_cast<char*>("");
645 fschmid 78
        uint result;
138 Franz 79
        QMessageBox::Icon ico = QMessageBox::NoIcon;
899 cbradney 80
        int butt1 = QMessageBox::Ok|QMessageBox::Default;
138 Franz 81
        int butt2 = QMessageBox::NoButton;
82
        int butt3 = QMessageBox::NoButton;
934 subik 83
        char* kwargs[] = {const_cast<char*>("caption"), const_cast<char*>("message"),
84
                                                const_cast<char*>("icon"), const_cast<char*>("button1"),
951 subik 85
                                                const_cast<char*>("button2"), const_cast<char*>("button3"), NULL};
900 cbradney 86
        if (!PyArg_ParseTupleAndKeywords(args, kw, "eses|iiii", kwargs, "utf-8", &caption, "utf-8", &message, &ico, &butt1, &butt2, &butt3))
138 Franz 87
                return NULL;
645 fschmid 88
        QApplication::setOverrideCursor(QCursor(Qt::ArrowCursor));
5781 cbradney 89
        QMessageBox mb(QString::fromUtf8(caption), QString::fromUtf8(message), ico, butt1, butt2, butt3, ScCore->primaryMainWindow());
645 fschmid 90
        result = mb.exec();
1060 subik 91
        QApplication::restoreOverrideCursor();
645 fschmid 92
        return PyInt_FromLong(static_cast<long>(result));
138 Franz 93
}
94
 
2790 craig 95
PyObject *scribus_valdialog(PyObject* /* self */, PyObject* args)
418 Franz 96
{
934 subik 97
        char *caption = const_cast<char*>("");
98
        char *message = const_cast<char*>("");
2267 subik 99
        char *value = const_cast<char*>("");
900 cbradney 100
        if (!PyArg_ParseTuple(args, "eses|es", "utf-8", &caption, "utf-8", &message, "utf-8", &value))
418 Franz 101
                return NULL;
645 fschmid 102
        QApplication::setOverrideCursor(QCursor(Qt::ArrowCursor));
5781 cbradney 103
        ValueDialog *d = new ValueDialog(ScCore->primaryMainWindow(), "d", true, 0);
900 cbradney 104
        d->dialogLabel->setText(QString::fromUtf8(message));
105
        d->valueEdit->setText(QString::fromUtf8(value));
106
        d->setCaption(QString::fromUtf8(caption));
418 Franz 107
        d->exec();
1060 subik 108
        QApplication::restoreOverrideCursor();
418 Franz 109
        return PyString_FromString(d->valueEdit->text().utf8());
110
}
3017 subik 111
 
112
PyObject *scribus_newstyledialog(PyObject*, PyObject* args)
113
{
9354 subik 114
        if(!checkHaveDocument())
115
                return NULL;
116
 
117
        ScribusDoc *d = ScCore->primaryMainWindow()->doc;
118
        bool ok;
119
        QString s = QInputDialog::getText(
120
                        "New Paragraph Style",
121
                        "Enter name of the new paragraph style:",
122
                        QLineEdit::Normal,
123
                        QString::null, &ok, ScCore->primaryMainWindow());
124
 
125
        if (ok && !s.isEmpty())
3017 subik 126
        {
9354 subik 127
                StyleSet<ParagraphStyle> st;
128
                st.redefine(d->paragraphStyles(), true);
129
                ParagraphStyle p;
130
                p.setName(s);
131
                st.create(p);
132
                d->redefineStyles(st, false);
133
                ScCore->primaryMainWindow()->styleMgr()->setDoc(d);
134
                return PyString_FromString(s.utf8());
135
        }
136
        else
8319 fschmid 137
                Py_RETURN_NONE;
3017 subik 138
}
6200 subik 139
 
140
/*! HACK: this removes "warning: 'blash' defined but not used" compiler warnings
141
with header files structure untouched (docstrings are kept near declarations)
142
PV */
143
void cmddialogdocwarnings()
144
{
145
    QStringList s;
146
    s << scribus_newdocdia__doc__ << scribus_filedia__doc__ << scribus_messdia__doc__;
147
    s << scribus_valdialog__doc__ << scribus_newstyledialog__doc__;
148
}