1 #include "vymmodelwrapper.h"
3 #include "branchitem.h"
11 #include "xmlobj.h" // include quoteQuotes
13 ///////////////////////////////////////////////////////////////////////////
14 VymModelWrapper::VymModelWrapper(VymModel *m) { model = m; }
17 QString VymModelWrapper::setResult( const QString r )
19 context()->engine()->globalObject().setProperty("lastResult", r );
22 bool VymModelWrapper::setResult( bool r )
24 context()->engine()->globalObject().setProperty("lastResult", r );
27 int VymModelWrapper::setResult( int r )
29 context()->engine()->globalObject().setProperty("lastResult", r );
33 BranchItem *VymModelWrapper::getSelectedBranch()
35 BranchItem *selbi = model->getSelectedBranch();
37 logError(context(), QScriptContext::ReferenceError,
38 "No branch selected");
42 QVariant VymModelWrapper::getParameter(bool &ok, const QString &key,
43 const QStringList ¶meters)
45 // loop through parameters and try to find the one named "key"
46 foreach (QString par, parameters) {
47 if (par.startsWith(key)) {
48 qDebug() << "getParam: " << key << " has: " << par;
56 return QVariant::Invalid;
59 void VymModelWrapper::addBranch()
61 BranchItem *selbi = getSelectedBranch();
63 if (argumentCount() > 1) {
64 logError(context(), QScriptContext::SyntaxError,
65 "Too many arguments");
70 if (argumentCount() == 1) {
71 pos = argument(0).toInteger();
74 if (!model->addNewBranch(selbi, pos))
75 logError(context(), QScriptContext::UnknownError,
76 "Couldn't add branch to map");
80 void VymModelWrapper::addBranchBefore()
82 if (!model->addNewBranchBefore())
83 logError(context(), QScriptContext::UnknownError,
84 "Couldn't add branch before selection to map");
87 void VymModelWrapper::addMapCenter(qreal x, qreal y)
89 if (!model->addMapCenter(QPointF(x, y)))
90 logError(context(), QScriptContext::UnknownError,
91 "Couldn't add mapcenter");
94 void VymModelWrapper::addMapInsert(QString fileName, int pos, int contentFilter)
96 if (QDir::isRelativePath(fileName))
97 fileName = QDir::currentPath() + "/" + fileName;
99 model->saveStateBeforeLoad(ImportAdd, fileName);
102 model->loadMap(fileName, ImportAdd, VymMap, contentFilter, pos))
103 logError(context(), QScriptContext::UnknownError,
104 QString("Couldn't load %1").arg(fileName));
107 void VymModelWrapper::addMapInsert(const QString &fileName, int pos)
109 addMapInsert(fileName, pos, 0x0000);
112 void VymModelWrapper::addMapInsert(const QString &fileName)
114 addMapInsert(fileName, -1, 0x0000);
117 void VymModelWrapper::addMapReplace(QString fileName)
119 if (QDir::isRelativePath(fileName))
120 fileName = QDir::currentPath() + "/" + fileName;
122 model->saveStateBeforeLoad(ImportReplace, fileName);
124 if (File::Aborted == model->loadMap(fileName, ImportReplace, VymMap))
125 logError(context(), QScriptContext::UnknownError,
126 QString("Couldn't load %1").arg(fileName));
129 void VymModelWrapper::addSlide() { model->addSlide(); }
131 void VymModelWrapper::addXLink(const QString &begin, const QString &end,
132 int width, const QString &color,
133 const QString &penstyle)
135 BranchItem *bbegin = (BranchItem *)(model->findBySelectString(begin));
136 BranchItem *bend = (BranchItem *)(model->findBySelectString(end));
137 if (bbegin && bend) {
138 if (bbegin->isBranchLikeType() && bend->isBranchLikeType()) {
139 Link *li = new Link(model);
140 li->setBeginBranch((BranchItem *)bbegin);
141 li->setEndBranch((BranchItem *)bend);
143 model->createLink(li);
144 QPen pen = li->getPen();
151 logError(context(), QScriptContext::UnknownError,
152 QString("Could not set color to %1").arg(color));
157 Qt::PenStyle st1 = penStyle(penstyle, ok);
163 logError(context(), QScriptContext::UnknownError,
164 QString("Couldn't set penstyle %1").arg(penstyle));
167 logError(context(), QScriptContext::UnknownError,
168 "Begin or end of xLink are not branch or mapcenter");
171 logError(context(), QScriptContext::UnknownError,
172 "Begin or end of xLink not found");
175 int VymModelWrapper::branchCount()
178 BranchItem *selbi = getSelectedBranch();
180 r = selbi->branchCount();
186 int VymModelWrapper::centerCount()
188 int r = model->centerCount();
192 void VymModelWrapper::centerOnID(const QString &id)
194 if (!model->centerOnID(id))
195 logError(context(), QScriptContext::UnknownError,
196 QString("Could not center on ID %1").arg(id));
199 void VymModelWrapper::clearFlags() { model->clearFlags(); }
201 void VymModelWrapper::colorBranch(const QString &color)
205 logError(context(), QScriptContext::SyntaxError,
206 QString("Could not set color to %1").arg(color));
208 model->colorBranch(col);
211 void VymModelWrapper::colorSubtree(const QString &color)
215 logError(context(), QScriptContext::SyntaxError,
216 QString("Could not set color to %1").arg(color));
218 model->colorSubtree(col);
221 void VymModelWrapper::copy() { model->copy(); }
223 void VymModelWrapper::cut() { model->cut(); }
225 void VymModelWrapper::cycleTask()
227 if (!model->cycleTaskStatus())
228 logError(context(), QScriptContext::SyntaxError,
229 "Couldn't cycle task status");
232 int VymModelWrapper::depth()
234 TreeItem *selti = model->getSelectedItem();
236 return setResult(selti->depth());
238 return setResult (-2); // FIXME-2 should throw error
241 bool VymModelWrapper::exportMap()
245 if (argumentCount() == 0) {
246 logError(context(), QScriptContext::SyntaxError,
247 "Not enough arguments");
252 format = argument(0).toString();
254 if (argumentCount() == 1) {
255 if (format == "Last") {
260 logError(context(), QScriptContext::SyntaxError,
267 filename = argument(1).toString();
269 if (format == "AO") {
270 model->exportAO(filename, false);
272 else if (format == "ASCII") {
273 bool listTasks = false;
274 if (argumentCount() == 3 && argument(2).toString() == "true")
276 model->exportASCII(filename, listTasks, false);
278 else if (format == "ConfluenceNewPage") {
279 // 0: General export format
280 // 1: URL of parent page (required)
281 // 2: page title (required)
282 if (argumentCount() < 3) {
283 logError(context(), QScriptContext::SyntaxError,
284 QString("Confluence export new page: Only %1 instead of 3 parameters given")
285 .arg(argumentCount()));
289 QString url = argument(2).toString();
290 QString pageName = argument(3).toString();
292 model->exportConfluence(true, url, pageName, false);
294 else if (format == "ConfluenceUpdatePage") {
295 // 0: General export format
296 // 1: URL of page to be updated
297 // 2: page title (optional)
298 if (argumentCount() == 1) {
299 logError(context(), QScriptContext::SyntaxError,
300 "URL of new page missing in Confluence export");
303 QString url = argument(1).toString();
306 if (argumentCount() == 3) {
307 title = argument(2).toString();
310 model->exportConfluence(false, url, title, false);
312 else if (format == "CSV") {
313 model->exportCSV(filename, false);
315 else if (format == "HTML") {
316 if (argumentCount() < 3) {
317 logError(context(), QScriptContext::SyntaxError,
318 "Path missing in HTML export");
321 QString dpath = argument(2).toString();
322 model->exportHTML(filename, dpath, false);
324 else if (format == "Image") {
326 if (argumentCount() == 2)
328 else if (argumentCount() == 3)
329 imgFormat = argument(2).toString();
335 formats << "JPEG", formats << "PNG", formats << "PBM", formats << "PGM",
336 formats << "PPM", formats << "TIFF", formats << "XBM",
338 if (formats.indexOf(imgFormat) < 0) {
339 logError(context(), QScriptContext::SyntaxError,
340 QString("%1 not one of the known export formats: ")
342 .arg(formats.join(",")));
345 model->exportImage(filename, false, imgFormat);
347 else if (format == "Impress") {
348 if (argumentCount() < 3) {
349 logError(context(), QScriptContext::SyntaxError,
350 "Template file missing in export to Impress");
353 QString templ = argument(2).toString();
354 model->exportImpress(filename, templ);
356 else if (format == "LaTeX") {
357 model->exportLaTeX(filename, false);
359 else if (format == "Markdown") {
360 model->exportMarkdown(filename, false);
362 else if (format == "OrgMode") {
363 model->exportOrgMode(filename, false);
365 else if (format == "PDF") {
366 model->exportPDF(filename, false);
368 else if (format == "SVG") {
369 model->exportSVG(filename, false);
371 else if (format == "XML") {
372 if (argumentCount() < 3) {
373 logError(context(), QScriptContext::SyntaxError,
374 "path missing in export to Impress");
377 QString dpath = argument(2).toString();
378 model->exportXML(filename, dpath, false);
381 logError(context(), QScriptContext::SyntaxError,
382 QString("Unknown export format: %1").arg(format));
385 return setResult(true);
388 int VymModelWrapper::getBranchIndex()
391 BranchItem *selbi = getSelectedBranch();
399 QString VymModelWrapper::getDestPath()
401 QString r = model->getDestPath();
405 QString VymModelWrapper::getFileDir() { return setResult(model->getFileDir()); }
407 QString VymModelWrapper::getFileName()
409 return setResult(model->getFileName());
412 QString VymModelWrapper::getFrameType()
415 BranchItem *selbi = getSelectedBranch();
417 BranchObj *bo = (BranchObj *)(selbi->getLMO());
419 logError(context(), QScriptContext::UnknownError,
420 QString("No BranchObj available"));
422 r = bo->getFrame()->getFrameTypeName();
427 QString VymModelWrapper::getHeadingPlainText()
429 QString r = model->getHeading().getTextASCII();
433 QString VymModelWrapper::getHeadingXML()
435 QString r = model->getHeading().saveToDir();
439 QString VymModelWrapper::getMapAuthor()
441 return setResult(model->getAuthor());
444 QString VymModelWrapper::getMapComment()
446 return setResult(model->getComment());
449 QString VymModelWrapper::getMapTitle() { return setResult(model->getTitle()); }
451 QString VymModelWrapper::getNotePlainText()
453 return setResult(model->getNote().getTextASCII());
456 QString VymModelWrapper::getNoteXML()
458 return setResult(model->getNote().saveToDir());
461 QString VymModelWrapper::getSelectionString()
463 return setResult(model->getSelectString());
466 int VymModelWrapper::getTaskPriorityDelta()
468 return model->getTaskPriorityDelta();
471 QString VymModelWrapper::getTaskSleep()
474 BranchItem *selbi = getSelectedBranch();
476 Task *task = selbi->getTask();
478 r = task->getSleep().toString(Qt::ISODate);
480 logError(context(), QScriptContext::UnknownError,
481 "Branch has no task");
486 int VymModelWrapper::getTaskSleepDays()
489 BranchItem *selbi = getSelectedBranch();
491 Task *task = selbi->getTask();
493 r = task->getDaysSleep();
495 logError(context(), QScriptContext::UnknownError,
496 "Branch has no task");
501 QString VymModelWrapper::getURL() { return setResult(model->getURL()); }
503 QString VymModelWrapper::getVymLink() { return setResult(model->getVymLink()); }
505 QString VymModelWrapper::getXLinkColor()
507 return setResult(model->getXLinkColor().name());
510 int VymModelWrapper::getXLinkWidth()
512 return setResult(model->getXLinkWidth());
515 QString VymModelWrapper::getXLinkPenStyle()
517 QString r = penStyleToString(model->getXLinkStyle());
521 QString VymModelWrapper::getXLinkStyleBegin()
523 return setResult(model->getXLinkStyleBegin());
526 QString VymModelWrapper::getXLinkStyleEnd()
528 return setResult(model->getXLinkStyleEnd());
531 bool VymModelWrapper::hasActiveFlag(const QString &flag)
534 BranchItem *selbi = getSelectedBranch();
536 r = selbi->hasActiveFlag(flag);
540 bool VymModelWrapper::hasNote()
542 bool r = !model->getNote().isEmpty();
546 bool VymModelWrapper::hasRichTextNote()
548 return setResult(model->hasRichTextNote());
551 bool VymModelWrapper::hasTask()
554 BranchItem *selbi = getSelectedBranch();
556 Task *task = selbi->getTask();
561 logError(context(), QScriptContext::UnknownError,
562 "Selected item is not a branch");
567 void VymModelWrapper::importDir(const QString &path)
570 path); // FIXME-3 error handling missing (in vymmodel and here)
573 bool VymModelWrapper::initIterator(const QString &iname, bool deepLevelsFirst)
575 return model->initIterator(iname, deepLevelsFirst);
578 bool VymModelWrapper::nextIterator(const QString &iname)
580 return model->nextIterator(iname);
583 bool VymModelWrapper::isScrolled()
586 BranchItem *selbi = getSelectedBranch();
588 r = selbi->isScrolled();
592 void VymModelWrapper::loadImage(const QString &filename)
594 BranchItem *selbi = getSelectedBranch();
598 filename); // FIXME-3 error handling missing (in vymmodel and here)
602 void VymModelWrapper::loadNote(const QString &filename)
605 filename); // FIXME-3 error handling missing (in vymmodel and here)
608 void VymModelWrapper::move(qreal x, qreal y)
614 void VymModelWrapper::moveRel(qreal x, qreal y)
616 model->moveRel(x, y);
620 void VymModelWrapper::moveDown() { model->moveDown(); }
622 void VymModelWrapper::moveUp() { model->moveUp(); }
624 void VymModelWrapper::moveSlideDown(int n)
626 if (!model->moveSlideDown(n))
627 logError(context(), QScriptContext::UnknownError,
628 "Could not move slide down");
631 void VymModelWrapper::moveSlideDown() { moveSlideDown(-1); }
633 void VymModelWrapper::moveSlideUp(int n)
635 if (!model->moveSlideUp(n))
636 logError(context(), QScriptContext::UnknownError,
637 "Could not move slide up");
640 void VymModelWrapper::moveSlideUp() { moveSlideUp(-1); }
642 void VymModelWrapper::nop() {}
644 void VymModelWrapper::note2URLs() { model->note2URLs(); }
646 bool VymModelWrapper::parseVymText(const QString &text)
648 return setResult(model->parseVymText(unquoteQuotes(text)));
651 void VymModelWrapper::paste() { model->paste(); }
653 void VymModelWrapper::redo() { model->redo(); }
655 bool VymModelWrapper::relinkTo(const QString &parent, int num, qreal x, qreal y)
658 r = model->relinkTo(parent, num, QPointF(x, y));
660 logError(context(), QScriptContext::UnknownError, "Could not relink");
664 bool VymModelWrapper::relinkTo(const QString &parent, int num)
666 bool r = relinkTo(parent, num, 0, 0);
670 bool VymModelWrapper::relinkTo(const QString &parent)
672 bool r = relinkTo(parent, -1, 0, 0);
676 void VymModelWrapper::remove() { model->deleteSelection(); }
678 void VymModelWrapper::removeChildren() { model->deleteChildren(); }
680 void VymModelWrapper::removeKeepChildren() { model->deleteKeepChildren(); }
682 void VymModelWrapper::removeSlide(int n)
684 if (n < 0 || n >= model->slideCount() - 1)
685 logError(context(), QScriptContext::RangeError,
686 QString("Slide '%1' not available.").arg(n));
689 QVariant VymModelWrapper::repeatLastCommand()
691 return model->repeatLastCommand();
694 void VymModelWrapper::saveImage(const QString &filename)
696 model->saveImage(NULL, filename);
699 void VymModelWrapper::saveNote(const QString &filename)
701 model->saveNote(filename);
704 void VymModelWrapper::scroll()
706 BranchItem *selbi = getSelectedBranch();
708 if (!model->scrollBranch(selbi))
709 logError(context(), QScriptContext::UnknownError,
710 "Couldn't scroll branch");
714 bool VymModelWrapper::select(const QString &s)
716 bool r = model->select(s);
718 logError(context(), QScriptContext::UnknownError,
719 QString("Couldn't select %1").arg(s));
723 bool VymModelWrapper::selectID(const QString &s)
725 bool r = model->selectID(s);
727 logError(context(), QScriptContext::UnknownError,
728 QString("Couldn't select ID %1").arg(s));
732 bool VymModelWrapper::selectFirstBranch()
735 BranchItem *selbi = getSelectedBranch();
737 r = model->selectFirstBranch();
739 logError(context(), QScriptContext::UnknownError,
740 "Couldn't select first branch");
745 bool VymModelWrapper::selectFirstChildBranch()
748 BranchItem *selbi = getSelectedBranch();
750 r = model->selectFirstChildBranch();
752 logError(context(), QScriptContext::UnknownError,
753 "Couldn't select first child branch");
758 bool VymModelWrapper::selectLastBranch()
761 BranchItem *selbi = getSelectedBranch();
763 r = model->selectLastBranch();
765 logError(context(), QScriptContext::UnknownError,
766 "Couldn't select last branch");
771 bool VymModelWrapper::selectLastChildBranch()
774 BranchItem *selbi = getSelectedBranch();
776 r = model->selectLastChildBranch();
778 logError(context(), QScriptContext::UnknownError,
779 "Couldn't select last child branch");
783 bool VymModelWrapper::selectLastImage()
786 BranchItem *selbi = getSelectedBranch();
788 ImageItem *ii = selbi->getLastImage();
790 logError(context(), QScriptContext::UnknownError,
791 "Couldn't get last image");
793 r = model->select(ii);
795 logError(context(), QScriptContext::UnknownError,
796 "Couldn't select last image");
802 bool VymModelWrapper::selectParent()
804 bool r = model->selectParent();
806 logError(context(), QScriptContext::UnknownError,
807 "Couldn't select parent item");
811 bool VymModelWrapper::selectLatestAdded()
813 bool r = model->selectLatestAdded();
815 logError(context(), QScriptContext::UnknownError,
816 "Couldn't select latest added item");
820 bool VymModelWrapper::selectToggle(const QString &selectString)
822 bool r = model->selectToggle(selectString);
824 logError(context(), QScriptContext::UnknownError,
825 "Couldn't toggle item with select string " + selectString);
829 void VymModelWrapper::setFlagByName(const QString &s)
831 model->setFlagByName(s);
834 void VymModelWrapper::setHeadingConfluencePageName()
836 model->setHeadingConfluencePageName();
839 void VymModelWrapper::setHeadingPlainText(
840 const QString &text) // FIXME-3 what about RT?
842 model->setHeadingPlainText(text);
845 void VymModelWrapper::setHideExport(bool b) { model->setHideExport(b); }
847 void VymModelWrapper::setIncludeImagesHorizontally(bool b)
849 model->setIncludeImagesHor(b);
852 void VymModelWrapper::setIncludeImagesVertically(bool b)
854 model->setIncludeImagesVer(b);
857 void VymModelWrapper::setHideLinkUnselected(bool b)
859 model->setHideLinkUnselected(b);
862 void VymModelWrapper::setMapAnimCurve(int n)
864 if (n < 0 || n > QEasingCurve::OutInBounce)
865 logError(context(), QScriptContext::RangeError,
866 "Unknown animation curve type");
869 c.setType((QEasingCurve::Type)n);
870 model->setMapAnimCurve(c);
874 void VymModelWrapper::setMapAnimDuration(int n)
876 model->setMapAnimDuration(n);
879 void VymModelWrapper::setMapAuthor(const QString &s) { model->setAuthor(s); }
881 void VymModelWrapper::setMapBackgroundColor(const QString &color)
885 model->setMapBackgroundColor(col);
888 logError(context(), QScriptContext::UnknownError,
889 QString("Could not set color to %1").arg(color));
892 void VymModelWrapper::setMapComment(const QString &s) { model->setComment(s); }
894 void VymModelWrapper::setMapDefLinkColor(const QString &color)
898 model->setMapDefLinkColor(col);
901 logError(context(), QScriptContext::UnknownError,
902 QString("Could not set color to %1").arg(color));
905 void VymModelWrapper::setMapLinkStyle(const QString &style)
907 if (!model->setMapLinkStyle(style))
908 logError(context(), QScriptContext::UnknownError,
909 QString("Could not set linkstyle to %1").arg(style));
912 void VymModelWrapper::setMapRotation(float a) { model->setMapRotationAngle(a); }
914 void VymModelWrapper::setMapTitle(const QString &s) { model->setTitle(s); }
916 void VymModelWrapper::setMapZoom(float z) { model->setMapZoomFactor(z); }
918 void VymModelWrapper::setNotePlainText(const QString &s)
925 void VymModelWrapper::setFrameBorderWidth(int width)
927 model->setFrameBorderWidth(width);
930 void VymModelWrapper::setFrameBrushColor(const QString &color)
932 model->setFrameBrushColor(color);
935 void VymModelWrapper::setFrameIncludeChildren(bool b)
937 model->setFrameIncludeChildren(b);
940 void VymModelWrapper::setFramePadding(int padding)
942 model->setFramePadding(padding);
945 void VymModelWrapper::setFramePenColor(const QString &color)
947 model->setFramePenColor(color);
950 void VymModelWrapper::setFrameType(const QString &type)
952 model->setFrameType(type);
955 void VymModelWrapper::setScaleFactor(qreal f) { model->setScaleFactor(f); }
957 void VymModelWrapper::setSelectionBrushColor(const QString &color)
961 logError(context(), QScriptContext::SyntaxError,
962 QString("Could not set color to %1").arg(color));
964 model->setSelectionBrushColor(col);
967 void VymModelWrapper::setSelectionPenColor(const QString &color)
971 logError(context(), QScriptContext::SyntaxError,
972 QString("Could not set color to %1").arg(color));
974 model->setSelectionPenColor(col);
977 void VymModelWrapper::setSelectionPenWidth(const qreal &w)
979 model->setSelectionPenWidth(w);
982 void VymModelWrapper::setTaskPriorityDelta(const int &n)
984 model->setTaskPriorityDelta(n);
987 bool VymModelWrapper::setTaskSleep(const QString &s)
989 bool r = model->setTaskSleep(s);
993 void VymModelWrapper::setURL(const QString &s) { model->setURL(s); }
995 void VymModelWrapper::setVymLink(const QString &s) { model->setVymLink(s); }
997 void VymModelWrapper::setXLinkColor(const QString &color)
1001 logError(context(), QScriptContext::SyntaxError,
1002 QString("Could not set color to %1").arg(color));
1004 model->setXLinkColor(color); // FIXME-3 try to use QColor here...
1007 void VymModelWrapper::setXLinkStyle(const QString &style)
1009 model->setXLinkStyle(style);
1012 void VymModelWrapper::setXLinkStyleBegin(const QString &style)
1014 model->setXLinkStyleBegin(style);
1017 void VymModelWrapper::setXLinkStyleEnd(const QString &style)
1019 model->setXLinkStyleEnd(style);
1022 void VymModelWrapper::setXLinkWidth(int w) { model->setXLinkWidth(w); }
1024 void VymModelWrapper::sleep(int n)
1026 // sleep is not avail on windows VCEE, workaround could be using
1027 // this->thread()->wait(x ms)
1031 void VymModelWrapper::sortChildren(bool b) { model->sortChildren(b); }
1033 void VymModelWrapper::sortChildren() { sortChildren(false); }
1035 void VymModelWrapper::toggleFlagByUid(const QString &s)
1037 model->toggleFlagByUid(QUuid(s));
1040 void VymModelWrapper::toggleFlagByName(const QString &s)
1042 model->toggleFlagByName(s);
1045 void VymModelWrapper::toggleFrameIncludeChildren()
1047 model->toggleFrameIncludeChildren();
1050 void VymModelWrapper::toggleScroll() { model->toggleScroll(); }
1052 void VymModelWrapper::toggleTarget() { model->toggleTarget(); }
1054 void VymModelWrapper::toggleTask() { model->toggleTask(); }
1056 void VymModelWrapper::undo() { model->undo(); }
1058 bool VymModelWrapper::unscroll()
1061 BranchItem *selbi = getSelectedBranch();
1063 r = model->unscrollBranch(selbi);
1065 logError(context(), QScriptContext::UnknownError,
1066 "Couldn't unscroll branch");
1068 return setResult(r);
1071 void VymModelWrapper::unscrollChildren() { model->unscrollChildren(); }
1073 void VymModelWrapper::unselectAll() { model->unselectAll(); }
1075 void VymModelWrapper::unsetFlagByName(const QString &s)
1077 model->unsetFlagByName(s);