// Campo de texto base (paso 2.4): misma pieza y estados que GameInput (input.png, 24 px por estado): // normal · hover (borde claro) · foco (borde acento) · error ($on, hp) · desactivado. Alto propio de 16 (heredadas). TextEdit < UITextEdit font: Verdana Bold-11px ttf-font: $otmmo-font ttf-font-size: $otmmo-size-sm color: $otmmo-text padding-left: 4 height: 16 opacity: 1 image-source: /images/ui/input image-clip: 0 0 32 24 image-border: 3 selection-color: $otmmo-text selection-background-color: $otmmo-selection cursor: none blink-speed: 600 $hover !disabled: image-clip: 0 24 32 24 $focus !disabled: image-clip: 0 48 32 24 $on !disabled: image-clip: 0 72 32 24 $disabled: image-clip: 0 96 32 24 color: $otmmo-text-disabled opacity: 1 PasswordTextEdit < TextEdit text-hidden: true font: pVerdana Bold-11px color: $otmmo-text padding-top: 2 padding-left: 4 MultilineTextEdit < TextEdit multiline: true TextQtEdit < UITextEdit font: verdana-11px-antialised ttf-font: $otmmo-font ttf-font-size: $otmmo-size-sm color: $otmmo-text size: 86 22 text-offset: 0 4 opacity: 1 padding: 4 image-source: /images/ui/input image-clip: 0 0 32 24 image-border: 3 selection-color: $otmmo-text selection-background-color: $otmmo-selection change-cursor-image: false $hover !disabled: image-clip: 0 24 32 24 $focus !disabled: image-clip: 0 48 32 24 $on !disabled: image-clip: 0 72 32 24 $disabled: image-clip: 0 96 32 24 color: $otmmo-text-disabled HiddenTextQtEdit < TextQtEdit text-hidden: true HiddenTextQtToggleEdit < TextQtEdit text-hidden: true UICheckBox size: 19 20 anchors.right: parent.right margin-right: -2 anchors.verticalCenter: parent.verticalCenter image-rect: 0 0 19 20 image-source: /images/ui/hide_eye @onCheckChange: | self:getParent():setTextHidden(not self:isChecked()) self:getParent():setTextWrap(false) $!checked: image-clip: 0 0 19 20 $checked: image-clip: 0 20 19 20 AccTextEdit < TextEdit font: pVerdana Bold-11px color: #c0c0c0 padding-left: 3 padding-top: 2 height: 16 opacity: 1 image-source: /images/ui/textedit image-border: 1 selection-background-color: #808080 cursor: none blink-speed: 600 $disabled: color: #27272788 opacity: 0.5 // GameInput (guía A.5): campo de 32 px. input.png (generar-piel.py) apila 5 estados de 24 px: // normal · hover (borde claro) · foco (borde acento) · error ($on, borde hp) · desactivado (bg-2). // El orden importa: gana el último; el error se ve aunque el campo tenga el foco. GameInput < UITextEdit ttf-font: $otmmo-font ttf-font-size: $otmmo-size-md color: $otmmo-text height: 32 padding-left: 8 padding-right: 8 text-align: left image-source: /images/ui/input image-clip: 0 0 32 24 image-border: 3 selection-color: $otmmo-text selection-background-color: $otmmo-selection blink-speed: 600 opacity: 1 $hover !disabled: image-clip: 0 24 32 24 $focus !disabled: image-clip: 0 48 32 24 $on !disabled: image-clip: 0 72 32 24 $disabled: image-clip: 0 96 32 24 color: $otmmo-text-disabled // Contraseña con el ojo para mostrarla (ojo.png = hide_eye sin su caja, generar-piel.py). El ancla derecha // cuenta desde el padding (28): margen -22 deja el ojo a 6 px del borde. GamePasswordInput < GameInput text-hidden: true padding-right: 28 UICheckBox id: ojo size: 19 20 anchors.right: parent.right anchors.verticalCenter: parent.verticalCenter margin-right: -22 image-source: /images/ui/ojo image-clip: 0 0 19 20 !tooltip: tr('Mostrar u ocultar') @onCheckChange: | self:getParent():setTextHidden(not self:isChecked()) $checked: image-clip: 0 20 19 20