make styles closer to CSS syntax
This commit is contained in:
parent
55136fe866
commit
5c654f685c
6
TODO
6
TODO
|
@ -6,11 +6,11 @@ left panel with dragging windows
|
|||
console history
|
||||
console text selection
|
||||
console scrolling
|
||||
padding
|
||||
scrollbar
|
||||
make otui syntax more like css
|
||||
a real working border and background property in otui
|
||||
load state styles in order
|
||||
grid layout
|
||||
fix moving windows and tooltips conflicts
|
||||
todo display otclient icon in window bar
|
||||
todo display otclient icon in window bar
|
||||
remake otui styles states system
|
||||
padding
|
|
@ -5,8 +5,7 @@ local about
|
|||
|
||||
-- public functions
|
||||
function About.create()
|
||||
about = UI.display('about.otui')
|
||||
UI.root:lockChild(about)
|
||||
about = UI.display('about.otui', { locked = true })
|
||||
end
|
||||
|
||||
function About.destroy()
|
||||
|
@ -16,4 +15,4 @@ end
|
|||
|
||||
function About.openWebpage()
|
||||
displayErrorBox("Error", "Not implemented yet")
|
||||
end
|
||||
end
|
||||
|
|
|
@ -7,55 +7,55 @@ MainWindow
|
|||
size: 208 129
|
||||
anchors.left: parent.left
|
||||
anchors.top: parent.top
|
||||
margin.top: 32
|
||||
margin.left: 18
|
||||
margin-top: 32
|
||||
margin-left: 18
|
||||
|
||||
Label
|
||||
align: center
|
||||
text-align: center
|
||||
text: |-
|
||||
OTClient
|
||||
Version 0.2.0
|
||||
Created by edubart
|
||||
anchors.horizontalCenter: parent.horizontalCenter
|
||||
anchors.top: parent.top
|
||||
margin.top: 20
|
||||
margin-top: 20
|
||||
|
||||
HorizontalSeparator
|
||||
size: 190 2
|
||||
anchors.left: parent.left
|
||||
anchors.top: parent.top
|
||||
margin.top: 83
|
||||
margin.left: 9
|
||||
margin-top: 83
|
||||
margin-left: 9
|
||||
|
||||
Label
|
||||
text: Official Website
|
||||
anchors.left: parent.left
|
||||
anchors.bottom: parent.bottom
|
||||
margin.bottom: 14
|
||||
margin.left: 9
|
||||
margin-bottom: 14
|
||||
margin-left: 9
|
||||
|
||||
Button
|
||||
text: Github Page
|
||||
size: 88 24
|
||||
anchors.right: parent.right
|
||||
anchors.bottom: parent.bottom
|
||||
margin.bottom: 9
|
||||
margin.right: 9
|
||||
margin-bottom: 9
|
||||
margin-right: 9
|
||||
@onClick: About.openWebpage()
|
||||
|
||||
HorizontalSeparator
|
||||
anchors.left: parent.left
|
||||
anchors.right: parent.right
|
||||
anchors.bottom: parent.bottom
|
||||
margin.bottom: 40
|
||||
margin.left: 13
|
||||
margin.right: 13
|
||||
margin-bottom: 40
|
||||
margin-left: 13
|
||||
margin-right: 13
|
||||
|
||||
Button
|
||||
text: Ok
|
||||
size: 46 24
|
||||
anchors.left: parent.left
|
||||
anchors.top: parent.top
|
||||
margin.top: 191
|
||||
margin.left: 188
|
||||
margin-top: 191
|
||||
margin-left: 188
|
||||
@onClick: About.destroy()
|
||||
|
|
|
@ -8,5 +8,5 @@ Panel
|
|||
anchors.left: parent.left
|
||||
anchors.right: parent.right
|
||||
anchors.bottom: parent.bottom
|
||||
margin.top: 1
|
||||
margin-top: 1
|
||||
focusable: false
|
||||
|
|
|
@ -15,13 +15,13 @@ Panel
|
|||
anchors.left: parent.left
|
||||
anchors.right: parent.right
|
||||
anchors.bottom: chatLineEdit.top
|
||||
margin.right: 6
|
||||
margin.left: 6
|
||||
margin.bottom: 2
|
||||
margin.top: 6
|
||||
margin-right: 6
|
||||
margin-left: 6
|
||||
margin-bottom: 2
|
||||
margin-top: 6
|
||||
layout:
|
||||
type: verticalBox
|
||||
align bottom: true
|
||||
align-bottom: true
|
||||
focusable: false
|
||||
|
||||
LineEdit
|
||||
|
@ -29,7 +29,7 @@ Panel
|
|||
anchors.left: parent.left
|
||||
anchors.right: parent.right
|
||||
anchors.bottom: parent.bottom
|
||||
margin.right: 6
|
||||
margin.left: 6
|
||||
margin.bottom: 6
|
||||
always focused: true
|
||||
margin-right: 6
|
||||
margin-left: 6
|
||||
margin-bottom: 6
|
||||
always-active: true
|
|
@ -15,15 +15,15 @@ RectPanel
|
|||
anchors.left: parent.left
|
||||
anchors.right: parent.right
|
||||
anchors.bottom: commandSymbolLabel.top
|
||||
margin.left: 2
|
||||
margin-left: 2
|
||||
|
||||
UILabel
|
||||
id: commandSymbolLabel
|
||||
size: 20 16
|
||||
size fixed: true
|
||||
fixed-size: true
|
||||
anchors.bottom: parent.bottom
|
||||
anchors.left: parent.left
|
||||
margin.left: 2
|
||||
margin-left: 2
|
||||
font: terminus-14px-bold
|
||||
text: >>
|
||||
|
||||
|
@ -33,5 +33,5 @@ RectPanel
|
|||
anchors.bottom: parent.bottom
|
||||
anchors.left: commandSymbolLabel.right
|
||||
anchors.right: parent.right
|
||||
margin.left: 5
|
||||
margin-left: 5
|
||||
font: terminus-14px-bold
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
Font
|
||||
name: terminus-14px-bold
|
||||
height: 16
|
||||
top margin: 2
|
||||
y-offset: 2
|
||||
texture: terminus-14px-bold.png
|
||||
glyph size: 16 16
|
||||
fixed glyph width: 8
|
||||
glyph-size: 16 16
|
||||
fixed-glyph-width: 8
|
||||
|
||||
|
|
|
@ -2,7 +2,7 @@ Font
|
|||
name: verdana-11px-antialised
|
||||
texture: verdana-11px-antialised.png
|
||||
height: 14
|
||||
glyph size: 16 16
|
||||
glyph-size: 16 16
|
||||
|
||||
glyph widths:
|
||||
glyph-widths:
|
||||
32: 4
|
||||
|
|
|
@ -2,7 +2,7 @@ Font
|
|||
name: verdana-11px-monochrome
|
||||
texture: verdana-11px-monochrome.png
|
||||
height: 14
|
||||
glyph size: 16 16
|
||||
glyph-size: 16 16
|
||||
|
||||
glyph widths:
|
||||
glyph-widths:
|
||||
32: 2
|
||||
|
|
|
@ -2,9 +2,9 @@ Font
|
|||
name: verdana-11px-rounded
|
||||
texture: verdana-11px-rounded.png
|
||||
height: 14
|
||||
glyph size: 16 16
|
||||
glyph-size: 16 16
|
||||
|
||||
glyph widths:
|
||||
glyph-widths:
|
||||
32: 4
|
||||
33: 4
|
||||
34: 7
|
||||
|
|
|
@ -54,7 +54,7 @@ TopButton < UIButton
|
|||
MenuButton < UIButton
|
||||
color: white
|
||||
size: 40 18
|
||||
align: center
|
||||
text-align: center
|
||||
border-image:
|
||||
source: /core_styles/images/menu.png
|
||||
size: 64 24
|
||||
|
|
|
@ -2,7 +2,7 @@ LineEdit < UILineEdit
|
|||
font: verdana-11px-antialised
|
||||
color: #aaaaaa
|
||||
size: 86 20
|
||||
text margin: 3
|
||||
text-margin: 3
|
||||
border-image:
|
||||
source: /core_styles/images/panel_flat.png
|
||||
border: 1
|
||||
|
@ -11,4 +11,4 @@ LineEdit < UILineEdit
|
|||
color: #aaaaaa88
|
||||
|
||||
PasswordLineEdit < LineEdit
|
||||
text hidden: true
|
||||
text-hidden: true
|
||||
|
|
|
@ -4,9 +4,9 @@ Window < UIWindow
|
|||
opacity: 255
|
||||
color: white
|
||||
background-color: white
|
||||
head height: 20
|
||||
head text align: center
|
||||
move policy: free
|
||||
head-height: 20
|
||||
head-text-align: center
|
||||
move-policy: free
|
||||
stackable: true
|
||||
border-image:
|
||||
source: /core_styles/images/window.png
|
||||
|
@ -22,12 +22,12 @@ Window < UIWindow
|
|||
MiniWindow < UIWindow
|
||||
font: verdana-11px-antialised
|
||||
size: 192 200
|
||||
head height: 25
|
||||
head text align: center
|
||||
margin.top: 10
|
||||
margin.left: 6
|
||||
margin.right: 6
|
||||
move policy: free updated
|
||||
head-height: 25
|
||||
head-text-align: center
|
||||
margin-top: 10
|
||||
margin-left: 6
|
||||
margin-right: 6
|
||||
move-policy: free updated
|
||||
border-image:
|
||||
source: /core_styles/images/mini_window.png
|
||||
border: 4
|
||||
|
|
|
@ -4,9 +4,9 @@ CharacterListLabel < Label
|
|||
background-color: #00000000
|
||||
offset: 2 0
|
||||
focusable: true
|
||||
margin.left: 1
|
||||
margin.right: 1
|
||||
margin.top: 1
|
||||
margin-left: 1
|
||||
margin-right: 1
|
||||
margin-top: 1
|
||||
|
||||
$focus:
|
||||
background-color: #ffffff22
|
||||
|
@ -16,17 +16,17 @@ MainWindow
|
|||
id: charactersWindow
|
||||
title: Character List
|
||||
size: 250 248
|
||||
onEnter: CharacterList.doLogin()
|
||||
onEscape: CharacterList.destroy()
|
||||
@onEnter: CharacterList.doLogin()
|
||||
@onEscape: CharacterList.destroy()
|
||||
|
||||
TextList
|
||||
id: characterList
|
||||
anchors.fill: parent
|
||||
anchors.bottom: next.top
|
||||
margin.top: 30
|
||||
margin.bottom: 5
|
||||
margin.left: 16
|
||||
margin.right: 16
|
||||
margin-top: 30
|
||||
margin-bottom: 5
|
||||
margin-left: 16
|
||||
margin-right: 16
|
||||
|
||||
Label
|
||||
id: accountStatusLabel
|
||||
|
@ -36,17 +36,17 @@ MainWindow
|
|||
anchors.left: parent.left
|
||||
anchors.right: parent.right
|
||||
anchors.bottom: separator.top
|
||||
margin.left: 16
|
||||
margin.bottom: 5
|
||||
margin-left: 16
|
||||
margin-bottom: 5
|
||||
|
||||
HorizontalSeparator
|
||||
id: separator
|
||||
anchors.left: parent.left
|
||||
anchors.right: parent.right
|
||||
anchors.bottom: next.top
|
||||
margin.left: 16
|
||||
margin.right: 16
|
||||
margin.bottom: 10
|
||||
margin-left: 16
|
||||
margin-right: 16
|
||||
margin-bottom: 10
|
||||
|
||||
//CheckBox
|
||||
// id: charAutoLoginBox
|
||||
|
@ -55,9 +55,9 @@ MainWindow
|
|||
// anchors.left: parent.left
|
||||
// anchors.right: parent.right
|
||||
// anchors.bottom: next.top
|
||||
// margin.bottom: 6
|
||||
// margin.left: 18
|
||||
// margin.right: 18
|
||||
// margin-bottom: 6
|
||||
// margin-left: 18
|
||||
// margin-right: 18
|
||||
|
||||
Button
|
||||
id: buttonOk
|
||||
|
@ -65,8 +65,8 @@ MainWindow
|
|||
width: 64
|
||||
anchors.right: next.left
|
||||
anchors.bottom: parent.bottom
|
||||
margin.bottom: 16
|
||||
margin.right: 16
|
||||
margin-bottom: 16
|
||||
margin-right: 16
|
||||
@onClick: CharacterList.doLogin()
|
||||
|
||||
Button
|
||||
|
@ -75,6 +75,6 @@ MainWindow
|
|||
width: 64
|
||||
anchors.right: parent.right
|
||||
anchors.bottom: parent.bottom
|
||||
margin.bottom: 16
|
||||
margin.right: 16
|
||||
margin-bottom: 16
|
||||
margin-right: 16
|
||||
@onClick: CharacterList.destroy()
|
|
@ -2,39 +2,39 @@ MainWindow
|
|||
id: enterGame
|
||||
title: Enter Game
|
||||
size: 236 240
|
||||
onEnter: EnterGame.doLogin()
|
||||
onEscape: EnterGame.hide()
|
||||
@onEnter: EnterGame.doLogin()
|
||||
@onEscape: EnterGame.hide()
|
||||
|
||||
LargerLabel
|
||||
text: Account name
|
||||
anchors.left: parent.left
|
||||
anchors.top: parent.top
|
||||
margin.left: 18
|
||||
margin.top: 28
|
||||
margin-left: 18
|
||||
margin-top: 28
|
||||
|
||||
LineEdit
|
||||
id: accountNameLineEdit
|
||||
anchors.left: parent.left
|
||||
anchors.right: parent.right
|
||||
anchors.top: prev.bottom
|
||||
margin.top: 2
|
||||
margin.left: 18
|
||||
margin.right: 18
|
||||
margin-top: 2
|
||||
margin-left: 18
|
||||
margin-right: 18
|
||||
|
||||
LargerLabel
|
||||
text: Password
|
||||
anchors.left: prev.left
|
||||
anchors.top: prev.bottom
|
||||
margin.top: 8
|
||||
margin-top: 8
|
||||
|
||||
PasswordLineEdit
|
||||
id: accountPasswordLineEdit
|
||||
anchors.left: parent.left
|
||||
anchors.right: parent.right
|
||||
anchors.top: prev.bottom
|
||||
margin.top: 2
|
||||
margin.left: 18
|
||||
margin.right: 18
|
||||
margin-top: 2
|
||||
margin-left: 18
|
||||
margin-right: 18
|
||||
|
||||
LargerLabel
|
||||
id: serverLabel
|
||||
|
@ -42,7 +42,7 @@ MainWindow
|
|||
text: Server
|
||||
anchors.left: prev.left
|
||||
anchors.top: prev.bottom
|
||||
margin.top: 8
|
||||
margin-top: 8
|
||||
|
||||
LineEdit
|
||||
id: serverHostLineEdit
|
||||
|
@ -50,7 +50,7 @@ MainWindow
|
|||
anchors.left: serverLabel.left
|
||||
anchors.right: serverLabel.right
|
||||
anchors.top: serverLabel.bottom
|
||||
margin.top: 2
|
||||
margin-top: 2
|
||||
|
||||
LargerLabel
|
||||
id: portLabel
|
||||
|
@ -58,7 +58,7 @@ MainWindow
|
|||
width: 50
|
||||
anchors.left: serverLabel.right
|
||||
anchors.top: serverLabel.top
|
||||
margin.left: 10
|
||||
margin-left: 10
|
||||
|
||||
LineEdit
|
||||
id: serverPortLineEdit
|
||||
|
@ -66,7 +66,7 @@ MainWindow
|
|||
anchors.left: portLabel.left
|
||||
anchors.right: portLabel.right
|
||||
anchors.top: portLabel.bottom
|
||||
margin.top: 2
|
||||
margin-top: 2
|
||||
|
||||
CheckBox
|
||||
id: rememberPasswordBox
|
||||
|
@ -75,9 +75,9 @@ MainWindow
|
|||
anchors.left: parent.left
|
||||
anchors.right: parent.right
|
||||
anchors.top: prev.bottom
|
||||
margin.top: 10
|
||||
margin.left: 18
|
||||
margin.right: 18
|
||||
margin-top: 10
|
||||
margin-left: 18
|
||||
margin-right: 18
|
||||
@onCheckChange: |
|
||||
function(self, checked)
|
||||
self:getParent():getChildById('autoLoginBox'):setEnabled(checked)
|
||||
|
@ -91,17 +91,17 @@ MainWindow
|
|||
anchors.left: parent.left
|
||||
anchors.right: parent.right
|
||||
anchors.top: prev.bottom
|
||||
margin.top: 8
|
||||
margin.left: 18
|
||||
margin.right: 18
|
||||
margin-top: 8
|
||||
margin-left: 18
|
||||
margin-right: 18
|
||||
|
||||
Button
|
||||
text: Ok
|
||||
width: 64
|
||||
anchors.right: next.left
|
||||
anchors.bottom: parent.bottom
|
||||
margin.bottom: 16
|
||||
margin.right: 16
|
||||
margin-bottom: 16
|
||||
margin-right: 16
|
||||
@onClick: EnterGame.doLogin()
|
||||
|
||||
Button
|
||||
|
@ -109,6 +109,6 @@ MainWindow
|
|||
width: 64
|
||||
anchors.right: parent.right
|
||||
anchors.bottom: parent.bottom
|
||||
margin.bottom: 16
|
||||
margin.right: 16
|
||||
margin-bottom: 16
|
||||
margin-right: 16
|
||||
@onClick: EnterGame.hide()
|
||||
|
|
|
@ -5,7 +5,7 @@ HealthBar < UIProgressBar
|
|||
anchors.top: parent.top
|
||||
anchors.left: parent.left
|
||||
anchors.right: parent.right
|
||||
|
||||
|
||||
ManaBar < UIProgressBar
|
||||
color: black
|
||||
height: 15
|
||||
|
@ -16,27 +16,27 @@ ManaBar < UIProgressBar
|
|||
|
||||
HealthLabel < Label
|
||||
color: white
|
||||
align: center
|
||||
text-align: center
|
||||
font: verdana-11px-rounded
|
||||
anchors.left: parent.left
|
||||
anchors.right: parent.right
|
||||
anchors.top: parent.top
|
||||
margin.top: 2
|
||||
margin-top: 2
|
||||
|
||||
ManaLabel < Label
|
||||
color: white
|
||||
align: center
|
||||
text-align: center
|
||||
font: verdana-11px-rounded
|
||||
anchors.left: parent.left
|
||||
anchors.right: parent.right
|
||||
anchors.bottom: parent.bottom
|
||||
margin.bottom: -1
|
||||
margin-bottom: -1
|
||||
|
||||
UIWindow
|
||||
id: healthManaPanel
|
||||
width: 192
|
||||
margin.top: 10
|
||||
margin.left: 6
|
||||
margin.right: 6
|
||||
move policy: free updated
|
||||
margin-top: 10
|
||||
margin-left: 6
|
||||
margin-right: 6
|
||||
move-policy: free updated
|
||||
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
UIWindow
|
||||
width: 192
|
||||
margin.top: 10
|
||||
margin.left: 6
|
||||
margin.right: 6
|
||||
move policy: free updated
|
||||
margin-top: 10
|
||||
margin-left: 6
|
||||
margin-right: 6
|
||||
move-policy: free updated
|
||||
|
||||
Item
|
||||
id: head
|
||||
|
@ -15,82 +15,82 @@ UIWindow
|
|||
id: armor
|
||||
anchors.top: prev.bottom
|
||||
anchors.horizontalCenter: prev.horizontalCenter
|
||||
margin.top: 5
|
||||
margin-top: 5
|
||||
|
||||
Item
|
||||
id: legs
|
||||
anchors.top: prev.bottom
|
||||
anchors.horizontalCenter: prev.horizontalCenter
|
||||
margin.top: 5
|
||||
margin-top: 5
|
||||
|
||||
Item
|
||||
id: feet
|
||||
anchors.top: prev.bottom
|
||||
anchors.horizontalCenter: prev.horizontalCenter
|
||||
margin.top: 5
|
||||
margin-top: 5
|
||||
|
||||
Item
|
||||
id: necklace
|
||||
anchors.top: parent.top
|
||||
anchors.right: head.left
|
||||
margin.top: 10
|
||||
margin.right: 5
|
||||
margin-top: 10
|
||||
margin-right: 5
|
||||
|
||||
Item
|
||||
id: left
|
||||
anchors.top: prev.bottom
|
||||
anchors.horizontalCenter: prev.horizontalCenter
|
||||
margin.top: 5
|
||||
margin-top: 5
|
||||
|
||||
Item
|
||||
id: ring
|
||||
anchors.top: prev.bottom
|
||||
anchors.horizontalCenter: prev.horizontalCenter
|
||||
margin.top: 5
|
||||
margin-top: 5
|
||||
|
||||
Item
|
||||
id: backpack
|
||||
anchors.top: parent.top
|
||||
anchors.left: head.right
|
||||
margin.top: 10
|
||||
margin.left: 5
|
||||
margin-top: 10
|
||||
margin-left: 5
|
||||
|
||||
Item
|
||||
id: right
|
||||
anchors.top: prev.bottom
|
||||
anchors.horizontalCenter: prev.horizontalCenter
|
||||
margin.top: 5
|
||||
margin-top: 5
|
||||
|
||||
Item
|
||||
id: ammo
|
||||
anchors.top: prev.bottom
|
||||
anchors.horizontalCenter: prev.horizontalCenter
|
||||
margin.top: 5
|
||||
|
||||
margin-top: 5
|
||||
|
||||
Label
|
||||
id: soul
|
||||
anchors.top: ring.bottom
|
||||
anchors.bottom: feet.bottom
|
||||
anchors.left: ring.left
|
||||
anchors.right: ring.right
|
||||
margin.top: 5
|
||||
|
||||
align: center
|
||||
|
||||
margin-top: 5
|
||||
|
||||
text-align: center
|
||||
|
||||
border-image:
|
||||
source: /core_styles/images/panel_flat.png
|
||||
border: 1
|
||||
|
||||
|
||||
Label
|
||||
id: capacity
|
||||
anchors.top: ammo.bottom
|
||||
anchors.bottom: feet.bottom
|
||||
anchors.left: ammo.left
|
||||
anchors.right: ammo.right
|
||||
margin.top: 5
|
||||
|
||||
align: center
|
||||
|
||||
margin-top: 5
|
||||
|
||||
text-align: center
|
||||
|
||||
border-image:
|
||||
source: /core_styles/images/panel_flat.png
|
||||
border: 1
|
||||
|
|
|
@ -8,14 +8,14 @@ Window
|
|||
id: messageBoxLabel
|
||||
anchors.horizontalCenter: parent.horizontalCenter
|
||||
anchors.top: parent.top
|
||||
margin.top: 27
|
||||
margin.bottom : 27
|
||||
margin-top: 27
|
||||
margin-bottom : 27
|
||||
|
||||
Button
|
||||
id: messageBoxRightButton
|
||||
anchors.bottom: parent.bottom
|
||||
anchors.right: parent.right
|
||||
margin.right: 10
|
||||
margin.bottom: 10
|
||||
margin-right: 10
|
||||
margin-bottom: 10
|
||||
width: 64
|
||||
visible: true
|
||||
|
|
|
@ -10,9 +10,9 @@ MainWindow
|
|||
anchors.left: parent.left
|
||||
anchors.right: parent.right
|
||||
anchors.top: parent.top
|
||||
margin.top: 28
|
||||
margin.left: 18
|
||||
margin.right: 18
|
||||
margin-top: 28
|
||||
margin-left: 18
|
||||
margin-right: 18
|
||||
|
||||
CheckBox
|
||||
id: fpsCheckBox
|
||||
|
@ -20,15 +20,15 @@ MainWindow
|
|||
anchors.left: parent.left
|
||||
anchors.right: parent.right
|
||||
anchors.top: prev.bottom
|
||||
margin.top: 10
|
||||
margin.left: 18
|
||||
margin.right: 18
|
||||
margin-top: 10
|
||||
margin-left: 18
|
||||
margin-right: 18
|
||||
|
||||
Button
|
||||
text: Ok
|
||||
width: 64
|
||||
anchors.right: parent.right
|
||||
anchors.bottom: parent.bottom
|
||||
margin.right: 10
|
||||
margin.bottom: 10
|
||||
margin-right: 10
|
||||
margin-bottom: 10
|
||||
@onClick: Options.destroy()
|
|
@ -9,8 +9,8 @@ Window
|
|||
anchors.horizontalCenter: parent.horizontalCenter
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
|
||||
onEnter: Outfit.accept()
|
||||
onEscape: Outfit.destroy()
|
||||
@onEnter: Outfit.accept()
|
||||
@onEscape: Outfit.destroy()
|
||||
|
||||
Label
|
||||
id: name
|
||||
|
@ -18,34 +18,34 @@ Window
|
|||
width: 100
|
||||
anchors.top: parent.top
|
||||
anchors.left: parent.left
|
||||
margin.top: 34
|
||||
margin.left: 20
|
||||
margin-top: 34
|
||||
margin-left: 20
|
||||
|
||||
Creature
|
||||
id: creature
|
||||
anchors.top: name.bottom
|
||||
anchors.left: name.left
|
||||
margin.top: 5
|
||||
|
||||
margin-top: 5
|
||||
|
||||
Button
|
||||
id: head
|
||||
text: Head
|
||||
anchors.top: creature.top
|
||||
anchors.left: creature.right
|
||||
margin.left: 10
|
||||
|
||||
margin-left: 10
|
||||
|
||||
Button
|
||||
id: primary
|
||||
text: Primary
|
||||
anchors.top: prev.bottom
|
||||
anchors.left: prev.left
|
||||
|
||||
|
||||
Button
|
||||
id: secondary
|
||||
text: Secondary
|
||||
anchors.top: prev.bottom
|
||||
anchors.left: prev.left
|
||||
|
||||
|
||||
Button
|
||||
id: detail
|
||||
text: Detail
|
||||
|
@ -56,7 +56,7 @@ Window
|
|||
@onClick: Outfit.nextType()
|
||||
text: >>
|
||||
width: 32
|
||||
margin.top: 4
|
||||
margin-top: 4
|
||||
anchors.top: creature.bottom
|
||||
anchors.right: creature.right
|
||||
|
||||
|
@ -64,7 +64,7 @@ Window
|
|||
@onClick: Outfit.previousType()
|
||||
text: <<
|
||||
width: 32
|
||||
margin.top: 4
|
||||
margin-top: 4
|
||||
anchors.top: creature.bottom
|
||||
anchors.left: creature.left
|
||||
|
||||
|
@ -72,7 +72,7 @@ Window
|
|||
id: addon1
|
||||
text: Addon 1
|
||||
enabled: false
|
||||
margin.top: 10
|
||||
margin-top: 10
|
||||
width: 100
|
||||
anchors.top: prev.bottom
|
||||
anchors.left: prev.left
|
||||
|
@ -81,7 +81,7 @@ Window
|
|||
id: addon2
|
||||
text: Addon 2
|
||||
enabled: false
|
||||
margin.top: 10
|
||||
margin-top: 10
|
||||
width: 100
|
||||
anchors.top: prev.bottom
|
||||
anchors.left: prev.left
|
||||
|
@ -90,7 +90,7 @@ Window
|
|||
id: addon3
|
||||
text: Addon 3
|
||||
enabled: false
|
||||
margin.top: 10
|
||||
margin-top: 10
|
||||
width: 100
|
||||
anchors.top: prev.bottom
|
||||
anchors.left: prev.left
|
||||
|
@ -99,9 +99,9 @@ Window
|
|||
anchors.left: parent.left
|
||||
anchors.right: parent.right
|
||||
anchors.bottom: next.top
|
||||
margin.left: 16
|
||||
margin.right: 16
|
||||
margin.bottom: 10
|
||||
margin-left: 16
|
||||
margin-right: 16
|
||||
margin-bottom: 10
|
||||
|
||||
Button
|
||||
id: buttonOk
|
||||
|
@ -109,8 +109,8 @@ Window
|
|||
width: 64
|
||||
anchors.right: next.left
|
||||
anchors.bottom: parent.bottom
|
||||
margin.bottom: 16
|
||||
margin.right: 16
|
||||
margin-bottom: 16
|
||||
margin-right: 16
|
||||
@onClick: Outfit.accept()
|
||||
|
||||
Button
|
||||
|
@ -119,6 +119,6 @@ Window
|
|||
width: 64
|
||||
anchors.right: parent.right
|
||||
anchors.bottom: parent.bottom
|
||||
margin.bottom: 16
|
||||
margin.right: 16
|
||||
margin-bottom: 16
|
||||
margin-right: 16
|
||||
@onClick: Outfit.destroy()
|
||||
|
|
|
@ -2,9 +2,9 @@ SkillFirstWidget < UIWidget
|
|||
|
||||
SkillButton < UIButton
|
||||
height: 14
|
||||
margin.top: 4
|
||||
margin.left: 10
|
||||
margin.right: 10
|
||||
margin-top: 4
|
||||
margin-left: 10
|
||||
margin-right: 10
|
||||
|
||||
SkillNameLabel < Label
|
||||
font: verdana-11px-monochrome
|
||||
|
@ -14,7 +14,7 @@ SkillNameLabel < Label
|
|||
|
||||
SkillLevelLabel < Label
|
||||
font: verdana-11px-monochrome
|
||||
align: right
|
||||
text-align: right
|
||||
width: 32
|
||||
anchors.right: parent.right
|
||||
anchors.top: parent.top
|
||||
|
@ -25,9 +25,9 @@ SkillPercentPanel < UIProgressBar
|
|||
background-color: green
|
||||
tooltip: test
|
||||
height: 5
|
||||
margin.top: 3
|
||||
margin.left: 10
|
||||
margin.right: 10
|
||||
margin-top: 3
|
||||
margin-left: 10
|
||||
margin-right: 10
|
||||
|
||||
MiniWindow
|
||||
id: skillWindow
|
||||
|
@ -37,8 +37,8 @@ MiniWindow
|
|||
Panel
|
||||
id: skillPanel
|
||||
anchors.fill: parent
|
||||
margin.top: 26
|
||||
margin.bottom: 3
|
||||
margin.left: 3
|
||||
margin.right: 3
|
||||
margin-top: 26
|
||||
margin-bottom: 3
|
||||
margin-left: 3
|
||||
margin-right: 3
|
||||
layout: verticalBox
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
CenterLabel < Label
|
||||
font: verdana-11px-rounded
|
||||
height: 16
|
||||
align: center
|
||||
text-align: center
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
anchors.left: parent.left
|
||||
anchors.right: parent.right
|
||||
|
@ -9,8 +9,8 @@ CenterLabel < Label
|
|||
BottomLabel < Label
|
||||
font: verdana-11px-rounded
|
||||
height: 16
|
||||
align: center
|
||||
margin.bottom: 2
|
||||
text-align: center
|
||||
margin-bottom: 2
|
||||
anchors.bottom: parent.bottom
|
||||
anchors.left: parent.left
|
||||
anchors.right: parent.right
|
||||
|
|
|
@ -9,8 +9,8 @@ TopPanel
|
|||
id: settingsButton
|
||||
anchors.top: parent.top
|
||||
anchors.left: parent.left
|
||||
margin.top: 4
|
||||
margin.left: 6
|
||||
margin-top: 4
|
||||
margin-left: 6
|
||||
tooltip: Options
|
||||
icon: /core_styles/icons/settings.png
|
||||
@onClick: Options.create()
|
||||
|
@ -20,7 +20,7 @@ TopPanel
|
|||
id: enterGameButton
|
||||
anchors.top: prev.top
|
||||
anchors.left: prev.right
|
||||
margin.left: 6
|
||||
margin-left: 6
|
||||
tooltip: Enter game with a character
|
||||
icon: /core_styles/icons/login.png
|
||||
@onClick: |
|
||||
|
@ -34,7 +34,7 @@ TopPanel
|
|||
id: motdButton
|
||||
anchors.top: prev.top
|
||||
anchors.left: prev.right
|
||||
margin.left: 6
|
||||
margin-left: 6
|
||||
tooltip: Message of the day
|
||||
icon: /core_styles/icons/motd.png
|
||||
visible: false
|
||||
|
@ -43,8 +43,8 @@ TopPanel
|
|||
TopButton
|
||||
anchors.top: parent.top
|
||||
anchors.right: parent.right
|
||||
margin.top: 4
|
||||
margin.right: 6
|
||||
margin-top: 4
|
||||
margin-right: 6
|
||||
tooltip: Logout
|
||||
icon: /core_styles/icons/logout.png
|
||||
@onClick: |
|
||||
|
@ -57,8 +57,8 @@ TopPanel
|
|||
TopButton
|
||||
anchors.top: parent.top
|
||||
anchors.right: prev.left
|
||||
margin.top: 4
|
||||
margin.right: 6
|
||||
margin-top: 4
|
||||
margin-right: 6
|
||||
tooltip: About OTClient
|
||||
icon: /core_styles/icons/about.png
|
||||
@onClick: About.create()
|
||||
|
@ -67,5 +67,5 @@ TopPanel
|
|||
id: frameCounter
|
||||
anchors.top: parent.top
|
||||
anchors.right: prev.left
|
||||
margin.top: 8
|
||||
margin.right: 12
|
||||
margin-top: 8
|
||||
margin-right: 12
|
|
@ -1,6 +1,6 @@
|
|||
VipListLabel < Label
|
||||
font: verdana-11px-monochrome
|
||||
margin.left: 5
|
||||
margin-left: 5
|
||||
|
||||
$disabled: ~
|
||||
|
||||
|
@ -12,7 +12,7 @@ MiniWindow
|
|||
id: vipList
|
||||
border-image: ~
|
||||
anchors.fill: parent
|
||||
margin.top: 26
|
||||
margin.bottom: 6
|
||||
margin.left: 6
|
||||
margin.right: 6
|
||||
margin-top: 26
|
||||
margin-bottom: 6
|
||||
margin-left: 6
|
||||
margin-right: 6
|
||||
|
|
|
@ -29,10 +29,10 @@
|
|||
void Font::load(const OTMLNodePtr& fontNode)
|
||||
{
|
||||
std::string textureName = fontNode->valueAt("texture");
|
||||
Size glyphSize = fontNode->valueAt<Size>("glyph size");
|
||||
Size glyphSize = fontNode->valueAt<Size>("glyph-size");
|
||||
m_glyphHeight = fontNode->valueAt<int>("height");
|
||||
m_topMargin = fontNode->valueAt("top margin", 0);
|
||||
m_firstGlyph = fontNode->valueAt("first glyph", 32);
|
||||
m_yOffset = fontNode->valueAt("y-offset", 0);
|
||||
m_firstGlyph = fontNode->valueAt("first-glyph", 32);
|
||||
m_glyphSpacing = fontNode->valueAt("spacing", Size(0,0));
|
||||
|
||||
// load font texture
|
||||
|
@ -40,14 +40,14 @@ void Font::load(const OTMLNodePtr& fontNode)
|
|||
if(!m_texture)
|
||||
throw std::runtime_error("failed to load texture for font");
|
||||
|
||||
if(OTMLNodePtr node = fontNode->get("fixed glyph width")) {
|
||||
if(OTMLNodePtr node = fontNode->get("fixed-glyph-width")) {
|
||||
for(int glyph = m_firstGlyph; glyph < 256; ++glyph)
|
||||
m_glyphsSize[glyph] = Size(node->value<int>(), m_glyphHeight);
|
||||
} else
|
||||
calculateGlyphsWidthsAutomatically(glyphSize);
|
||||
|
||||
// read custom widths
|
||||
if(OTMLNodePtr node = fontNode->get("glyph widths")) {
|
||||
if(OTMLNodePtr node = fontNode->get("glyph-widths")) {
|
||||
for(const OTMLNodePtr& child : node->children())
|
||||
m_glyphsSize[Fw::safeCast<int>(child->tag())].setWidth(child->value<int>());
|
||||
}
|
||||
|
@ -200,7 +200,7 @@ const std::vector<Point>& Font::calculateGlyphsPositions(const std::string& text
|
|||
}
|
||||
}
|
||||
|
||||
Point virtualPos(0, m_topMargin);
|
||||
Point virtualPos(0, m_yOffset);
|
||||
lines = 0;
|
||||
for(i = 0; i < textLength; ++i) {
|
||||
glyph = (uchar)text[i];
|
||||
|
|
|
@ -59,7 +59,7 @@ public:
|
|||
const Rect* getGlyphsTextureCoords() const { return m_glyphsTextureCoords; }
|
||||
const Size* getGlyphsSize() const { return m_glyphsSize; }
|
||||
const TexturePtr& getTexture() const { return m_texture; }
|
||||
int getTopMargin() const { return m_topMargin; }
|
||||
int getYOffset() const { return m_yOffset; }
|
||||
Size getGlyphSpacing() const { return m_glyphSpacing; }
|
||||
|
||||
private:
|
||||
|
@ -69,7 +69,7 @@ private:
|
|||
std::string m_name;
|
||||
int m_glyphHeight;
|
||||
int m_firstGlyph;
|
||||
int m_topMargin;
|
||||
int m_yOffset;
|
||||
Size m_glyphSpacing;
|
||||
TexturePtr m_texture;
|
||||
Rect m_glyphsTextureCoords[256];
|
||||
|
|
|
@ -29,15 +29,15 @@ UILabel::UILabel()
|
|||
{
|
||||
m_focusable = false;
|
||||
m_phantom = true;
|
||||
m_align = Fw::AlignLeft;
|
||||
m_textAlign = Fw::AlignLeft;
|
||||
}
|
||||
|
||||
void UILabel::render()
|
||||
{
|
||||
UIWidget::render();
|
||||
Rect textRect = m_rect;
|
||||
textRect.setTopLeft(textRect.topLeft() + m_offset);
|
||||
m_font->renderText(m_text, textRect, m_align, m_foregroundColor);
|
||||
textRect.setTopLeft(textRect.topLeft() + m_textOffset);
|
||||
m_font->renderText(m_text, textRect, m_textAlign, m_foregroundColor);
|
||||
}
|
||||
|
||||
void UILabel::setText(const std::string& text)
|
||||
|
@ -66,10 +66,10 @@ void UILabel::onStyleApply(const OTMLNodePtr& styleNode)
|
|||
for(const OTMLNodePtr& node : styleNode->children()) {
|
||||
if(node->tag() == "text")
|
||||
setText(node->value());
|
||||
else if(node->tag() == "align")
|
||||
setAlign(Fw::translateAlignment(node->value()));
|
||||
else if(node->tag() == "offset") {
|
||||
setOffset(node->value<Point>());
|
||||
else if(node->tag() == "text-align")
|
||||
setTextAlign(Fw::translateAlignment(node->value()));
|
||||
else if(node->tag() == "text-offset") {
|
||||
setTextOffset(node->value<Point>());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -34,20 +34,20 @@ public:
|
|||
void resizeToText();
|
||||
|
||||
void setText(const std::string& text);
|
||||
void setAlign(Fw::AlignmentFlag align) { m_align = align; }
|
||||
void setOffset(const Point& offset) { m_offset = offset; }
|
||||
void setTextAlign(Fw::AlignmentFlag align) { m_textAlign = align; }
|
||||
void setTextOffset(const Point& offset) { m_textOffset = offset; }
|
||||
|
||||
std::string getText() const { return m_text; }
|
||||
Fw::AlignmentFlag getAlign() const { return m_align; }
|
||||
Point getOffset() const { return m_offset; }
|
||||
Fw::AlignmentFlag getTextAlign() const { return m_textAlign; }
|
||||
Point getTextOffset() const { return m_textOffset; }
|
||||
|
||||
protected:
|
||||
virtual void onStyleApply(const OTMLNodePtr& styleNode);
|
||||
|
||||
private:
|
||||
std::string m_text;
|
||||
Point m_offset;
|
||||
Fw::AlignmentFlag m_align;
|
||||
Point m_textOffset;
|
||||
Fw::AlignmentFlag m_textAlign;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
|
|
@ -33,7 +33,7 @@ UILineEdit::UILineEdit()
|
|||
m_startRenderPos = 0;
|
||||
m_textHorizontalMargin = 0;
|
||||
m_textHidden = false;
|
||||
m_alwaysFocused = false;
|
||||
m_alwaysActive = false;
|
||||
blinkCursor();
|
||||
}
|
||||
|
||||
|
@ -51,7 +51,7 @@ void UILineEdit::render()
|
|||
g_graphics.drawTexturedRect(m_glyphsCoords[i], texture, m_glyphsTexCoords[i]);
|
||||
|
||||
// render cursor
|
||||
if(isExplicitlyEnabled() && (isActive() || m_alwaysFocused) && m_cursorPos >= 0) {
|
||||
if(isExplicitlyEnabled() && (isActive() || m_alwaysActive) && m_cursorPos >= 0) {
|
||||
assert(m_cursorPos <= textLength);
|
||||
// draw every 333ms
|
||||
const int delay = 333;
|
||||
|
@ -98,7 +98,7 @@ void UILineEdit::update()
|
|||
if(m_cursorPos < m_startRenderPos) // cursor is before the previuos first rendered glyph, so we need to update
|
||||
{
|
||||
m_startInternalPos.x = glyphsPositions[m_cursorPos].x;
|
||||
m_startInternalPos.y = glyphsPositions[m_cursorPos].y - m_font->getTopMargin();
|
||||
m_startInternalPos.y = glyphsPositions[m_cursorPos].y - m_font->getYOffset();
|
||||
m_startRenderPos = m_cursorPos;
|
||||
} else if(m_cursorPos > m_startRenderPos || // cursor is after the previuos first rendered glyph
|
||||
(m_cursorPos == m_startRenderPos && textLength == m_cursorPos)) // cursor is at the previuos rendered element, and is the last text element
|
||||
|
@ -119,13 +119,13 @@ void UILineEdit::update()
|
|||
for(pos = 0; pos < textLength; ++pos) {
|
||||
glyph = (uchar)text[pos];
|
||||
glyphRect = Rect(glyphsPositions[pos], glyphsSize[glyph]);
|
||||
glyphRect.setTop(std::max(glyphRect.top() - m_font->getTopMargin() - m_font->getGlyphSpacing().height(), 0));
|
||||
glyphRect.setTop(std::max(glyphRect.top() - m_font->getYOffset() - m_font->getGlyphSpacing().height(), 0));
|
||||
glyphRect.setLeft(std::max(glyphRect.left() - m_font->getGlyphSpacing().width(), 0));
|
||||
|
||||
// first glyph entirely visible found
|
||||
if(glyphRect.topLeft() >= startGlyphPos) {
|
||||
m_startInternalPos.x = glyphsPositions[pos].x;
|
||||
m_startInternalPos.y = glyphsPositions[pos].y - m_font->getTopMargin();
|
||||
m_startInternalPos.y = glyphsPositions[pos].y - m_font->getYOffset();
|
||||
m_startRenderPos = pos;
|
||||
break;
|
||||
}
|
||||
|
@ -351,7 +351,7 @@ int UILineEdit::getTextPos(Point pos)
|
|||
int candidatePos = -1;
|
||||
for(int i=0;i<textLength;++i) {
|
||||
Rect clickGlyphRect = m_glyphsCoords[i];
|
||||
clickGlyphRect.addTop(m_font->getTopMargin() + m_font->getGlyphSpacing().height());
|
||||
clickGlyphRect.addTop(m_font->getYOffset() + m_font->getGlyphSpacing().height());
|
||||
clickGlyphRect.addLeft(m_font->getGlyphSpacing().width()+1);
|
||||
if(clickGlyphRect.contains(pos))
|
||||
return i;
|
||||
|
@ -381,12 +381,12 @@ void UILineEdit::onStyleApply(const OTMLNodePtr& styleNode)
|
|||
if(node->tag() == "text") {
|
||||
setText(node->value());
|
||||
setCursorPos(m_text.length());
|
||||
} else if(node->tag() == "text hidden") {
|
||||
} else if(node->tag() == "text-hidden") {
|
||||
setTextHidden(node->value<bool>());
|
||||
} else if(node->tag() == "text margin") {
|
||||
} else if(node->tag() == "text-margin") {
|
||||
m_textHorizontalMargin = node->value<int>();
|
||||
} else if(node->tag() == "always focused") {
|
||||
m_alwaysFocused = true;
|
||||
} else if(node->tag() == "always-active") {
|
||||
m_alwaysActive = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -398,7 +398,7 @@ void UILineEdit::onGeometryUpdate(const Rect& oldRect, const Rect& newRect)
|
|||
|
||||
void UILineEdit::onFocusChange(bool focused, Fw::FocusReason reason)
|
||||
{
|
||||
if(focused && !m_alwaysFocused) {
|
||||
if(focused && !m_alwaysActive) {
|
||||
if(reason == Fw::TabFocusReason)
|
||||
setCursorPos(m_text.length());
|
||||
else
|
||||
|
@ -423,7 +423,7 @@ bool UILineEdit::onKeyPress(uchar keyCode, char keyChar, int keyboardModifiers)
|
|||
else if(keyCode == Fw::KeyV && keyboardModifiers == Fw::KeyboardCtrlModifier)
|
||||
appendText(g_platform.getClipboardText());
|
||||
else if(keyCode == Fw::KeyTab) {
|
||||
if(!m_alwaysFocused) {
|
||||
if(!m_alwaysActive) {
|
||||
if(UIWidgetPtr parent = getParent())
|
||||
parent->focusNextChild(Fw::TabFocusReason);
|
||||
}
|
||||
|
|
|
@ -71,7 +71,7 @@ private:
|
|||
int m_cursorTicks;
|
||||
int m_textHorizontalMargin;
|
||||
bool m_textHidden;
|
||||
bool m_alwaysFocused;
|
||||
bool m_alwaysActive;
|
||||
|
||||
std::vector<Rect> m_glyphsCoords;
|
||||
std::vector<Rect> m_glyphsTexCoords;
|
||||
|
|
|
@ -36,7 +36,7 @@ void UIVerticalLayout::applyStyle(const OTMLNodePtr& styleNode)
|
|||
UILayout::applyStyle(styleNode);
|
||||
|
||||
for(const OTMLNodePtr& node : styleNode->children()) {
|
||||
if(node->tag() == "align bottom")
|
||||
if(node->tag() == "align-bottom")
|
||||
m_alignBottom = node->value<bool>();
|
||||
else if(node->tag() == "padding")
|
||||
m_padding = node->value<int>();
|
||||
|
|
|
@ -40,7 +40,7 @@ UIWidget::UIWidget()
|
|||
m_states = Fw::DefaultState;
|
||||
m_font = g_fonts.getDefaultFont();
|
||||
m_opacity = 255;
|
||||
m_marginTop = m_marginBottom = m_marginLeft = m_marginRight = 0;
|
||||
m_marginTop = m_marginRight = m_marginBottom = m_marginLeft = 0;
|
||||
|
||||
// generate an unique id, this is need because anchored layouts find widgets by id
|
||||
static unsigned long id = 1;
|
||||
|
@ -817,7 +817,7 @@ void UIWidget::onStyleApply(const OTMLNodePtr& styleNode)
|
|||
setWidth(node->value<int>());
|
||||
else if(node->tag() == "height")
|
||||
setHeight(node->value<int>());
|
||||
else if(node->tag() == "size fixed")
|
||||
else if(node->tag() == "fixed-size")
|
||||
setSizeFixed(node->value<bool>());
|
||||
else if(node->tag() == "position")
|
||||
moveTo(node->value<Point>());
|
||||
|
@ -825,14 +825,46 @@ void UIWidget::onStyleApply(const OTMLNodePtr& styleNode)
|
|||
setX(node->value<int>());
|
||||
else if(node->tag() == "y")
|
||||
setY(node->value<int>());
|
||||
else if(node->tag() == "margin.left")
|
||||
setMarginLeft(node->value<int>());
|
||||
else if(node->tag() == "margin.right")
|
||||
setMarginRight(node->value<int>());
|
||||
else if(node->tag() == "margin.top")
|
||||
else if(node->tag() == "margin-top")
|
||||
setMarginTop(node->value<int>());
|
||||
else if(node->tag() == "margin.bottom")
|
||||
else if(node->tag() == "margin-right")
|
||||
setMarginRight(node->value<int>());
|
||||
else if(node->tag() == "margin-bottom")
|
||||
setMarginBottom(node->value<int>());
|
||||
else if(node->tag() == "margin-left")
|
||||
setMarginLeft(node->value<int>());
|
||||
else if(node->tag() == "margin") {
|
||||
std::string marginDesc = node->value();
|
||||
std::vector<std::string> split;
|
||||
boost::split(split, marginDesc, boost::is_any_of(std::string(" ")));
|
||||
if(split.size() == 4) {
|
||||
setMarginTop(Fw::safeCast<int>(split[0]));
|
||||
setMarginRight(Fw::safeCast<int>(split[1]));
|
||||
setMarginBottom(Fw::safeCast<int>(split[2]));
|
||||
setMarginLeft(Fw::safeCast<int>(split[3]));
|
||||
} else if(split.size() == 3) {
|
||||
int marginTop = Fw::safeCast<int>(split[0]);
|
||||
int marginHorizontal = Fw::safeCast<int>(split[1]);
|
||||
int marginBottom = Fw::safeCast<int>(split[2]);
|
||||
setMarginTop(marginTop);
|
||||
setMarginRight(marginHorizontal);
|
||||
setMarginBottom(marginBottom);
|
||||
setMarginLeft(marginHorizontal);
|
||||
} else if(split.size() == 2) {
|
||||
int marginVertical = Fw::safeCast<int>(split[0]);
|
||||
int marginHorizontal = Fw::safeCast<int>(split[1]);
|
||||
setMarginTop(marginVertical);
|
||||
setMarginRight(marginHorizontal);
|
||||
setMarginBottom(marginVertical);
|
||||
setMarginLeft(marginHorizontal);
|
||||
} else if(split.size() == 1) {
|
||||
int margin = Fw::safeCast<int>(split[0]);
|
||||
setMarginTop(margin);
|
||||
setMarginRight(margin);
|
||||
setMarginBottom(margin);
|
||||
setMarginLeft(margin);
|
||||
}
|
||||
}
|
||||
// layouts
|
||||
else if(node->tag() == "layout") {
|
||||
// layout is set only once
|
||||
|
|
|
@ -62,10 +62,10 @@ public:
|
|||
void setOpacity(int opacity) { m_opacity = opacity; }
|
||||
void setBackgroundColor(const Color& color) { m_backgroundColor = color; }
|
||||
void setForegroundColor(const Color& color) { m_foregroundColor = color; }
|
||||
void setMarginLeft(int margin) { m_marginLeft = margin; updateParentLayout(); }
|
||||
void setMarginRight(int margin) { m_marginRight = margin; updateParentLayout(); }
|
||||
void setMarginTop(int margin) { m_marginTop = margin; updateParentLayout(); }
|
||||
void setMarginRight(int margin) { m_marginRight = margin; updateParentLayout(); }
|
||||
void setMarginBottom(int margin) { m_marginBottom = margin; updateParentLayout(); }
|
||||
void setMarginLeft(int margin) { m_marginLeft = margin; updateParentLayout(); }
|
||||
void setSizeFixed(bool fixed) { m_fixedSize = fixed; updateParentLayout(); }
|
||||
void setLastFocusReason(Fw::FocusReason reason) { m_lastFocusReason = reason; }
|
||||
|
||||
|
@ -112,10 +112,10 @@ public:
|
|||
Color getForegroundColor() { return m_foregroundColor; }
|
||||
Color getBackgroundColor() { return m_backgroundColor; }
|
||||
int getOpacity() { return m_opacity; }
|
||||
int getMarginLeft() { return m_marginLeft; }
|
||||
int getMarginRight() { return m_marginRight; }
|
||||
int getMarginTop() { return m_marginTop; }
|
||||
int getMarginRight() { return m_marginRight; }
|
||||
int getMarginBottom() { return m_marginBottom; }
|
||||
int getMarginLeft() { return m_marginLeft; }
|
||||
Fw::FocusReason getLastFocusReason() { return m_lastFocusReason; }
|
||||
OTMLNodePtr getStyle() { return m_style; }
|
||||
|
||||
|
@ -205,10 +205,10 @@ protected:
|
|||
Color m_foregroundColor;
|
||||
int m_states;
|
||||
int m_opacity;
|
||||
int m_marginLeft;
|
||||
int m_marginRight;
|
||||
int m_marginTop;
|
||||
int m_marginRight;
|
||||
int m_marginBottom;
|
||||
int m_marginLeft;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
|
|
@ -41,19 +41,17 @@ void UIWindow::render()
|
|||
// render children
|
||||
UIWidget::render();
|
||||
|
||||
// draw window head
|
||||
|
||||
// draw window head text
|
||||
Rect headTextRect = m_rect;
|
||||
headTextRect.addTop(-m_headOffset.y);
|
||||
headTextRect.addTop(-m_headTextOffset.y);
|
||||
headTextRect.setHeight(m_headHeight);
|
||||
if(m_titleAlign & Fw::AlignLeft)
|
||||
headTextRect.addLeft(-m_headOffset.x);
|
||||
headTextRect.addLeft(-m_headTextOffset.x);
|
||||
else if(m_titleAlign & Fw::AlignRight)
|
||||
headTextRect.addRight(-m_headOffset.x);
|
||||
headTextRect.addRight(-m_headTextOffset.x);
|
||||
else {
|
||||
headTextRect.addLeft(-m_headOffset.x);
|
||||
headTextRect.addRight(-m_headOffset.x);
|
||||
headTextRect.addLeft(-m_headTextOffset.x);
|
||||
headTextRect.addRight(-m_headTextOffset.x);
|
||||
}
|
||||
m_font->renderText(m_title, headTextRect, m_titleAlign, m_foregroundColor);
|
||||
}
|
||||
|
@ -63,15 +61,15 @@ void UIWindow::onStyleApply(const OTMLNodePtr& styleNode)
|
|||
UIWidget::onStyleApply(styleNode);
|
||||
|
||||
for(OTMLNodePtr node : styleNode->children()) {
|
||||
if(node->tag() == "head height")
|
||||
if(node->tag() == "head-height")
|
||||
m_headHeight = node->value<int>();
|
||||
else if(node->tag() == "head offset")
|
||||
m_headOffset = node->value<Point>();
|
||||
else if(node->tag() == "head-text-offset")
|
||||
m_headTextOffset = node->value<Point>();
|
||||
else if(node->tag() == "title")
|
||||
setTitle(node->value());
|
||||
else if(node->tag() == "head text align")
|
||||
else if(node->tag() == "head-text-align")
|
||||
m_titleAlign = Fw::translateAlignment(node->value());
|
||||
else if(node->tag() == "move policy") {
|
||||
else if(node->tag() == "move-policy") {
|
||||
if(node->value() == "free")
|
||||
m_movePolicy = FREE_MOVE;
|
||||
else if(node->value() == "free updated")
|
||||
|
@ -79,14 +77,6 @@ void UIWindow::onStyleApply(const OTMLNodePtr& styleNode)
|
|||
else
|
||||
m_movePolicy = DONT_MOVE;
|
||||
}
|
||||
else if(node->tag() == "onEnter") {
|
||||
g_lua.loadFunction(node->value(), "@" + node->source() + "[" + node->tag() + "]");
|
||||
luaSetField(node->tag());
|
||||
}
|
||||
else if(node->tag() == "onEscape") {
|
||||
g_lua.loadFunction(node->value(), "@" + node->source() + "[" + node->tag() + "]");
|
||||
luaSetField(node->tag());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -53,7 +53,7 @@ private:
|
|||
bool m_moving;
|
||||
MovePolicy m_movePolicy;
|
||||
Fw::AlignmentFlag m_titleAlign;
|
||||
Point m_headOffset;
|
||||
Point m_headTextOffset;
|
||||
Point m_movingReference;
|
||||
Point m_oldPos;
|
||||
int m_oldIndex;
|
||||
|
|
Loading…
Reference in New Issue