123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478 |
- // Copyright (c) 2015 Ultimaker B.V.
- // Cura is released under the terms of the AGPLv3 or higher.
- import QtQuick 2.2
- import QtQuick.Controls 1.1
- import QtQuick.Controls.Styles 1.1
- import QtQuick.Layouts 1.1
- import QtQuick.Dialogs 1.1
- import UM 1.0 as UM
- UM.MainWindow {
- id: base
- visible: true
- //: Cura application window title
- title: qsTr("Cura");
- Item {
- id: backgroundItem;
- anchors.fill: parent;
- UM.ApplicationMenu {
- id: menu
- window: base
- Menu {
- id: fileMenu
- //: File menu
- title: qsTr("&File");
- MenuItem { action: actions.open; }
- MenuItem { action: actions.save; }
- MenuSeparator { }
- Instantiator {
- model: Printer.recentFiles
- MenuItem {
- text: {
- var path = modelData.toString()
- return (index + 1) + ". " + path.slice(path.lastIndexOf("/") + 1);
- }
- onTriggered: {
- UM.MeshFileHandler.readLocalFile(modelData);
- Printer.setPlatformActivity(true)
- }
- }
- onObjectAdded: fileMenu.insertItem(index, object)
- onObjectRemoved: fileMenu.removeItem(object)
- }
- MenuSeparator { }
- MenuItem { action: actions.quit; }
- }
- Menu {
- //: Edit menu
- title: qsTr("&Edit");
- MenuItem { action: actions.undo; }
- MenuItem { action: actions.redo; }
- MenuSeparator { }
- MenuItem { action: actions.deleteSelection; }
- MenuItem { action: actions.deleteAll; }
- }
- Menu {
- id: machineMenu;
- //: Machine menu
- title: qsTr("&Machine");
- Instantiator {
- model: UM.Models.machinesModel
- MenuItem {
- text: model.name;
- checkable: true;
- checked: model.active;
- exclusiveGroup: machineMenuGroup;
- onTriggered: UM.Models.machinesModel.setActive(index)
- }
- onObjectAdded: machineMenu.insertItem(index, object)
- onObjectRemoved: machineMenu.removeItem(object)
- }
- ExclusiveGroup { id: machineMenuGroup; }
- MenuSeparator { }
- MenuItem { action: actions.addMachine; }
- MenuItem { action: actions.configureMachines; }
- }
- Menu {
- id: extension_menu
- //: Extensions menu
- title: qsTr("E&xtensions");
- Instantiator
- {
- model: UM.Models.extensionModel
- Menu
- {
- id: sub_menu
- title: model.name;
- Instantiator
- {
- model: actions
- MenuItem
- {
- text: model.text
- onTriggered: UM.Models.extensionModel.subMenuTriggered(name, model.text)
- }
- onObjectAdded: sub_menu.insertItem(index, object)
- onObjectRemoved: sub_menu.removeItem(object)
- }
- }
- onObjectAdded: extension_menu.insertItem(index, object)
- onObjectRemoved: extension_menu.removeItem(object)
- }
- }
- Menu {
- //: Settings menu
- title: qsTr("&Settings");
- MenuItem { action: actions.preferences; }
- }
- Menu {
- //: Help menu
- title: qsTr("&Help");
- MenuItem { action: actions.showEngineLog; }
- MenuItem { action: actions.documentation; }
- MenuItem { action: actions.reportBug; }
- MenuSeparator { }
- MenuItem { action: actions.about; }
- }
- }
- Item {
- id: contentItem;
- y: menu.height
- width: parent.width;
- height: parent.height - menu.height;
- Keys.forwardTo: menu
- DropArea {
- anchors.fill: parent;
- onDropped: {
- if(drop.urls.length > 0) {
- for(var i in drop.urls) {
- UM.MeshFileHandler.readLocalFile(drop.urls[i]);
- }
- }
- }
- }
- UM.MessageStack {
- anchors {
- left: toolbar.right;
- leftMargin: UM.Theme.sizes.window_margin.width;
- right: sidebar.left;
- rightMargin: UM.Theme.sizes.window_margin.width;
- top: parent.verticalCenter;
- bottom: parent.bottom;
- }
- }
- Loader
- {
- id: view_panel
- //anchors.left: parent.left;
- //anchors.right: parent.right;
- //anchors.bottom: parent.bottom
- anchors.top: viewModeButton.bottom
- anchors.topMargin: UM.Theme.sizes.default_margin.height;
- anchors.right: sidebar.left;
- anchors.rightMargin: UM.Theme.sizes.window_margin.width;
- //anchors.bottom: buttons.top;
- //anchors.bottomMargin: UM.Theme.sizes.default_margin.height;
- height: childrenRect.height;
- source: UM.ActiveView.valid ? UM.ActiveView.activeViewPanel : "";
- }
- Button {
- id: openFileButton;
- iconSource: UM.Theme.icons.open;
- style: UM.Backend.progress < 0 ? UM.Theme.styles.open_file_button : UM.Theme.styles.tool_button;
- tooltip: '';
- anchors {
- top: parent.top;
- topMargin: UM.Theme.sizes.window_margin.height;
- left: parent.left;
- leftMargin: UM.Theme.sizes.window_margin.width;
- }
- action: actions.open;
- }
- Image {
- anchors {
- verticalCenter: openFileButton.verticalCenter;
- left: openFileButton.right;
- leftMargin: UM.Theme.sizes.window_margin.width;
- }
- source: UM.Theme.images.logo;
- width: UM.Theme.sizes.logo.width;
- height: UM.Theme.sizes.logo.height;
- sourceSize.width: width;
- sourceSize.height: height;
- }
- Button {
- anchors {
- top: parent.top;
- topMargin: UM.Theme.sizes.window_margin.height;
- right: sidebar.left;
- rightMargin: UM.Theme.sizes.window_margin.width;
- }
- id: viewModeButton
- //: View Mode toolbar button
- text: qsTr("View Mode");
- iconSource: UM.Theme.icons.viewmode;
- style: UM.Theme.styles.tool_button;
- tooltip: '';
- menu: Menu {
- id: viewMenu;
- Instantiator {
- model: UM.Models.viewModel;
- MenuItem {
- text: model.name;
- checkable: true;
- checked: model.active;
- exclusiveGroup: viewMenuGroup;
- onTriggered: UM.Controller.setActiveView(model.id);
- }
- onObjectAdded: viewMenu.insertItem(index, object)
- onObjectRemoved: viewMenu.removeItem(object)
- }
- ExclusiveGroup { id: viewMenuGroup; }
- }
- }
- Toolbar {
- id: toolbar;
- anchors {
- left: parent.left;
- leftMargin: UM.Theme.sizes.window_margin.width;
- bottom: parent.bottom;
- bottomMargin: UM.Theme.sizes.window_margin.height;
- }
- }
- Sidebar {
- id: sidebar;
- anchors {
- top: parent.top;
- bottom: parent.bottom;
- right: parent.right;
- }
- width: UM.Theme.sizes.panel.width;
- addMachineAction: actions.addMachine;
- configureMachinesAction: actions.configureMachines;
- saveAction: actions.save;
- }
- Rectangle {
- x: base.mouseX + UM.Theme.sizes.default_margin.width;
- y: base.mouseY + UM.Theme.sizes.default_margin.height;
- width: childrenRect.width;
- height: childrenRect.height;
- Label {
- text: UM.ActiveTool.properties.Rotation != undefined ? "%1°".arg(UM.ActiveTool.properties.Rotation) : "";
- }
- visible: UM.ActiveTool.valid && UM.ActiveTool.properties.Rotation != undefined;
- }
- }
- }
- UM.PreferencesDialog {
- id: preferences
- Component.onCompleted: {
- //: View preferences page title
- insertPage(1, qsTr("View"), "view-preview", Qt.resolvedUrl("./ViewPage.qml"));
- }
- }
- Actions {
- id: actions;
- open.onTriggered: openDialog.open();
- save.onTriggered: saveDialog.open();
- quit.onTriggered: base.visible = false;
- undo.onTriggered: UM.OperationStack.undo();
- undo.enabled: UM.OperationStack.canUndo;
- redo.onTriggered: UM.OperationStack.redo();
- redo.enabled: UM.OperationStack.canRedo;
- deleteSelection.onTriggered: {
- if(objectContextMenu.objectId != 0) {
- Printer.deleteObject(objectContextMenu.objectId);
- }
- }
- deleteObject.onTriggered: {
- if(objectContextMenu.objectId != 0) {
- Printer.deleteObject(objectContextMenu.objectId);
- objectContextMenu.objectId = 0;
- }
- }
- multiplyObject.onTriggered: {
- if(objectContextMenu.objectId != 0) {
- Printer.multiplyObject(objectContextMenu.objectId, 1);
- objectContextMenu.objectId = 0;
- }
- }
- centerObject.onTriggered: {
- if(objectContextMenu.objectId != 0) {
- Printer.centerObject(objectContextMenu.objectId);
- objectContextMenu.objectId = 0;
- }
- }
-
- groupObjects.onTriggered:
- {
- Printer.groupSelected()
- }
-
- unGroupObjects.onTriggered:
- {
- Printer.ungroupSelected()
- }
-
- mergeObjects.onTriggered:
- {
- Printer.mergeSelected()
- }
- deleteAll.onTriggered: Printer.deleteAll()
- resetAllTranslation.onTriggered: Printer.resetAllTranslation()
- resetAll.onTriggered: Printer.resetAll()
- reloadAll.onTriggered: Printer.reloadAll()
- addMachine.onTriggered: addMachine.visible = true;
- preferences.onTriggered: preferences.visible = true;
- configureMachines.onTriggered: { preferences.visible = true; preferences.setPage(2); }
- documentation.onTriggered: CuraActions.openDocumentation();
- reportBug.onTriggered: CuraActions.openBugReportPage();
- showEngineLog.onTriggered: engineLog.visible = true;
- about.onTriggered: aboutDialog.visible = true;
- }
- Menu {
- id: objectContextMenu;
- property variant objectId: -1;
- MenuItem { action: actions.centerObject; }
- MenuItem { action: actions.deleteObject; }
- MenuItem { action: actions.multiplyObject; }
- MenuItem { action: actions.splitObject; }
-
- MenuSeparator { }
- MenuItem { action: actions.deleteAll; }
- MenuItem { action: actions.reloadAll; }
- MenuItem { action: actions.resetAllTranslation; }
- MenuItem { action: actions.resetAll; }
- MenuItem { action: actions.groupObjects;}
- MenuItem { action: actions.unGroupObjects;}
- MenuItem { action: actions.mergeObjects;}
- }
- Menu {
- id: contextMenu;
- MenuItem { action: actions.deleteAll; }
- MenuItem { action: actions.reloadAll; }
- MenuItem { action: actions.resetAllTranslation; }
- MenuItem { action: actions.resetAll; }
- MenuItem { action: actions.groupObjects;}
- MenuItem { action: actions.unGroupObjects;}
- MenuItem { action: actions.mergeObjects;}
- }
- Connections {
- target: UM.Controller
- onContextMenuRequested: {
- if(objectId == 0) {
- contextMenu.popup();
- } else {
- objectContextMenu.objectId = objectId;
- objectContextMenu.popup();
- }
- }
- }
- FileDialog {
- id: openDialog;
- //: File open dialog title
- title: qsTr("Open File")
- modality: UM.Application.platform == "linux" ? Qt.NonModal : Qt.WindowModal;
- //TODO: Support multiple file selection, workaround bug in KDE file dialog
- //selectMultiple: true
- nameFilters: UM.MeshFileHandler.supportedReadFileTypes;
- onAccepted:
- {
- UM.MeshFileHandler.readLocalFile(fileUrl)
- Printer.setPlatformActivity(true)
- }
- }
- FileDialog {
- id: saveDialog;
- //: File save dialog title
- title: qsTr("Save File");
- selectExisting: false;
- modality: UM.Application.platform == "linux" ? Qt.NonModal : Qt.WindowModal;
- nameFilters: UM.MeshFileHandler.supportedWriteFileTypes
- onAccepted:
- {
- UM.MeshFileHandler.writeLocalFile(fileUrl);
- }
- }
- EngineLog {
- id: engineLog;
- }
- AddMachineWizard {
- id: addMachine;
- }
- AboutDialog {
- id: aboutDialog
- }
- Connections {
- target: Printer
- onRequestAddPrinter: addMachine.visible = true;
- onWriteToLocalFileRequested: saveDialog.open();
- }
- Component.onCompleted: UM.Theme.load(UM.Resources.getPath(UM.Resources.ThemesLocation, "cura"))
- }
|