规范 - 如何更改演示者的颜色(或背景颜色)
Spec - how to change the color (or background color) of a presenter
我想更改SpTextInputFieldPresenter
的背景颜色
例如为了提供输入的视觉反馈,我想对 whenTextChangedDo:
做出反应并更改字段的背景颜色以显示输入是正确还是错误。我知道这不是对每个人都是最好的,但我还是想试试。
没有黑客怎么办?
规范预览了使用样式来更改(在一定程度上)组件的外观。
样式被添加到应用程序(SpApplication
的实例或其子项),并且可以由作为应用程序一部分的任何演示者使用。
样式可以看作 CSS 样式表,在 Gtk 的情况下它们实际上是 CSS 样式表,但在 Morphic 后端的情况下它们有一个完全不同的实现(你可以看到你可以定义的所有属性在 SpPropertyStyle
层级中。
下面的代码将展示如何
- 声明样式(以脚本方式,在生产场景中,样式可能会在应用程序的配置中定义)。
- 通过添加或删除它们来使用它们。
app := SpApplication new.
"If using Morphic"
app addStyleSheetFromString: '.application [
.red [ Draw { #color: #red } ],
.green [ Draw { #color: #green } ]
]'.
"If using GTK (you need to choose one, both options are not possible at the same time)"
app useBackend: #Gtk.
app addCSSProviderFromString: '
.red { background-color: red }
.green { background-color: green }
'.
presenter := SpPresenter new.
presenter application: app.
presenter layout: (SpBoxLayout newTopToBottom
add: (textPresenter := presenter newTextInput) expand: false;
addLast: (SpBoxLayout newLeftToRight
add: (presenter newButton
label: 'Red';
action: [ textPresenter removeStyle: 'green'; addStyle: 'red' ];
yourself);
add: (presenter newButton
label: 'Green';
action: [ textPresenter removeStyle: 'red'; addStyle: 'green' ];
yourself);
yourself)
expand: false;
yourself).
presenter asWindow
title: 'Example applying styles';
open
这将产生(使用 Gtk3 后端)此输出:
我想更改SpTextInputFieldPresenter
例如为了提供输入的视觉反馈,我想对 whenTextChangedDo:
做出反应并更改字段的背景颜色以显示输入是正确还是错误。我知道这不是对每个人都是最好的,但我还是想试试。
没有黑客怎么办?
规范预览了使用样式来更改(在一定程度上)组件的外观。
样式被添加到应用程序(SpApplication
的实例或其子项),并且可以由作为应用程序一部分的任何演示者使用。
样式可以看作 CSS 样式表,在 Gtk 的情况下它们实际上是 CSS 样式表,但在 Morphic 后端的情况下它们有一个完全不同的实现(你可以看到你可以定义的所有属性在 SpPropertyStyle
层级中。
下面的代码将展示如何
- 声明样式(以脚本方式,在生产场景中,样式可能会在应用程序的配置中定义)。
- 通过添加或删除它们来使用它们。
app := SpApplication new.
"If using Morphic"
app addStyleSheetFromString: '.application [
.red [ Draw { #color: #red } ],
.green [ Draw { #color: #green } ]
]'.
"If using GTK (you need to choose one, both options are not possible at the same time)"
app useBackend: #Gtk.
app addCSSProviderFromString: '
.red { background-color: red }
.green { background-color: green }
'.
presenter := SpPresenter new.
presenter application: app.
presenter layout: (SpBoxLayout newTopToBottom
add: (textPresenter := presenter newTextInput) expand: false;
addLast: (SpBoxLayout newLeftToRight
add: (presenter newButton
label: 'Red';
action: [ textPresenter removeStyle: 'green'; addStyle: 'red' ];
yourself);
add: (presenter newButton
label: 'Green';
action: [ textPresenter removeStyle: 'red'; addStyle: 'green' ];
yourself);
yourself)
expand: false;
yourself).
presenter asWindow
title: 'Example applying styles';
open
这将产生(使用 Gtk3 后端)此输出: