1
0
mirror of https://github.com/Swordfish90/cool-retro-term.git synced 2025-01-31 02:01:19 +00:00

Redisigned and refactored settings window.

This commit is contained in:
Filippo Scognamiglio 2014-06-23 22:47:35 +02:00
parent 1693e51d89
commit b0aad13ba7
9 changed files with 239 additions and 293 deletions

View File

@ -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 + "%";
}
}

View File

@ -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{

21
app/Glossy.qml Normal file
View File

@ -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" }
}
}

View File

@ -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;
}
}
}
}

109
app/SettingsGeneralTab.qml Normal file
View File

@ -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) + "%"}
}
}
}
}

View File

@ -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
}
}
}

View File

@ -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);

View File

@ -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 + "%";
}
}

View File

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE QtCreatorProject>
<!-- Written by QtCreator 3.0.1, 2014-06-23T13:29:12. -->
<!-- Written by QtCreator 3.0.1, 2014-06-23T18:33:18. -->
<qtcreator>
<data>
<variable>ProjectExplorer.Project.ActiveTarget</variable>