diff --git a/app/SettingComponent.qml b/app/CheckableSlider.qml similarity index 86% rename from app/SettingComponent.qml rename to app/CheckableSlider.qml index abeb827..c6044bc 100644 --- a/app/SettingComponent.qml +++ b/app/CheckableSlider.qml @@ -56,6 +56,14 @@ RowLayout { } Text{ id: textfield - text: Math.round(((value - min_value) / (max_value - min_value)) * 100) + "%" + property string unformattedText: Math.round(((value - min_value) / (max_value - min_value)) * 100) + text: formatNumber(unformattedText) + } + function formatNumber(num) { + var n = "" + num; + while (n.length < 3) { + n = " " + n; + } + return n + "%"; } } diff --git a/app/ColorButton.qml b/app/ColorButton.qml index 1b966df..248924c 100644 --- a/app/ColorButton.qml +++ b/app/ColorButton.qml @@ -22,7 +22,8 @@ import QtQuick 2.2 import QtQuick.Dialogs 1.1 Item { - property color button_color; + property color button_color + property string name ColorDialog { id: colorDialog @@ -35,25 +36,22 @@ Item { onAccepted: button_color = color; } Rectangle{ - radius: 10 anchors.fill: parent + radius: 10 color: button_color - - Text{ - id: text_color - anchors.centerIn: parent - z: 1.1 - text: button_color - } - - Rectangle{ - anchors.centerIn: parent - width: text_color.width * 1.4 - height: text_color.height * 1.4 - radius: 10 - border.color: "black" - border.width: 2 + border.color: "black" + Glossy {} + Rectangle { + anchors.fill: parent + anchors.margins: parent.height * 0.25 + radius: parent.radius color: "white" + opacity: 0.5 + } + Text{ + anchors.centerIn: parent + z: parent.z + 1 + text: name + ": " + button_color } } MouseArea{ diff --git a/app/Glossy.qml b/app/Glossy.qml new file mode 100644 index 0000000..3ac9c14 --- /dev/null +++ b/app/Glossy.qml @@ -0,0 +1,21 @@ +import QtQuick 2.2 + +Rectangle { + anchors.centerIn: parent + width: parent.width - parent.border.width + height: parent.height - parent.border.width + radius:parent.radius - parent.border.width/2 + smooth: true + + border.width: parent.border.width/2 + border.color: "#22FFFFFF" + + gradient: Gradient { + GradientStop { position: 0; color: "#88FFFFFF" } + GradientStop { position: .1; color: "#55FFFFFF" } + GradientStop { position: .5; color: "#33FFFFFF" } + GradientStop { position: .501; color: "#11000000" } + GradientStop { position: .8; color: "#11FFFFFF" } + GradientStop { position: 1; color: "#55FFFFFF" } + } +} diff --git a/app/SettingsEffectsTab.qml b/app/SettingsEffectsTab.qml new file mode 100644 index 0000000..a6e398a --- /dev/null +++ b/app/SettingsEffectsTab.qml @@ -0,0 +1,53 @@ +import QtQuick 2.2 +import QtQuick.Controls 1.1 +import QtQuick.Layouts 1.1 + +Tab{ + GroupBox{ + title: qsTr("Effects") + anchors.fill: parent + ColumnLayout{ + anchors.fill: parent + CheckableSlider{ + name: qsTr("Bloom") + onValueChanged: shadersettings.bloom_strength = value + _value: shadersettings.bloom_strength + } + CheckableSlider{ + name: qsTr("Motion Blur") + onValueChanged: shadersettings.motion_blur = value + _value: shadersettings.motion_blur + } + CheckableSlider{ + name: qsTr("Noise") + onValueChanged: shadersettings.noise_strength = value + _value: shadersettings.noise_strength + } + CheckableSlider{ + name: qsTr("Jitter") + onValueChanged: shadersettings.jitter = value + _value: shadersettings.jitter + } + CheckableSlider{ + name: qsTr("Glow") + onValueChanged: shadersettings.glowing_line_strength = value; + _value: shadersettings.glowing_line_strength + } + CheckableSlider{ + name: qsTr("Screen distortion") + onValueChanged: shadersettings.screen_distortion = value; + _value: shadersettings.screen_distortion; + } + CheckableSlider{ + name: qsTr("Brightness flickering") + onValueChanged: shadersettings.brightness_flickering= value; + _value: shadersettings.brightness_flickering; + } + CheckableSlider{ + name: qsTr("Horizontal flickering") + onValueChanged: shadersettings.horizontal_sincronization = value; + _value: shadersettings.horizontal_sincronization; + } + } + } +} diff --git a/app/SettingsGeneralTab.qml b/app/SettingsGeneralTab.qml new file mode 100644 index 0000000..900fec7 --- /dev/null +++ b/app/SettingsGeneralTab.qml @@ -0,0 +1,109 @@ +import QtQuick 2.2 +import QtQuick.Controls 1.1 +import QtQuick.Layouts 1.1 + +Tab{ + ColumnLayout{ + anchors.fill: parent + GroupBox{ + Layout.fillWidth: true + title: qsTr("Profile") + ColumnLayout{ + anchors.fill: parent + ComboBox{ + id: profilesbox + Layout.fillWidth: true + model: shadersettings.profiles_list + currentIndex: shadersettings.profiles_index + } + RowLayout{ + Layout.fillWidth: true + Button{ + Layout.fillWidth: true + text: qsTr("Load") + onClicked: { + shadersettings.profiles_index = profilesbox.currentIndex + shadersettings.loadCurrentProfile(); + } + } + Button{ + Layout.fillWidth: true + text: qsTr("Store current") + onClicked: insertname.show() + } + Button{ + Layout.fillWidth: true + text: qsTr("Remove Selected") + enabled: !shadersettings.profiles_list.get(profilesbox.currentIndex).builtin + onClicked: { + shadersettings.profiles_list.remove(profilesbox.currentIndex) + profilesbox.currentIndex = profilesbox.currentIndex - 1 + } + } + } + InsertNameDialog{ + id: insertname + onNameSelected: shadersettings.addNewCustomProfile(name) + } + } + } + GroupBox{ + title: qsTr("Lights") + Layout.fillWidth: true + GridLayout{ + anchors.fill: parent + columns: 2 + Text{ text: qsTr("Brightness") } + SimpleSlider{ + onValueChanged: shadersettings.brightness = value + value: shadersettings.brightness + } + Text{ text: qsTr("Contrast") } + SimpleSlider{ + onValueChanged: shadersettings.contrast = value + value: shadersettings.contrast + } + Text{ text: qsTr("Ambient") } + SimpleSlider{ + onValueChanged: shadersettings.ambient_light = value; + value: shadersettings.ambient_light + } + } + } + GroupBox{ + title: qsTr("Performace") + Layout.fillWidth: true + Layout.columnSpan: 2 + anchors.left: parent.left + anchors.right: parent.right + GridLayout{ + anchors.fill: parent + rows: 2 + columns: 3 + Text{text: qsTr("Animation FPS")} + Slider{ + Layout.fillWidth: true + id: slider + stepSize: 1 + maximumValue: 60 + minimumValue: 0 + onValueChanged: shadersettings.fps = value; + value: shadersettings.fps + } + Text{text: slider.value} + Text{text: qsTr("Texture quality")} + Slider{ + Layout.fillWidth: true + id: txtslider + stepSize: 0.01 + maximumValue: 1 + minimumValue: 0 + onValueChanged: shadersettings.window_scaling = value; + value: shadersettings.window_scaling + updateValueWhileDragging: false + } + Text{text: Math.round(txtslider.__handlePos * 100) + "%"} + } + } + } +} diff --git a/app/SettingsWindow.qml b/app/SettingsWindow.qml index b2b1d84..db23dff 100644 --- a/app/SettingsWindow.qml +++ b/app/SettingsWindow.qml @@ -28,281 +28,29 @@ Window { id: settings_window title: qsTr("Settings") width: 640 - height: 480 + height: 420 + + property int tabmargins: 15 modality: Qt.ApplicationModal TabView{ anchors.fill: parent anchors.margins: 10 - Tab{ - title: qsTr("Appearance") + SettingsGeneralTab{ + title: qsTr("General") anchors.fill: parent - anchors.margins: 15 - GridLayout{ - anchors.fill: parent - columns: 2 - GroupBox{ - anchors.left: parent.left - anchors.right: parent.right - Layout.columnSpan: 2 - title: qsTr("Profile") - RowLayout{ - anchors.fill: parent - ComboBox{ - id: profilesbox - Layout.fillWidth: true - model: shadersettings.profiles_list - currentIndex: shadersettings.profiles_index - } - Button{ - text: "Load" - onClicked: shadersettings.profiles_index = profilesbox.currentIndex - } - Button{ - text: "Add" - onClicked: insertname.show() - } - Button{ - text: "Remove" - enabled: !shadersettings.profiles_list.get(profilesbox.currentIndex).builtin - onClicked: { - shadersettings.profiles_list.remove(profilesbox.currentIndex) - profilesbox.currentIndex = profilesbox.currentIndex - 1 - } - } - InsertNameDialog{ - id: insertname - onNameSelected: shadersettings.addNewCustomProfile(name) - } - } - } - - GroupBox{ - id: fontbox - title: qsTr("Font") - Layout.fillHeight: true - Layout.fillWidth: true - GridLayout{ - anchors.fill: parent - columns: 2 - Text{text: qsTr("Font style:")} - ComboBox{ - Layout.fillWidth: true - model: shadersettings.fontlist - currentIndex: shadersettings.fontIndex - onCurrentIndexChanged: shadersettings.fontIndex = currentIndex - } - Text{text: qsTr("Font scaling:")} - ComboBox{ - Layout.fillWidth: true - model: shadersettings.fontScalingList - currentIndex: shadersettings.fontScalingIndex - onCurrentIndexChanged: shadersettings.fontScalingIndex = currentIndex - } - Item{Layout.fillHeight: true} - ColorButton{ - height: 50 - Layout.fillWidth: true - Layout.columnSpan: 2 - onButton_colorChanged: shadersettings._font_color = button_color; - button_color: shadersettings._font_color; - } - } - } - GroupBox{ - title: qsTr("Background") - Layout.fillHeight: true - Layout.fillWidth: true - GridLayout{ - anchors.fill: parent - columns: 2 - Text{text: "Frame texture"} - ComboBox{ - id: framescombobox - Layout.fillWidth: true - model: shadersettings.frames_list - currentIndex: shadersettings.frames_index - onCurrentIndexChanged: shadersettings.frames_index = currentIndex - } - CheckBox{ - Layout.columnSpan: 2 - Layout.fillWidth: true - checked: shadersettings.frame_reflections - text: qsTr("Frame reflections") - onCheckedChanged: shadersettings.frame_reflections = checked - enabled: framescombobox.model.get(framescombobox.currentIndex).reflections - } - - Item{Layout.fillHeight: true} - ColorButton{ - height: 50 - Layout.fillWidth: true - Layout.columnSpan: 2 - - onButton_colorChanged: shadersettings._background_color= button_color - button_color: shadersettings._background_color; - } - } - } - GroupBox{ - title: qsTr("Lights") - Layout.fillWidth: true - Layout.columnSpan: 2 - anchors.left: parent.left - anchors.right: parent.right - GridLayout{ - Layout.columnSpan: 2 - columns: 2 - rows: 2 - anchors.left: parent.left - anchors.right: parent.right - Text{text: qsTr("Contrast")} - SimpleSlider{ - onValueChanged: shadersettings.contrast = value - value: shadersettings.contrast - } - Text{text: qsTr("Brightness")} - SimpleSlider{ - onValueChanged: shadersettings.brightness = value - value: shadersettings.brightness - } - } - } - GroupBox{ - title: qsTr("Performace") - Layout.fillWidth: true - Layout.columnSpan: 2 - anchors.left: parent.left - anchors.right: parent.right - GridLayout{ - columns: 3 - Layout.columnSpan: 2 - anchors {left: parent.left; right: parent.right} - Text{text: "Animation FPS"} - Slider{ - Layout.fillWidth: true - id: slider - stepSize: 1 - maximumValue: 60 - minimumValue: 0 - onValueChanged: shadersettings.fps = value; - value: shadersettings.fps - } - Text{text: slider.value} - Text{text: "Texture quality"} - Slider{ - Layout.fillWidth: true - id: txtslider - stepSize: 0.01 - maximumValue: 1 - minimumValue: 0 - onValueChanged: shadersettings.window_scaling = value; - value: shadersettings.window_scaling - updateValueWhileDragging: false - } - Text{text: Math.round(txtslider.value * 100) + "%"} - } - } - } + anchors.margins: tabmargins } - - Tab{ - title: qsTr("Eye-candy") + SettingsTerminalTab{ + title: qsTr("Terminal") anchors.fill: parent - anchors.margins: 15 - - ColumnLayout{ - anchors.fill: parent - GroupBox{ - title: qsTr("Rasterization") - anchors.left: parent.left - anchors.right: parent.right - ColumnLayout{ - anchors.left: parent.left - anchors.right: parent.right - RowLayout{ - anchors.left: parent.left - anchors.right: parent.right - ExclusiveGroup { id: rasterizationgroup } - RadioButton { - text: qsTr("No Rasterization") - exclusiveGroup: rasterizationgroup - checked: shadersettings.rasterization === shadersettings.no_rasterization - onCheckedChanged: if(checked) - shadersettings.rasterization = shadersettings.no_rasterization - } - RadioButton { - text: qsTr("Scanlines") - exclusiveGroup: rasterizationgroup - checked: shadersettings.rasterization === shadersettings.scanline_rasterization - onCheckedChanged: if(checked) - shadersettings.rasterization = shadersettings.scanline_rasterization - } - RadioButton { - text: qsTr("Pixels") - exclusiveGroup: rasterizationgroup - checked: shadersettings.rasterization === shadersettings.pixel_rasterization - onCheckedChanged: if(checked) - shadersettings.rasterization = shadersettings.pixel_rasterization - } - } - } - } - GroupBox{ - title: qsTr("Effects") - anchors.left: parent.left - anchors.right: parent.right - ColumnLayout{ - anchors.fill: parent - SettingComponent{ - name: "Bloom" - onValueChanged: shadersettings.bloom_strength = value - _value: shadersettings.bloom_strength - } - SettingComponent{ - name: "Motion Blur" - onValueChanged: shadersettings.motion_blur = value - _value: shadersettings.motion_blur - } - SettingComponent{ - name: "Noise" - onValueChanged: shadersettings.noise_strength = value - _value: shadersettings.noise_strength - } - SettingComponent{ - name: "Jitter" - onValueChanged: shadersettings.jitter = value - _value: shadersettings.jitter - } - SettingComponent{ - name: "Glow" - onValueChanged: shadersettings.glowing_line_strength = value; - _value: shadersettings.glowing_line_strength - } - SettingComponent{ - name: "Ambient light" - onValueChanged: shadersettings.ambient_light = value; - _value: shadersettings.ambient_light - } - SettingComponent{ - name: "Screen distortion" - onValueChanged: shadersettings.screen_distortion = value; - _value: shadersettings.screen_distortion; - } - SettingComponent{ - name: "Brightness flickering" - onValueChanged: shadersettings.brightness_flickering= value; - _value: shadersettings.brightness_flickering; - } - SettingComponent{ - name: "Horizontal flickering" - onValueChanged: shadersettings.horizontal_sincronization = value; - _value: shadersettings.horizontal_sincronization; - } - } - } - } + anchors.margins: tabmargins + } + SettingsEffectsTab{ + title: qsTr("Effects") + anchors.fill: parent + anchors.margins: tabmargins } } } diff --git a/app/ShaderSettings.qml b/app/ShaderSettings.qml index 1fc2036..a9f0065 100644 --- a/app/ShaderSettings.qml +++ b/app/ShaderSettings.qml @@ -121,7 +121,6 @@ Item{ fontMetrics.font = currentfont.name; fontMetrics.font.pixelSize = currentfont.pixelSize; currentfont.paintedSize = Qt.size(fontMetrics.paintedWidth, fontMetrics.paintedHeight) - console.log(Qt.size(fontMetrics.paintedWidth, fontMetrics.paintedHeight)) currentfont.virtualCharSize = fontManager.item.virtualCharSize !== undefined ? fontManager.item.virtualCharSize : Qt.size(currentfont.paintedSize.width * 0.5, @@ -134,7 +133,6 @@ Item{ property alias profiles_list: profileslist property int profiles_index: 0 - onProfiles_indexChanged: loadProfile(profiles_index); ListModel{ id: framelist @@ -269,6 +267,10 @@ Item{ return JSON.stringify(customProfiles); } + function loadCurrentProfile(){ + loadProfile(profiles_index); + } + function loadProfile(index){ var profile = profileslist.get(index); loadProfileString(profile.obj_string); diff --git a/app/SimpleSlider.qml b/app/SimpleSlider.qml index cabc9d8..f362e06 100644 --- a/app/SimpleSlider.qml +++ b/app/SimpleSlider.qml @@ -23,21 +23,28 @@ import QtQuick.Controls 1.1 import QtQuick.Layouts 1.1 RowLayout { - property string name - property double value: 0.0 - property double stepSize: 0.01 + property alias value: slider.value + property alias stepSize: slider.stepSize + property alias minimumValue: slider.minimumValue + property alias maximumValue: slider.maximumValue + property real maxMultiplier: 100 id: setting_component spacing: 10 Slider{ id: slider stepSize: parent.stepSize - onValueChanged: setting_component.value = slider.value; Layout.fillWidth: true - value: setting_component.value } Text{ id: textfield - text: Math.round(value * 100) + "%" + text: formatNumber(Math.round(value * maxMultiplier)) + } + function formatNumber(num) { + var n = "" + num; + while (n.length < 3) { + n = " " + n; + } + return n + "%"; } } diff --git a/app/app.qmlproject.user b/app/app.qmlproject.user index 4eaaea6..942e70e 100644 --- a/app/app.qmlproject.user +++ b/app/app.qmlproject.user @@ -1,6 +1,6 @@ - + ProjectExplorer.Project.ActiveTarget