| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252 |
- // /**
- // * Copyright (c) 2011-2018 by Andrew Mustun. All rights reserved.
- // *
- // * This file is part of the QCAD project.
- // *
- // * QCAD is free software: you can redistribute it and/or modify
- // * it under the terms of the GNU General Public License as published by
- // * the Free Software Foundation, either version 3 of the License, or
- // * (at your option) any later version.
- // *
- // * QCAD is distributed in the hope that it will be useful,
- // * but WITHOUT ANY WARRANTY; without even the implied warranty of
- // * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- // * GNU General Public License for more details.
- // *
- // * You should have received a copy of the GNU General Public License
- // * along with QCAD.
- // */
- // /**
- // * \defgroup ecma_select Selection Tools
- // * \ingroup ecma_scripts
- // *
- // * \brief This module contains ECMAScript implementations of advanced
- // * selection tools.
- // */
- // include("scripts/EAction.js");
- // /**
- // * \class Select
- // * \brief Base class for all advanced selection tools.
- // * \ingroup ecma_select
- // */
- // function Select(guiAction) {
- // EAction.call(this, guiAction);
- // this.selectionMode = Select.Mode.Replace;
- // this.crossSelection = false;
- // }
- // Select.prototype = new EAction();
- // Select.includeBasePath = includeBasePath;
- // Select.Mode = {
- // Replace: 0,
- // Add: 1,
- // Remove: 2,
- // Intersect: 3
- // };
- // Select.prototype.beginEvent = function() {
- // EAction.prototype.beginEvent.call(this);
- // if (!isNull(this.getGuiAction()) && this.getGuiAction().objectName==="SelectToolsPanelAction") {
- // EAction.showCadToolBarPanel("SelectToolsPanel");
- // this.terminate();
- // }
- // };
- // /**
- // * Adds the given box as a selection box to the preview.
- // * \param di RDocumentInterface
- // * \param box RBox
- // * \param crossSelection boolean true for cross selection
- // */
- // Select.previewSelectionBox = function(di, box, crossSelection) {
- // var points = new Array(
- // box.c1,
- // new RVector(box.c1.x, box.c2.y),
- // box.c2,
- // new RVector(box.c2.x, box.c1.y),
- // box.c1
- // );
- // Select.previewSelectionPolygon(di, points, crossSelection);
- // };
- // /**
- // * Adds a selection polygon with the given points to the preview.
- // * \param points Array of RVector objects
- // */
- // Select.previewSelectionPolygon = function(di, points, crossSelection) {
- // var polygon = new RPolyline(points, true);
- // var color = RSettings.getColor("GraphicsViewColors/SelectionBoxColor", new RColor(128,0,0,255));
- // var lw = RLineweight.Weight000;
- // var c;
- // if (crossSelection) {
- // c = RSettings.getColor("GraphicsViewColors/SelectionBoxBackgroundCrossColor", new RColor(0,0,255,30));
- // } else {
- // c = RSettings.getColor("GraphicsViewColors/SelectionBoxBackgroundColor", new RColor(0,255,0,30));
- // }
- // // TODO c.getQColor() doesn't work
- // var bgColor = new QColor(c.red(), c.green(), c.blue(), c.alpha());
- // var brush = new QBrush(bgColor, Qt.SolidPattern);
- // if (crossSelection) {
- // var dashes = new Array(10, 5);
- // di.addShapeToPreview(polygon, color, brush,
- // lw, Qt.CustomDashLine.valueOf(), dashes);
- // } else {
- // // TODO "Qt.SolidLine" doesn't convert to number
- // di.addShapeToPreview(polygon, color, brush,
- // lw, Qt.SolidLine.valueOf());
- // }
- // };
- // /**
- // * Called when the user toggles the cross selection option available in
- // * some selection options toolbars.
- // */
- // Select.prototype.slotCrossSelectionChanged = function(checked) {
- // this.crossSelection = checked;
- // this.getDocumentInterface().clearPreview();
- // this.getDocumentInterface().repaintViews();
- // this.preview();
- // };
- // /**
- // * Called when the current selection mode changed to 'replace'.
- // */
- // Select.prototype.slotModeReplaceChanged = function(checked) {
- // if (checked) {
- // this.selectionMode = Select.Mode.Replace;
- // }
- // };
- // /**
- // * Called when the current selection mode changed to 'add'.
- // */
- // Select.prototype.slotModeAddChanged = function(checked) {
- // if (checked) {
- // this.selectionMode = Select.Mode.Add;
- // }
- // };
- // /**
- // * Called when the current selection mode changed to 'remove'.
- // */
- // Select.prototype.slotModeRemoveChanged = function(checked) {
- // if (checked) {
- // this.selectionMode = Select.Mode.Remove;
- // }
- // };
- // /**
- // * Called when the current selection mode changed to 'intersect'.
- // */
- // Select.prototype.slotModeIntersectChanged = function(checked) {
- // if (checked) {
- // this.selectionMode = Select.Mode.Intersect;
- // }
- // };
- // /**
- // * Change selection based on given matching entities and current
- // * selection mode.
- // */
- // Select.prototype.selectWithMode = function(entityIds) {
- // var di = this.getDocumentInterface();
- // Select.selectWithMode(entityIds, di, this.selectionMode);
- // };
- // Select.selectWithMode = function(entityIds, di, selectionMode) {
- // switch (selectionMode) {
- // case Select.Mode.Replace:
- // di.selectEntities(entityIds, false);
- // break;
- // case Select.Mode.Add:
- // di.selectEntities(entityIds, true);
- // break;
- // case Select.Mode.Remove:
- // di.deselectEntities(entityIds);
- // break;
- // case Select.Mode.Intersect:
- // var doc = di.getDocument();
- // var allEntityIds = doc.queryAllEntities();
- // var entityIdsToSelect = [];
- // var entityIdsToDeselect = [];
- // for (var e = 0; e < allEntityIds.length; ++e) {
- // var entityId = allEntityIds[e];
- // var entity = EAction.getDocument().queryEntity(entityId);
- // var match = entityIds.contains(entityId);
- // var previouslySelected = entity.isSelected();
- // var select = match && previouslySelected;
- // if (select && !previouslySelected) {
- // entityIdsToSelect.push(entityId);
- // }
- // if (!select && previouslySelected) {
- // entityIdsToDeselect.push(entityId);
- // }
- // }
- // if (entityIdsToSelect.length!==0) {
- // di.selectEntities(entityIdsToSelect);
- // }
- // if (entityIdsToDeselect.length!==0) {
- // di.deselectEntities(entityIdsToDeselect);
- // }
- // break;
- // }
- // };
- // Select.getMenu = function() {
- // var menu = EAction.getMenu(Select.getTitle(), "SelectMenu");
- // menu.setProperty("scriptFile", Select.includeBasePath + "/Select.js");
- // return menu;
- // };
- // Select.getToolBar = function() {
- // var tb = EAction.getToolBar(Select.getTitle(), "SelectToolBar");
- // tb.visible = false;
- // return tb;
- // };
- // Select.getCadToolBarPanel = function() {
- // var mtb = EAction.getMainCadToolBarPanel();
- // var actionName = "SelectToolsPanelAction";
- // if (!isNull(mtb) && isNull(mtb.findChild(actionName))) {
- // var action = new RGuiAction(qsTr("Selection Tools"), mtb);
- // action.setScriptFile(Select.includeBasePath + "/Select.js");
- // action.objectName = actionName;
- // action.setRequiresDocument(true);
- // action.setIcon(Select.includeBasePath + "/Select.svg");
- // //action.setStatusTip(qsTr("Show selection tools"));
- // action.setDefaultShortcut(new QKeySequence("w,s"));
- // action.setNoState();
- // action.setDefaultCommands(["selectionmenu"]);
- // action.setGroupSortOrder(40);
- // action.setSortOrder(400);
- // action.setWidgetNames(["MainToolsPanel"]);
- // }
- // var tb = EAction.getCadToolBarPanel(qsTr("Selection Tools Panel"), "SelectToolsPanel", true);
- // return tb;
- // };
- // Select.getToolMatrixPanel = function() {
- // return EAction.getToolMatrixPanel(Select.getTitle(), "SelectMatrixPanel", 4000);
- // };
- // Select.getTitle = function() {
- // return qsTr("&Select");
- // };
- // Select.prototype.getTitle = function() {
- // return Select.getTitle();
- // };
- // Select.init = function() {
- // Select.getMenu();
- // Select.getToolBar();
- // Select.getCadToolBarPanel();
- // Select.getToolMatrixPanel();
- // };
|