ライブベータのリリースのための
私は最近、新しいGlimmer DSLを醸造していたそれはGlimmer DSL for LibUIです.
それは今日、完全に機能して、アルファからベータまで動いているGlimmer DSL for LibUIで終わった最後の3週の間の情熱的なプロジェクトでした.
libuiとは
LibUIは、すべてのプラットフォーム(libuiに似ていますが、SWTの重さなしでネイティブの規制を貸す比較的新しいC GUIライブラリ)Java Virtual Machineのまわりの細いルビーラッパーです.
Glimmer DSL for LibUIとは対照的にGlimmer DSL for SWTの最大の利点の一つは、それは必須の無料MRIクラビーデスクトップ開発のGUIライブラリです.任意の前提条件を事前にインストールする必要はありません.ちょうど宝石をインストールし、プラットフォームに依存しないネイティブのGUIが動作します!
Glimmer DSL for LibUIまたはGlimmer DSL for SWTとは対照的にGlimmer DSL for Tkを使用している主なトレードオフは、SWTとTkがGUIツールキットとして中央のアルファLibuiより成熟しているという事実です.しかし、小さな単純なアプリケーションを構築する必要がある場合は、Ruby GEMに含まれる依存性を超えてゼロの前提条件を持つことにより、Glimmer DSL for LibUIが良い便利な選択になる可能性があります.また、Glimmer DSL for Tkと同様に、そのアプリは即座に開始し、小さなメモリフットプリントを持っている.Libuiは将来的に非常に価値がある可能性があります有望な新しいGUIツールキットです.
次の表の例では、このプロジェクトが開発した1つの重要な革新は、テーブルデータの暗黙のデータバインドです.
Glimmer DSL for LibUIは、Glimmer DSL for SWTに類似したDSLを提供し、Rubyでより生産的なデスクトップ開発を可能にします.
視覚的にGUIコントロール階層にマップする宣言DSL構文
スマートなデフォルトおよび低レベル詳細 のオートメーションによる構成の上のコンベンションの上のコンベンションの上のコンベンション
GUI を構築するのに可能な構文の最小量を必要とするカスタムコントロールサポート
こんにちは、世界!
プログレスバー
エリアギャラリー
Glimmer DSL for LibUIと同じように、3週間として高速でGlimmerの完全な精巧なDSLを構築することができます(最初のバージョンで何時間も行われる).Glimmerは、それが引数、キーワード引数、ブロック変数、入れ子にされた属性、またはコンテンツブロックを含むかどうかを望む方法で、sculpting a DSLで最終的な柔軟性を提供します.次のDSLプロジェクトにはGlimmerを使用します.
ハッピーGlimmering!
それは今日、完全に機能して、アルファからベータまで動いているGlimmer DSL for LibUIで終わった最後の3週の間の情熱的なプロジェクトでした.
libuiとは
LibUIは、すべてのプラットフォーム(libuiに似ていますが、SWTの重さなしでネイティブの規制を貸す比較的新しいC GUIライブラリ)Java Virtual Machineのまわりの細いルビーラッパーです.
Glimmer DSL for LibUIとは対照的にGlimmer DSL for SWTの最大の利点の一つは、それは必須の無料MRIクラビーデスクトップ開発のGUIライブラリです.任意の前提条件を事前にインストールする必要はありません.ちょうど宝石をインストールし、プラットフォームに依存しないネイティブのGUIが動作します!
Glimmer DSL for LibUIまたはGlimmer DSL for SWTとは対照的にGlimmer DSL for Tkを使用している主なトレードオフは、SWTとTkがGUIツールキットとして中央のアルファLibuiより成熟しているという事実です.しかし、小さな単純なアプリケーションを構築する必要がある場合は、Ruby GEMに含まれる依存性を超えてゼロの前提条件を持つことにより、Glimmer DSL for LibUIが良い便利な選択になる可能性があります.また、Glimmer DSL for Tkと同様に、そのアプリは即座に開始し、小さなメモリフットプリントを持っている.Libuiは将来的に非常に価値がある可能性があります有望な新しいGUIツールキットです.
次の表の例では、このプロジェクトが開発した1つの重要な革新は、テーブルデータの暗黙のデータバインドです.
Glimmer DSL for LibUIは、Glimmer DSL for SWTに類似したDSLを提供し、Rubyでより生産的なデスクトップ開発を可能にします.
視覚的にGUIコントロール階層にマップする
スマートなデフォルトおよび低レベル詳細
GUI を構築するのに可能な構文の最小量を必要とする
こんにちは、世界!
require 'glimmer-dsl-libui'
include Glimmer
window('hello world').show
プログレスバー
require 'glimmer-dsl-libui'
include Glimmer
data = [
['task 1', 0],
['task 2', 15],
['task 3', 100],
['task 4', 75],
['task 5', -1],
]
window('Task Progress', 300, 200) {
vertical_box {
table {
text_column('Task')
progress_bar_column('Progress')
cell_rows data # implicit data-binding
}
button('Mark All As Done') {
stretchy false
on_clicked do
data.each_with_index do |row_data, row|
data[row][1] = 100 # automatically updates table due to implicit data-binding
end
end
}
}
}.show
エリアギャラリー
require 'glimmer-dsl-libui'
include Glimmer
window('Area Gallery', 400, 400) {
area {
path { # declarative stable path
square(0, 0, 100)
square(100, 100, 400)
fill r: 102, g: 102, b: 204
}
path { # declarative stable path
rectangle(0, 100, 100, 400)
rectangle(100, 0, 400, 100)
# linear gradient (has x0, y0, x1, y1, and stops)
fill x0: 10, y0: 10, x1: 350, y1: 350, stops: [{pos: 0.25, r: 204, g: 102, b: 204}, {pos: 0.75, r: 102, g: 102, b: 204}]
}
path { # declarative stable path
figure(100, 100) {
line(100, 400)
line(400, 100)
line(400, 400)
closed true
}
fill r: 202, g: 102, b: 104, a: 0.5
stroke r: 0, g: 0, b: 0
}
path { # declarative stable path
figure(0, 0) {
bezier(200, 100, 100, 200, 400, 100)
bezier(300, 100, 100, 300, 100, 400)
bezier(100, 300, 300, 100, 400, 400)
closed true
}
fill r: 202, g: 102, b: 204, a: 0.5
stroke r: 0, g: 0, b: 0, thickness: 2, dashes: [50, 10, 10, 10], dash_phase: -50.0
}
path { # declarative stable path
arc(400, 220, 180, 90, 90, false)
# radial gradient (has an outer_radius in addition to x0, y0, x1, y1, and stops)
fill outer_radius: 90, x0: 0, y0: 0, x1: 500, y1: 500, stops: [{pos: 0.25, r: 102, g: 102, b: 204, a: 0.5}, {pos: 0.75, r: 204, g: 102, b: 204}]
stroke r: 0, g: 0, b: 0, thickness: 2, dashes: [50, 10, 10, 10], dash_phase: -50.0
}
path { # declarative stable path
circle(200, 200, 90)
fill r: 202, g: 102, b: 204, a: 0.5
stroke r: 0, g: 0, b: 0, thickness: 2
}
text(160, 40, 100) { # x, y, width
string {
font family: 'Times', size: 14
color :black
'Area Gallery'
}
}
on_mouse_event do |area_mouse_event|
p area_mouse_event
end
on_mouse_moved do |area_mouse_event|
puts 'moved'
end
on_mouse_down do |area_mouse_event|
puts 'mouse down'
end
on_mouse_up do |area_mouse_event|
puts 'mouse up'
end
on_mouse_drag_started do |area_mouse_event|
puts 'drag started'
end
on_mouse_dragged do |area_mouse_event|
puts 'dragged'
end
on_mouse_dropped do |area_mouse_event|
puts 'dropped'
end
on_mouse_entered do
puts 'entered'
end
on_mouse_exited do
puts 'exited'
end
on_key_event do |area_key_event|
p area_key_event
end
on_key_up do |area_key_event|
puts 'key up'
end
on_key_down do |area_key_event|
puts 'key down'
end
}
}.show
the project pageで多くのより多くの例をチェックしてください.Glimmer DSL for LibUIと同じように、3週間として高速でGlimmerの完全な精巧なDSLを構築することができます(最初のバージョンで何時間も行われる).Glimmerは、それが引数、キーワード引数、ブロック変数、入れ子にされた属性、またはコンテンツブロックを含むかどうかを望む方法で、sculpting a DSLで最終的な柔軟性を提供します.次のDSLプロジェクトにはGlimmerを使用します.
ハッピーGlimmering!
Reference
この問題について(ライブベータのリリースのための), 我々は、より多くの情報をここで見つけました https://dev.to/andyobtiva/glimmer-dsl-for-libui-beta-release-45j6テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol