123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174 |
- /****************************************************************************
- **
- ** Copyright (C) 2016 The Qt Company Ltd.
- ** Contact: https://www.qt.io/licensing/
- **
- ** This file is part of the Qt Quick Controls module of the Qt Toolkit.
- **
- ** $QT_BEGIN_LICENSE:LGPL$
- ** Commercial License Usage
- ** Licensees holding valid commercial Qt licenses may use this file in
- ** accordance with the commercial license agreement provided with the
- ** Software or, alternatively, in accordance with the terms contained in
- ** a written agreement between you and The Qt Company. For licensing terms
- ** and conditions see https://www.qt.io/terms-conditions. For further
- ** information use the contact form at https://www.qt.io/contact-us.
- **
- ** GNU Lesser General Public License Usage
- ** Alternatively, this file may be used under the terms of the GNU Lesser
- ** General Public License version 3 as published by the Free Software
- ** Foundation and appearing in the file LICENSE.LGPL3 included in the
- ** packaging of this file. Please review the following information to
- ** ensure the GNU Lesser General Public License version 3 requirements
- ** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
- **
- ** GNU General Public License Usage
- ** Alternatively, this file may be used under the terms of the GNU
- ** General Public License version 2.0 or (at your option) the GNU General
- ** Public license version 3 or any later version approved by the KDE Free
- ** Qt Foundation. The licenses are as published by the Free Software
- ** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
- ** included in the packaging of this file. Please review the following
- ** information to ensure the GNU General Public License requirements will
- ** be met: https://www.gnu.org/licenses/gpl-2.0.html and
- ** https://www.gnu.org/licenses/gpl-3.0.html.
- **
- ** $QT_END_LICENSE$
- **
- ****************************************************************************/
- import QtQuick 2.2
- import QtQuick.Controls 1.2
- import QtQuick.Controls.Private 1.0
- Item {
- id: editMenuBase
- anchors.fill: parent
- Component {
- id: undoAction
- Action {
- text: qsTr("&Undo")
- shortcut: StandardKey.Undo
- iconName: "edit-undo"
- enabled: input.canUndo
- onTriggered: input.undo()
- }
- }
- Component {
- id: redoAction
- Action {
- text: qsTr("&Redo")
- shortcut: StandardKey.Redo
- iconName: "edit-redo"
- enabled: input.canRedo
- onTriggered: input.redo()
- }
- }
- Component {
- id: cutAction
- Action {
- text: qsTr("Cu&t")
- shortcut: StandardKey.Cut
- iconName: "edit-cut"
- enabled: !input.readOnly && selectionStart !== selectionEnd
- onTriggered: {
- input.cut();
- input.select(input.cursorPosition, input.cursorPosition);
- }
- }
- }
- Component {
- id: copyAction
- Action {
- text: qsTr("&Copy")
- shortcut: StandardKey.Copy
- iconName: "edit-copy"
- enabled: input.selectionStart !== input.selectionEnd
- onTriggered: {
- input.copy();
- input.select(input.cursorPosition, input.cursorPosition);
- }
- }
- }
- Component {
- id: pasteAction
- Action {
- text: qsTr("&Paste")
- shortcut: StandardKey.Paste
- iconName: "edit-paste"
- enabled: input.canPaste
- onTriggered: input.paste()
- }
- }
- Component {
- id: deleteAction
- Action {
- text: qsTr("Delete")
- shortcut: StandardKey.Delete
- iconName: "edit-delete"
- enabled: !input.readOnly && input.selectionStart !== input.selectionEnd
- onTriggered: input.remove(input.selectionStart, input.selectionEnd)
- }
- }
- Component {
- id: clearAction
- Action {
- text: qsTr("Clear")
- shortcut: StandardKey.DeleteCompleteLine
- iconName: "edit-clear"
- enabled: !input.readOnly && input.length > 0
- onTriggered: input.remove(0, input.length)
- }
- }
- Component {
- id: selectAllAction
- Action {
- text: qsTr("Select All")
- shortcut: StandardKey.SelectAll
- enabled: !(input.selectionStart === 0 && input.selectionEnd === input.length)
- onTriggered: input.selectAll()
- }
- }
- property Component defaultMenu: Menu {
- MenuItem { action: undoAction.createObject(editMenuBase) }
- MenuItem { action: redoAction.createObject(editMenuBase) }
- MenuSeparator {}
- MenuItem { action: cutAction.createObject(editMenuBase) }
- MenuItem { action: copyAction.createObject(editMenuBase) }
- MenuItem { action: pasteAction.createObject(editMenuBase) }
- MenuItem { action: deleteAction.createObject(editMenuBase) }
- MenuItem { action: clearAction.createObject(editMenuBase) }
- MenuSeparator {}
- MenuItem { action: selectAllAction.createObject(editMenuBase) }
- }
- Connections {
- target: mouseArea
- function onClicked() {
- if (input.selectionStart === input.selectionEnd) {
- var cursorPos = input.positionAt(mouse.x, mouse.y)
- input.moveHandles(cursorPos, cursorPos)
- }
- input.activate()
- if (control.menu) {
- var menu = getMenuInstance();
- menu.__dismissAndDestroy();
- var menuPos = mapToItem(null, mouse.x, mouse.y)
- menu.__popup(Qt.rect(menuPos.x, menuPos.y, 0, 0), -1, MenuPrivate.EditMenu);
- }
- }
- }
- }
|