ViewportSettings.js 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. /**
  2. * Copyright (c) 2011-2018 by Andrew Mustun. All rights reserved.
  3. *
  4. * This file is part of the QCAD project.
  5. *
  6. * QCAD is free software: you can redistribute it and/or modify
  7. * it under the terms of the GNU General Public License as published by
  8. * the Free Software Foundation, either version 3 of the License, or
  9. * (at your option) any later version.
  10. *
  11. * QCAD is distributed in the hope that it will be useful,
  12. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  13. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  14. * GNU General Public License for more details.
  15. *
  16. * You should have received a copy of the GNU General Public License
  17. * along with QCAD.
  18. */
  19. include("scripts/Widgets/ViewportWidget/ViewportWidget.js");
  20. function ViewportSettings() {
  21. }
  22. ViewportSettings.getPreferencesCategory = function(appPreferences) {
  23. if (appPreferences) {
  24. return [ qsTr("Defaults for New Drawings"), qsTr("Layout - Viewports") ];
  25. }
  26. return [ qsTr("Layout"), qsTr("Viewports") ];
  27. };
  28. ViewportSettings.initPreferences = function(pageWidget, calledByPrefDialog, document) {
  29. var widgets = getWidgets(pageWidget);
  30. var vpList = widgets["ViewportList"];
  31. var previewWidget = widgets["PreviewWidget"];
  32. vpList.clear();
  33. var dir = new QDir(ViewportWidget.templateDir);
  34. var filters = makeQDirFilters(QDir.Files, QDir.NoDotAndDotDot, QDir.Readable);
  35. var sortFlags = makeQDirSortFlags(QDir.Name);
  36. var eil = dir.entryInfoList(new Array("*.ui"), filters, sortFlags);
  37. var defaultRow = -1;
  38. for ( var j = 0; j < eil.length; ++j) {
  39. var fi = eil[j];
  40. var w = WidgetFactory.createWidget(ViewportWidget.templateDir, fi.fileName());
  41. var lwi = new QListWidgetItem(w.windowTitle, vpList, QListWidgetItem.Type.valueOf());
  42. lwi.setData(Qt.UserRole, fi.fileName());
  43. // default viewport setting
  44. if (fi.fileName() == "00_Single.ui") {
  45. defaultRow = j;
  46. }
  47. destr(w);
  48. }
  49. if (defaultRow != -1) {
  50. vpList.currentRow = defaultRow;
  51. ViewportSettings.updatePreview(previewWidget, vpList.item(vpList.currentRow));
  52. }
  53. vpList["currentItemChanged(QListWidgetItem*,QListWidgetItem*)"].connect(
  54. this, function(current, previous) {
  55. ViewportSettings.updatePreview(previewWidget, current);
  56. });
  57. };
  58. ViewportSettings.updatePreview = function(previewWidget, item) {
  59. var chs = previewWidget.children();
  60. for (var i=0; i<chs.length; ++i) {
  61. if (isNull(chs[i])) {
  62. continue;
  63. }
  64. destr(chs[i]);
  65. }
  66. var fileName = item.data(Qt.UserRole);
  67. if (fileName == undefined) {
  68. return;
  69. }
  70. var w = WidgetFactory.createWidget(ViewportWidget.templateDir, fileName);
  71. w.setParent(previewWidget);
  72. w.enabled = false;
  73. w.setFixedSize(new QSize(320, 240));
  74. w.show();
  75. };
  76. ViewportSettings.applyPreferences = function(doc) {
  77. if (typeof(doc) == "undefined") {
  78. // application wide settings: nothing to do
  79. return;
  80. }
  81. var mdiChild = EAction.getMdiChild();
  82. // doc preferences
  83. //qDebug("ViewportSettings.js:", "applyPreferences(): appPreferences: doc:",doc);
  84. // var chs = mdiChild.children();
  85. // for ( var i = 0; i < chs.length; ++i) {
  86. // var child = chs[i];
  87. // destr(child);
  88. // }
  89. var uiFileName = doc.getVariable("Viewport/ViewportList.data");
  90. if (uiFileName == undefined) {
  91. // fall back to application wide settings
  92. uiFileName = RSettings.getStringValue("Viewport/ViewportList.data", "00_Single.ui");
  93. }
  94. ViewportWidget.initMdiChild(mdiChild, uiFileName);
  95. var viewports = ViewportWidget.getViewports(mdiChild, mdiChild.getDocumentInterface());
  96. mdiChild.viewports = viewports;
  97. for ( var i = 0; i < viewports.length; ++i) {
  98. viewports[i].init();
  99. viewports[i].initEventHandler();
  100. }
  101. };