PyObject* scribus_deletemasterpage(PyObject* /* self */, PyObject* args) { char* name = nullptr; if (!PyArg_ParseTuple(args, "es", const_cast<char*>("utf-8"), &name)) return nullptr; if (!checkHaveDocument()) return nullptr; const QString masterPageName(name); ScribusDoc* currentDoc = ScCore->primaryMainWindow()->doc; if (!currentDoc->MasterNames.contains(masterPageName)) { PyErr_SetString(PyExc_ValueError, "Master page does not exist"); return nullptr; } if (masterPageName == "Normal") { PyErr_SetString(PyExc_ValueError, "Can not delete the Normal master page"); return nullptr; } bool oldMode = currentDoc->masterPageMode(); currentDoc->setMasterPageMode(true); ScCore->primaryMainWindow()->deletePage2(currentDoc->MasterNames[masterPageName]); currentDoc->setMasterPageMode(oldMode); Py_RETURN_NONE; }
void PagePalette::startMasterPageMode(QString masterPage) { ScribusDoc* doc = m_view->Doc; bool mustDeselect = false; mustDeselect |= (!doc->masterPageMode()); mustDeselect |= (doc->masterPageMode() && doc->currentPage()->pageName() != masterPage); if (mustDeselect) { // We must avoid deselecting directly if doc is in an edit mode, // otherwise that would cause an inconsistent state. In such case, // fallback to normal mode by precaution if (doc->appMode != modeNormal) m_view->requestMode(modeNormal); m_view->Deselect(true); } QStackedWidget* stackedWidget = this->stackedWidget(); if (stackedWidget->count() < 2) { PagePalette_MasterPages* mpWidget = new PagePalette_MasterPages(stackedWidget, m_view, masterPage); mpWidget->setObjectName(QString::fromLocal8Bit("PagePalette_MasterPages")); stackedWidget->addWidget(mpWidget); connect(mpWidget, SIGNAL(removePage(int )), m_scMW, SLOT(deletePage2(int ))); connect(mpWidget, SIGNAL(finished()) , m_scMW, SLOT(editMasterPagesEnd())); } else { ScribusDoc* doc = m_view->Doc; PagePalette_MasterPages* mpWidget = this->masterpageWidget(); if (mpWidget->m_view != m_view) mpWidget->setView(m_view, masterPage); mpWidget->updateMasterPageList(masterPage); if (doc->currentPage()->pageName() != masterPage) mpWidget->selectMasterPage(masterPage); } // Set focus to page palette or focus may be set to wrong document window this->setFocus(); stackedWidget->setCurrentIndex(1); }
void PagePalette::setView(ScribusView *view) { PagePalette_Pages* pageWidget = dynamic_cast<PagePalette_Pages*>(this->currentWidget()); if (pageWidget) pageWidget->setView(view); PagePalette_MasterPages* mpWidget = dynamic_cast<PagePalette_MasterPages*>(this->currentWidget()); if (mpWidget) mpWidget->setView(view); m_view = view; if (!m_view) return; ScribusDoc* doc = m_view->Doc; if (doc->masterPageMode()) { QString pageName = doc->currentPage()->pageName(); startMasterPageMode(pageName); } else if (masterPageMode()) { endMasterPageMode(); } }
/*! \fn scribus_importpage(PyObject*, PyObject* args) \author Alessandro Pira <*****@*****.**> \date 11-11-2007 \param PyObject unused reference \param args Python function args ("fromDoc", (pageList), [create, imortwhere, importwherePage]) \retval Py_RETURN_NONE if ok, null if error */ PyObject *scribus_importpage(PyObject* /* self */, PyObject* args) { char *doc = nullptr; PyObject *pages = nullptr; int createPageI = 1; int importWhere = 2; int importWherePage = 0; if (!PyArg_ParseTuple(args, "sO|iii", &doc, &pages, &createPageI, &importWhere, &importWherePage)) return nullptr; if (!checkHaveDocument()) return nullptr; if (!PyTuple_Check(pages)) { PyErr_SetString(PyExc_TypeError, QObject::tr("second argument is not tuple: must be tuple of integer values.","python error").toLocal8Bit().constData()); return nullptr; } Py_INCREF(pages); std::vector<int> pageNs; int i, n, p; n = PyTuple_Size(pages); for (i=0; i<n; i++) { if (!PyArg_Parse(PyTuple_GetItem(pages, i), "i", &p)) { PyErr_SetString(PyExc_TypeError, QObject::tr("second argument contains non-numeric values: must be list of integer values.","python error").toLocal8Bit().constData()); Py_DECREF(pages); return nullptr; } pageNs.push_back(p); } Py_DECREF(pages); QString fromDoc = QString(doc); bool createPage = (createPageI != 0); int startPage=0, nrToImport=pageNs.size(); bool doIt = true; ScribusDoc* currentDoc = ScCore->primaryMainWindow()->doc; if (currentDoc->masterPageMode()) { if (nrToImport > 1) ScCore->primaryMainWindow()->loadPage(fromDoc, pageNs[0] - 1, false); doIt = false; } else if (createPage) { if (importWhere == 0) //Before page startPage = importWherePage; else if (importWhere == 1) //After page startPage = importWherePage + 1; else //at end startPage = currentDoc->DocPages.count();// + 1; import_addpages(nrToImport, startPage); } else { startPage = currentDoc->currentPage()->pageNr() + 1; if (nrToImport > (currentDoc->DocPages.count() - currentDoc->currentPage()->pageNr())) { int tmp=nrToImport - (currentDoc->DocPages.count() - currentDoc->currentPage()->pageNr()); import_addpages(tmp, currentDoc->DocPages.count()); } } if (doIt) { if (nrToImport > 0) { int counter = startPage + 1; for (int i = 0; i < nrToImport; ++i) { ScCore->primaryMainWindow()->view->GotoPa(counter); ScCore->primaryMainWindow()->loadPage(fromDoc, pageNs[i] - 1, false); counter++; } } } Py_RETURN_NONE; }