| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149 |
- /**
- * 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.
- */
- include("scripts/EAction.js");
- include("scripts/sprintf.js");
- include("scripts/WidgetFactory.js");
- include("scripts/Widgets/StatusBar/StatusBar.js");
- function CoordinateDisplay() {
- }
- CoordinateDisplay.getPreferencesCategory = function() {
- return [ qsTr("Widgets"), qsTr("Coordinate Display") ];
- };
- CoordinateDisplay.singleShot = undefined;
- CoordinateDisplay.widget = undefined;
- CoordinateDisplay.lAbs = undefined;
- CoordinateDisplay.lRel = undefined;
- CoordinateDisplay.lAbsPol = undefined;
- CoordinateDisplay.lRelPol = undefined;
- CoordinateDisplay.counter = 0;
- CoordinateDisplay.postInit = function(basePath) {
- CoordinateDisplay.widget = WidgetFactory.createWidget(basePath, "CoordinateDisplay.ui");
- StatusBar.addWidget(CoordinateDisplay.widget, 100, RSettings.getBoolValue("StatusBar/CoordinateDisplay", true));
- CoordinateDisplay.forcedUpdateInterval = RSettings.getIntValue("CoordinateDisplay/Interval", 8);
- CoordinateDisplay.lAbs = CoordinateDisplay.widget.findChild("Abs");
- CoordinateDisplay.lAbs.font = RSettings.getStatusBarFont();
- CoordinateDisplay.lRel = CoordinateDisplay.widget.findChild("Rel");
- CoordinateDisplay.lRel.font = RSettings.getStatusBarFont();
- CoordinateDisplay.lAbsPol = CoordinateDisplay.widget.findChild("AbsPol");
- CoordinateDisplay.lAbsPol.font = RSettings.getStatusBarFont();
- CoordinateDisplay.lRelPol = CoordinateDisplay.widget.findChild("RelPol");
- CoordinateDisplay.lRelPol.font = RSettings.getStatusBarFont();
- var cartCoordSep;
- var polCoordSep;
- var relCoordPre;
- var adapter = new RCoordinateListenerAdapter();
- var appWin = EAction.getMainWindow();
- appWin.addCoordinateListener(adapter);
- adapter.coordinateUpdated.connect(CoordinateDisplay.update);
- };
- CoordinateDisplay.update = function(documentInterface) {
- if (!CoordinateDisplay.widget.enabled) {
- return;
- }
- if (isNull(documentInterface)) {
- // clear texts (no document open):
- CoordinateDisplay.lAbs.setText("");
- CoordinateDisplay.lAbsPol.setText("");
- CoordinateDisplay.lRel.setText("");
- CoordinateDisplay.lRelPol.setText("");
- return;
- }
- if (!isNull(CoordinateDisplay.singleShot)) {
- if (CoordinateDisplay.singleShot.active) {
- // never mind previous update:
- CoordinateDisplay.singleShot.stop();
- }
- if (!isNull(CoordinateDisplay.singleShot)) {
- // catch exception when ran with script debugger:
- try {
- destr(CoordinateDisplay.singleShot);
- CoordinateDisplay.singleShot = undefined;
- }
- catch(e) {}
- }
- }
- // force immediate update every X mouse moves
- CoordinateDisplay.counter++;
- if (CoordinateDisplay.counter>=CoordinateDisplay.forcedUpdateInterval) {
- //CoordinateDisplay.singleShot.start(0);
- CoordinateDisplay.timedUpdate();
- CoordinateDisplay.counter = 0;
- }
- else {
- if (RSettings.getQtVersion()>=0x060000) {
- CoordinateDisplay.timedUpdate();
- }
- else {
- CoordinateDisplay.singleShot = new QTimer();
- CoordinateDisplay.singleShot.singleShot = true;
- CoordinateDisplay.singleShot.timeout.connect(CoordinateDisplay.timedUpdate);
- CoordinateDisplay.singleShot.start(20);
- }
- }
- };
- CoordinateDisplay.timedUpdate = function() {
- var di = EAction.getDocumentInterface();
- if (isNull(di)) {
- return;
- }
- var doc = di.getDocument();
- if (isNull(doc)) {
- return;
- }
- StatusBar.clearMessage();
- var absPos = di.getCursorPosition();
- var relPos = absPos.operator_subtract(di.getRelativeZero());
- if (absPos.isValid()) {
- CoordinateDisplay.lAbs.setText(coordinateToString(absPos, 4, false, false, doc));
- CoordinateDisplay.lAbsPol.setText(coordinateToString(absPos, 4, false, true, doc));
- }
- else {
- CoordinateDisplay.lAbs.setText("-");
- CoordinateDisplay.lAbsPol.setText("-");
- }
- if (relPos.isValid()) {
- CoordinateDisplay.lRel.setText(coordinateToString(relPos, 4, true, false, doc));
- CoordinateDisplay.lRelPol.setText(coordinateToString(relPos, 4, true, true, doc));
- }
- else {
- CoordinateDisplay.lRel.setText("-");
- CoordinateDisplay.lRelPol.setText("-");
- }
- };
|