| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100 |
- /**
- * 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.
- */
- /**
- * \class CharacterMapDialog
- * \brief Provides a character map dialog that shows available Unicode
- * characters to insert into a text field.
- * \ingroup ecma_draw_text
- */
- function CharacterMapDialog(parent) {
- this.parent = parent;
- }
- CharacterMapDialog.includeBasePath = includeBasePath;
- CharacterMapDialog.prototype.show = function() {
- var font, pointSize;
-
- var dlg = WidgetFactory.createWidget(CharacterMapDialog.includeBasePath,
- "CharacterMapDialog.ui", this.parent.dialog);
- //dlg.windowIcon = new QIcon(autoPath("scripts/Draw/Text/Text.svg"));
- var characterMap = new RCharacterWidget(dlg);
- var fontFamily = this.parent.comboFont
- .itemText(this.parent.comboFont.currentIndex);
- var bold = this.parent.actionTextBold.checked ? true : false;
- var italic = this.parent.actionTextItalic.checked ? true : false;
- pointSize = this.parent.comboSize.itemText(this.parent.comboSize.currentIndex)
- * this.parent.fontHeightFactor;
- var style = "";
- style += bold ? "Bold" : "";
- style += italic ? " Italic" : "";
- font = new QFont(fontFamily, pointSize, bold ? QFont.Bold : QFont.Normal, italic);
- characterMap.updateFont(font);
- characterMap.updateSize(pointSize.toString());
- characterMap.updateStyle(style);
- characterMap.updateFontMerging(true);
- characterMap.characterSelected.connect(this, function(character) {
- var textWidget = this.parent.dialog.findChild("Text");
- var cursor = textWidget.textCursor();
- cursor.insertText(character);
-
- var singleShot = new QTimer(this.parent.dialog);
- singleShot.singleShot = true;
- singleShot.timeout.connect(this, function() {
- dlg.accept();
- });
- singleShot.start(250);
- });
- var widgets = getWidgets(dlg);
- widgets["ScrollArea"].setWidget(characterMap);
- widgets["ZoomIn"].clicked.connect(this, function() {
- font = characterMap.getDisplayFont();
- pointSize = font.pointSize();
- ++pointSize;
- characterMap.updateSize(pointSize.toString());
- this.updateSlider(widgets["ZoomSlider"], pointSize);
- });
- widgets["ZoomOut"].clicked.connect(this, function() {
- font = characterMap.getDisplayFont();
- pointSize = font.pointSize();
- pointSize = Math.max(1, --pointSize);
- characterMap.updateSize(pointSize.toString());
- this.updateSlider(widgets["ZoomSlider"], pointSize);
- });
- widgets["ZoomSlider"].valueChanged.connect(this, function(value) {
- pointSize = Math.max(1, Math.round(value / 2));
- characterMap.updateSize(pointSize.toString());
- });
- font = characterMap.getDisplayFont();
- pointSize = font.pointSize();
- this.updateSlider(widgets["ZoomSlider"], pointSize);
- widgets["ScrollArea"].setFocus(Qt.MouseFocusReason);
- dlg.show();
- };
- CharacterMapDialog.prototype.updateSlider = function(slider, pointSize) {
- var value = Math.round(100 / 50 * pointSize);
- slider.setValue(value);
- };
|