hotcocoa 0.5.1 → 0.6.0pre
Sign up to get free protection for your applications and to get access to all the features.
- data/.yardopts +14 -0
- data/History.txt +21 -0
- data/README.markdown +84 -0
- data/Rakefile +47 -0
- data/bin/hotcocoa +20 -10
- data/docs/Contributors.markdown +25 -0
- data/docs/Mappings.markdown +352 -0
- data/docs/MappingsExplained.markdown +22 -0
- data/docs/Overview.markdown +58 -0
- data/docs/Resources.markdown +25 -0
- data/docs/Tutorial.markdown +3 -0
- data/lib/hotcocoa/application/builder.rb +237 -0
- data/lib/hotcocoa/application/specification.rb +373 -0
- data/lib/hotcocoa/application_builder.rb +338 -242
- data/lib/hotcocoa/attributed_string_helpers.rb +128 -0
- data/lib/hotcocoa/behaviors.rb +39 -6
- data/lib/hotcocoa/core_extensions/kernel.rb +67 -0
- data/lib/hotcocoa/core_extensions/nsarray.rb +15 -0
- data/lib/hotcocoa/core_extensions/nsmutable_attributed_string.rb +74 -0
- data/lib/hotcocoa/core_extensions/nsstring.rb +36 -0
- data/lib/hotcocoa/core_extensions/nsurl.rb +6 -0
- data/lib/hotcocoa/core_extensions/numeric.rb +9 -0
- data/lib/hotcocoa/core_extensions/object.rb +36 -0
- data/lib/hotcocoa/core_extensions/range.rb +30 -0
- data/lib/hotcocoa/core_extensions.rb +8 -0
- data/lib/hotcocoa/data_sources/combo_box_data_source.rb +38 -38
- data/lib/hotcocoa/data_sources/outline_view_data_source.rb +33 -0
- data/lib/hotcocoa/data_sources/table_data_source.rb +12 -13
- data/lib/hotcocoa/data_sources.rb +3 -0
- data/lib/hotcocoa/delegate_builder.rb +114 -79
- data/lib/hotcocoa/graphics/canvas.rb +211 -214
- data/lib/hotcocoa/graphics/color.rb +89 -91
- data/lib/hotcocoa/graphics/elements/particle.rb +16 -19
- data/lib/hotcocoa/graphics/elements/rope.rb +12 -14
- data/lib/hotcocoa/graphics/elements/sandpainter.rb +11 -13
- data/lib/hotcocoa/graphics/gradient.rb +13 -14
- data/lib/hotcocoa/graphics/image.rb +110 -83
- data/lib/hotcocoa/graphics/path.rb +44 -50
- data/lib/hotcocoa/graphics/pdf.rb +17 -19
- data/lib/hotcocoa/graphics.rb +21 -20
- data/lib/hotcocoa/kvo_accessors.rb +10 -11
- data/lib/hotcocoa/layout_view.rb +394 -379
- data/lib/hotcocoa/mapper.rb +346 -207
- data/lib/hotcocoa/mapping_methods.rb +107 -37
- data/lib/hotcocoa/mappings/appkit/alert.rb +25 -0
- data/lib/hotcocoa/mappings/appkit/application.rb +112 -0
- data/lib/hotcocoa/mappings/{array_controller.rb → appkit/array_controller.rb} +33 -35
- data/lib/hotcocoa/mappings/appkit/box.rb +37 -0
- data/lib/hotcocoa/mappings/appkit/button.rb +88 -0
- data/lib/hotcocoa/mappings/appkit/collection_view.rb +42 -0
- data/lib/hotcocoa/mappings/appkit/color.rb +40 -0
- data/lib/hotcocoa/mappings/appkit/column.rb +19 -0
- data/lib/hotcocoa/mappings/appkit/combo_box.rb +22 -0
- data/lib/hotcocoa/mappings/appkit/control.rb +31 -0
- data/lib/hotcocoa/mappings/appkit/font.rb +58 -0
- data/lib/hotcocoa/mappings/appkit/gradient.rb +19 -0
- data/lib/hotcocoa/mappings/appkit/image.rb +15 -0
- data/lib/hotcocoa/mappings/appkit/image_view.rb +41 -0
- data/lib/hotcocoa/mappings/appkit/label.rb +23 -0
- data/lib/hotcocoa/mappings/appkit/layout_view.rb +9 -0
- data/lib/hotcocoa/mappings/appkit/line.rb +16 -0
- data/lib/hotcocoa/mappings/appkit/menu.rb +78 -0
- data/lib/hotcocoa/mappings/appkit/menu_item.rb +47 -0
- data/lib/hotcocoa/mappings/appkit/outline_view.rb +62 -0
- data/lib/hotcocoa/mappings/appkit/popup.rb +106 -0
- data/lib/hotcocoa/mappings/appkit/progress_indicator.rb +61 -0
- data/lib/hotcocoa/mappings/appkit/scroll_view.rb +28 -0
- data/lib/hotcocoa/mappings/appkit/search_field.rb +9 -0
- data/lib/hotcocoa/mappings/appkit/secure_text_field.rb +15 -0
- data/lib/hotcocoa/mappings/appkit/segmented_control.rb +103 -0
- data/lib/hotcocoa/mappings/appkit/slider.rb +23 -0
- data/lib/hotcocoa/mappings/appkit/sound.rb +9 -0
- data/lib/hotcocoa/mappings/appkit/speech_synthesizer.rb +22 -0
- data/lib/hotcocoa/mappings/appkit/split_view.rb +19 -0
- data/lib/hotcocoa/mappings/appkit/status_bar.rb +7 -0
- data/lib/hotcocoa/mappings/appkit/status_item.rb +9 -0
- data/lib/hotcocoa/mappings/appkit/table_view.rb +108 -0
- data/lib/hotcocoa/mappings/appkit/text_field.rb +36 -0
- data/lib/hotcocoa/mappings/appkit/text_view.rb +13 -0
- data/lib/hotcocoa/mappings/appkit/toolbar.rb +99 -0
- data/lib/hotcocoa/mappings/appkit/toolbar_item.rb +36 -0
- data/lib/hotcocoa/mappings/appkit/tracking_area.rb +24 -0
- data/lib/hotcocoa/mappings/appkit/view.rb +65 -0
- data/lib/hotcocoa/mappings/appkit/window.rb +124 -0
- data/lib/hotcocoa/mappings/foundation/net_service.rb +65 -0
- data/lib/hotcocoa/mappings/foundation/net_service_browser.rb +27 -0
- data/lib/hotcocoa/mappings/foundation/notification.rb +24 -0
- data/lib/hotcocoa/mappings/foundation/sort_descriptor.rb +17 -0
- data/lib/hotcocoa/mappings/foundation/timer.rb +38 -0
- data/lib/hotcocoa/mappings/foundation/user_defaults.rb +43 -0
- data/lib/hotcocoa/mappings/foundation/xml_parser.rb +44 -0
- data/lib/hotcocoa/mappings/qtkit/movie.rb +15 -0
- data/lib/hotcocoa/mappings/qtkit/movie_view.rb +28 -0
- data/lib/hotcocoa/mappings/webkit/web_view.rb +20 -0
- data/lib/hotcocoa/mappings.rb +57 -111
- data/lib/hotcocoa/mvc.rb +90 -81
- data/lib/hotcocoa/notification_listener.rb +135 -58
- data/lib/hotcocoa/standard_rake_tasks.rb +17 -9
- data/lib/hotcocoa/target_action_convenience.rb +39 -0
- data/lib/hotcocoa/template.rb +90 -21
- data/lib/hotcocoa/version.rb +3 -0
- data/lib/hotcocoa.rb +12 -14
- data/template/Rakefile +31 -3
- data/template/__APPLICATION_NAME__.appspec +8 -0
- data/template/lib/application.rb +14 -17
- data/template/lib/menu.rb +11 -11
- data/test/application/test_builder.rb +28 -0
- data/test/application/test_specification.rb +280 -0
- data/test/core_extensions/test_kernel.rb +66 -0
- data/test/core_extensions/test_nsarray.rb +9 -0
- data/test/core_extensions/test_nsmutable_attributed_string.rb +86 -0
- data/test/core_extensions/test_nsstring.rb +20 -0
- data/test/core_extensions/test_nsurl.rb +9 -0
- data/test/core_extensions/test_numeric.rb +10 -0
- data/test/core_extensions/test_object.rb +37 -0
- data/test/core_extensions/test_range.rb +28 -0
- data/test/helper.rb +30 -0
- data/test/mappings/test_bonjour.rb +79 -0
- data/test/mappings/test_color.rb +16 -0
- data/test/mappings/test_font.rb +21 -0
- data/test/mappings/test_tracking_area.rb +18 -0
- data/test/test_application_builder.rb +95 -0
- data/test/test_attributed_string_helpers.rb +63 -0
- data/test/test_behaviours.rb +26 -0
- data/test/test_bin.rb +75 -0
- data/test/test_mapper.rb +100 -0
- data/test/test_mapping_methods.rb +67 -0
- data/test/test_mappings.rb +68 -0
- data/test/test_notification_listener.rb +19 -0
- data/test/test_template.rb +65 -0
- metadata +217 -90
- data/lib/hotcocoa/attributed_string.rb +0 -143
- data/lib/hotcocoa/kernel_ext.rb +0 -14
- data/lib/hotcocoa/mappings/alert.rb +0 -25
- data/lib/hotcocoa/mappings/application.rb +0 -112
- data/lib/hotcocoa/mappings/box.rb +0 -39
- data/lib/hotcocoa/mappings/button.rb +0 -92
- data/lib/hotcocoa/mappings/collection_view.rb +0 -44
- data/lib/hotcocoa/mappings/color.rb +0 -28
- data/lib/hotcocoa/mappings/column.rb +0 -21
- data/lib/hotcocoa/mappings/combo_box.rb +0 -24
- data/lib/hotcocoa/mappings/control.rb +0 -33
- data/lib/hotcocoa/mappings/font.rb +0 -44
- data/lib/hotcocoa/mappings/gradient.rb +0 -15
- data/lib/hotcocoa/mappings/image.rb +0 -15
- data/lib/hotcocoa/mappings/image_view.rb +0 -43
- data/lib/hotcocoa/mappings/label.rb +0 -25
- data/lib/hotcocoa/mappings/layout_view.rb +0 -9
- data/lib/hotcocoa/mappings/menu.rb +0 -71
- data/lib/hotcocoa/mappings/menu_item.rb +0 -47
- data/lib/hotcocoa/mappings/movie.rb +0 -13
- data/lib/hotcocoa/mappings/movie_view.rb +0 -27
- data/lib/hotcocoa/mappings/notification.rb +0 -17
- data/lib/hotcocoa/mappings/popup.rb +0 -110
- data/lib/hotcocoa/mappings/progress_indicator.rb +0 -68
- data/lib/hotcocoa/mappings/scroll_view.rb +0 -29
- data/lib/hotcocoa/mappings/search_field.rb +0 -9
- data/lib/hotcocoa/mappings/secure_text_field.rb +0 -17
- data/lib/hotcocoa/mappings/segmented_control.rb +0 -97
- data/lib/hotcocoa/mappings/slider.rb +0 -25
- data/lib/hotcocoa/mappings/sort_descriptor.rb +0 -13
- data/lib/hotcocoa/mappings/sound.rb +0 -9
- data/lib/hotcocoa/mappings/speech_synthesizer.rb +0 -25
- data/lib/hotcocoa/mappings/split_view.rb +0 -21
- data/lib/hotcocoa/mappings/status_bar.rb +0 -7
- data/lib/hotcocoa/mappings/status_item.rb +0 -9
- data/lib/hotcocoa/mappings/table_view.rb +0 -110
- data/lib/hotcocoa/mappings/text_field.rb +0 -41
- data/lib/hotcocoa/mappings/text_view.rb +0 -13
- data/lib/hotcocoa/mappings/timer.rb +0 -25
- data/lib/hotcocoa/mappings/toolbar.rb +0 -100
- data/lib/hotcocoa/mappings/toolbar_item.rb +0 -36
- data/lib/hotcocoa/mappings/view.rb +0 -67
- data/lib/hotcocoa/mappings/web_view.rb +0 -22
- data/lib/hotcocoa/mappings/window.rb +0 -118
- data/lib/hotcocoa/mappings/xml_parser.rb +0 -41
- data/lib/hotcocoa/object_ext.rb +0 -22
- data/lib/hotcocoa/plist.rb +0 -45
- data/template/config/build.yml +0 -8
- data/test/test_helper.rb +0 -3
- data/test/test_hotcocoa.rb +0 -11
@@ -1,27 +0,0 @@
|
|
1
|
-
HotCocoa::Mappings.map :movie_view => :QTMovieView, :framework => :QTKit do
|
2
|
-
|
3
|
-
defaults :layout => {}, :frame => DefaultEmptyRect
|
4
|
-
|
5
|
-
def init_with_options(movie_view, options)
|
6
|
-
movie_view.initWithFrame(options.delete(:frame))
|
7
|
-
end
|
8
|
-
|
9
|
-
custom_methods do
|
10
|
-
|
11
|
-
def controller_visible=(value)
|
12
|
-
setControllerVisible(value)
|
13
|
-
end
|
14
|
-
|
15
|
-
def controller_buttons=(buttons)
|
16
|
-
setBackButtonVisible(buttons.include?(:back))
|
17
|
-
setCustomButtonVisible(buttons.include?(:custom))
|
18
|
-
setHotSpotButtonVisible(buttons.include?(:hot_spot))
|
19
|
-
setStepButtonsVisible(buttons.include?(:step))
|
20
|
-
setTranslateButtonVisible(buttons.include?(:translate))
|
21
|
-
setVolumeButtonVisible(buttons.include?(:volume))
|
22
|
-
setZoomButtonsVisible(buttons.include?(:zoom))
|
23
|
-
end
|
24
|
-
|
25
|
-
end
|
26
|
-
|
27
|
-
end
|
@@ -1,17 +0,0 @@
|
|
1
|
-
HotCocoa::Mappings.map :notification => :NSNotification do
|
2
|
-
|
3
|
-
defaults :post => true, :distributed => false
|
4
|
-
|
5
|
-
def alloc_with_options(options)
|
6
|
-
if options.delete(:post)
|
7
|
-
if options.delete(:distributed)
|
8
|
-
NSDistributedNotificationCenter.defaultCenter.postNotificationName options.delete(:name), object:options.delete(:object), userInfo:options.delete(:info), deliverImmediately:(options.delete(:immediately) == true)
|
9
|
-
else
|
10
|
-
NSNotificationCenter.defaultCenter.postNotificationName options.delete(:name), object:options.delete(:object), userInfo:options.delete(:info)
|
11
|
-
end
|
12
|
-
else
|
13
|
-
NSNotification.notificationName options.delete(:name), object:options.delete(:object), userInfo:options.delete(:info)
|
14
|
-
end
|
15
|
-
end
|
16
|
-
|
17
|
-
end
|
@@ -1,110 +0,0 @@
|
|
1
|
-
module HotCocoa
|
2
|
-
class PopUpItemList
|
3
|
-
|
4
|
-
include Enumerable
|
5
|
-
|
6
|
-
attr_reader :control
|
7
|
-
|
8
|
-
def initialize(control)
|
9
|
-
@control = control
|
10
|
-
end
|
11
|
-
|
12
|
-
def <<(title)
|
13
|
-
control.addItemWithTitle(title)
|
14
|
-
end
|
15
|
-
|
16
|
-
def [](index)
|
17
|
-
control.itemTitleAtIndex(index)
|
18
|
-
end
|
19
|
-
|
20
|
-
def delete(title)
|
21
|
-
if title.kind_of?(Fixnum)
|
22
|
-
control.removeItemAtIndex(title)
|
23
|
-
else
|
24
|
-
control.removeItemWithTitle(title)
|
25
|
-
end
|
26
|
-
end
|
27
|
-
|
28
|
-
def insert(title, at:index)
|
29
|
-
control.insertItemWithTitle(title, atIndex:index)
|
30
|
-
end
|
31
|
-
|
32
|
-
def selected
|
33
|
-
control.titleOfSelectedItem
|
34
|
-
end
|
35
|
-
|
36
|
-
def selected=(title)
|
37
|
-
if title.kind_of?(Fixnum)
|
38
|
-
control.selectItemAtIndex(title)
|
39
|
-
else
|
40
|
-
control.selectItemWithTitle(title)
|
41
|
-
end
|
42
|
-
end
|
43
|
-
|
44
|
-
def selected_index
|
45
|
-
control.indexOfSelectedItem
|
46
|
-
end
|
47
|
-
|
48
|
-
def size
|
49
|
-
control.numberOfItems
|
50
|
-
end
|
51
|
-
|
52
|
-
def each(&block)
|
53
|
-
control.itemTitles.each(&block)
|
54
|
-
end
|
55
|
-
|
56
|
-
end
|
57
|
-
|
58
|
-
class PopUpMenuItemList < PopUpItemList
|
59
|
-
include Enumerable
|
60
|
-
|
61
|
-
def selected
|
62
|
-
control.selectedItem
|
63
|
-
end
|
64
|
-
|
65
|
-
def selected=(menu_item)
|
66
|
-
if menu_item.kind_of?(Fixnum)
|
67
|
-
control.selectItemAtIndex(menu_item)
|
68
|
-
else
|
69
|
-
control.selectItem(menu_item)
|
70
|
-
end
|
71
|
-
end
|
72
|
-
|
73
|
-
def [](index)
|
74
|
-
control.itemAtIndex(index)
|
75
|
-
end
|
76
|
-
|
77
|
-
def each(&block)
|
78
|
-
control.itemArray.each(&block)
|
79
|
-
end
|
80
|
-
end
|
81
|
-
end
|
82
|
-
|
83
|
-
HotCocoa::Mappings.map :popup => :NSPopUpButton do
|
84
|
-
|
85
|
-
defaults :pulls_down => false,
|
86
|
-
:frame => DefaultEmptyRect,
|
87
|
-
:layout => {}
|
88
|
-
|
89
|
-
def init_with_options(popup, options)
|
90
|
-
popup.initWithFrame(options.delete(:frame), pullsDown:options.delete(:pulls_down))
|
91
|
-
end
|
92
|
-
|
93
|
-
custom_methods do
|
94
|
-
|
95
|
-
def items=(values)
|
96
|
-
removeAllItems
|
97
|
-
addItemsWithTitles(values)
|
98
|
-
end
|
99
|
-
|
100
|
-
def items
|
101
|
-
@_item_list ||= HotCocoa::PopUpItemList.new(self)
|
102
|
-
end
|
103
|
-
|
104
|
-
def menu_items
|
105
|
-
@_menu_item_list ||= HotCocoa::PopUpMenuItemList.new(self)
|
106
|
-
end
|
107
|
-
|
108
|
-
end
|
109
|
-
|
110
|
-
end
|
@@ -1,68 +0,0 @@
|
|
1
|
-
# Cocoa class: NSProgressIndicator
|
2
|
-
# ================================
|
3
|
-
#
|
4
|
-
# Apple Documentation: http://developer.apple.com/DOCUMENTATION/Cocoa/Reference/ApplicationKit/Classes/NSProgressIndicator_Class/Reference/Reference.html
|
5
|
-
#
|
6
|
-
# Usage Example:
|
7
|
-
# --------------
|
8
|
-
#
|
9
|
-
|
10
|
-
|
11
|
-
HotCocoa::Mappings.map :progress_indicator => :NSProgressIndicator do
|
12
|
-
|
13
|
-
defaults :layout => {}, :frame => [0,0,250,20]
|
14
|
-
|
15
|
-
def init_with_options(progress_bar, options)
|
16
|
-
progress_bar.initWithFrame(options.delete(:frame))
|
17
|
-
end
|
18
|
-
|
19
|
-
custom_methods do
|
20
|
-
|
21
|
-
def to_f
|
22
|
-
doubleValue
|
23
|
-
end
|
24
|
-
alias :value :to_f
|
25
|
-
|
26
|
-
def value=(value)
|
27
|
-
setDoubleValue(value.to_f)
|
28
|
-
end
|
29
|
-
|
30
|
-
def start
|
31
|
-
startAnimation(nil)
|
32
|
-
end
|
33
|
-
|
34
|
-
def stop
|
35
|
-
stopAnimation(nil)
|
36
|
-
end
|
37
|
-
|
38
|
-
def show
|
39
|
-
setHidden(false)
|
40
|
-
end
|
41
|
-
|
42
|
-
def hide
|
43
|
-
setHidden(true)
|
44
|
-
end
|
45
|
-
|
46
|
-
def reset
|
47
|
-
setDoubleValue(0.0)
|
48
|
-
end
|
49
|
-
|
50
|
-
def style=(style_name)
|
51
|
-
if style_name == :spinning
|
52
|
-
setStyle(NSProgressIndicatorSpinningStyle)
|
53
|
-
else
|
54
|
-
setStyle(NSProgressIndicatorBarStyle)
|
55
|
-
end
|
56
|
-
end
|
57
|
-
|
58
|
-
def spinning_style
|
59
|
-
setStyle(NSProgressIndicatorSpinningStyle)
|
60
|
-
end
|
61
|
-
|
62
|
-
def bar_style
|
63
|
-
setStyle(NSProgressIndicatorBarStyle)
|
64
|
-
end
|
65
|
-
|
66
|
-
end
|
67
|
-
|
68
|
-
end
|
@@ -1,29 +0,0 @@
|
|
1
|
-
HotCocoa::Mappings.map :scroll_view => :NSScrollView do
|
2
|
-
|
3
|
-
defaults :vertical_scroller => true, :horizontal_scroller => true, :autoresizes_subviews => true, :layout => {}, :frame => [0,0,0,0]
|
4
|
-
|
5
|
-
def init_with_options(scroll_view, options)
|
6
|
-
scroll_view.initWithFrame options.delete(:frame)
|
7
|
-
end
|
8
|
-
|
9
|
-
custom_methods do
|
10
|
-
|
11
|
-
def <<(view)
|
12
|
-
setDocumentView(view)
|
13
|
-
end
|
14
|
-
|
15
|
-
def background=(value)
|
16
|
-
setDrawsBackground(value)
|
17
|
-
end
|
18
|
-
|
19
|
-
def vertical_scroller=(value)
|
20
|
-
setHasVerticalScroller(value)
|
21
|
-
end
|
22
|
-
|
23
|
-
def horizontal_scroller=(value)
|
24
|
-
setHasHorizontalScroller(value)
|
25
|
-
end
|
26
|
-
|
27
|
-
end
|
28
|
-
|
29
|
-
end
|
@@ -1,17 +0,0 @@
|
|
1
|
-
HotCocoa::Mappings.map :secure_text_field => :NSSecureTextField do
|
2
|
-
|
3
|
-
defaults :selectable => true, :editable => true, :echo => true, :layout => {}
|
4
|
-
|
5
|
-
def init_with_options(secure_text_field, options)
|
6
|
-
secure_text_field.initWithFrame options.delete(:frame)
|
7
|
-
end
|
8
|
-
|
9
|
-
custom_methods do
|
10
|
-
|
11
|
-
def echo=(value)
|
12
|
-
cell.setEchosBullets(value)
|
13
|
-
end
|
14
|
-
|
15
|
-
end
|
16
|
-
|
17
|
-
end
|
@@ -1,97 +0,0 @@
|
|
1
|
-
module HotCocoa
|
2
|
-
class SegmentedControlSegment
|
3
|
-
attr_reader :number, :control
|
4
|
-
def initialize(control, number)
|
5
|
-
@number = number
|
6
|
-
@control = control
|
7
|
-
end
|
8
|
-
|
9
|
-
def width
|
10
|
-
control.widthForSegment(number)
|
11
|
-
end
|
12
|
-
|
13
|
-
def width=(width)
|
14
|
-
control.setWidth(width, forSegment:number)
|
15
|
-
end
|
16
|
-
|
17
|
-
def label
|
18
|
-
control.labelForSegment(number)
|
19
|
-
end
|
20
|
-
|
21
|
-
def label=(label)
|
22
|
-
control.setLabel(label, forSegment:number)
|
23
|
-
end
|
24
|
-
|
25
|
-
def image
|
26
|
-
control.imageForSegment(number)
|
27
|
-
end
|
28
|
-
|
29
|
-
def image=(image)
|
30
|
-
control.setImage(image, forSegment:number)
|
31
|
-
end
|
32
|
-
|
33
|
-
def menu
|
34
|
-
control.menuForSegment(number)
|
35
|
-
end
|
36
|
-
|
37
|
-
def menu=(menu)
|
38
|
-
control.setMenu(menu, forSegment:number)
|
39
|
-
end
|
40
|
-
|
41
|
-
def selected?
|
42
|
-
control.isSelectedForSegment(number)
|
43
|
-
end
|
44
|
-
|
45
|
-
def selected=(value)
|
46
|
-
control.setSelected(value, forSegment:number)
|
47
|
-
end
|
48
|
-
|
49
|
-
def enabled?
|
50
|
-
control.isEnabledForSegment(number)
|
51
|
-
end
|
52
|
-
|
53
|
-
def enabled=(value)
|
54
|
-
control.setEnabled(value, forSegment:number)
|
55
|
-
end
|
56
|
-
end
|
57
|
-
end
|
58
|
-
|
59
|
-
HotCocoa::Mappings.map :segmented_control => :NSSegmentedControl do
|
60
|
-
|
61
|
-
defaults :layout => {}, :frame => [0,0,0,0]
|
62
|
-
|
63
|
-
def init_with_options(segmented_control, options)
|
64
|
-
segmented_control.initWithFrame options.delete(:frame)
|
65
|
-
end
|
66
|
-
|
67
|
-
custom_methods do
|
68
|
-
|
69
|
-
def segments=(segments)
|
70
|
-
segments.each do |segment|
|
71
|
-
self << segment
|
72
|
-
end
|
73
|
-
end
|
74
|
-
|
75
|
-
def <<(data)
|
76
|
-
setSegmentCount(segmentCount+1)
|
77
|
-
segment = HotCocoa::SegmentedControlSegment.new(self, segmentCount-1)
|
78
|
-
data.each do |key, value|
|
79
|
-
segment.send("#{key}=", value)
|
80
|
-
end
|
81
|
-
end
|
82
|
-
|
83
|
-
def [](segment_number)
|
84
|
-
Segment.new(self, segment_number)
|
85
|
-
end
|
86
|
-
|
87
|
-
def select(segment_number)
|
88
|
-
setSelectedSegment(segment_number)
|
89
|
-
end
|
90
|
-
|
91
|
-
def selected_segment
|
92
|
-
HotCocoa::SegmentedControlSegment.new(self, selectedSegment)
|
93
|
-
end
|
94
|
-
|
95
|
-
end
|
96
|
-
|
97
|
-
end
|
@@ -1,25 +0,0 @@
|
|
1
|
-
HotCocoa::Mappings.map :slider => :NSSlider do
|
2
|
-
|
3
|
-
defaults :frame => DefaultEmptyRect, :layout => {}
|
4
|
-
|
5
|
-
def init_with_options(button, options)
|
6
|
-
button.initWithFrame options.delete(:frame)
|
7
|
-
end
|
8
|
-
|
9
|
-
custom_methods do
|
10
|
-
|
11
|
-
def min=(value)
|
12
|
-
setMinValue(value)
|
13
|
-
end
|
14
|
-
|
15
|
-
def max=(value)
|
16
|
-
setMaxValue(value)
|
17
|
-
end
|
18
|
-
|
19
|
-
def tic_marks=(value)
|
20
|
-
setNumberOfTickMarks(value)
|
21
|
-
end
|
22
|
-
|
23
|
-
end
|
24
|
-
|
25
|
-
end
|
@@ -1,13 +0,0 @@
|
|
1
|
-
HotCocoa::Mappings.map :sort_descriptor => :NSSortDescriptor do
|
2
|
-
|
3
|
-
defaults :ascending => true
|
4
|
-
|
5
|
-
def init_with_options(sort_descriptor, opts)
|
6
|
-
if opts.has_key?(:selector)
|
7
|
-
sort_descriptor.initWithKey(opts.delete(:key), ascending:opts.delete(:ascending))
|
8
|
-
else
|
9
|
-
sort_descriptor.initWithKey(opts.delete(:key), ascending:opts.delete(:ascending), selector:opts.delete(:selector))
|
10
|
-
end
|
11
|
-
end
|
12
|
-
|
13
|
-
end
|
@@ -1,25 +0,0 @@
|
|
1
|
-
HotCocoa::Mappings.map :speech_synthesizer => :NSSpeechSynthesizer do
|
2
|
-
|
3
|
-
def init_with_options(obj, options)
|
4
|
-
if voice = options.delete(:voice)
|
5
|
-
obj.initWithVoice voice
|
6
|
-
else
|
7
|
-
obj.init
|
8
|
-
end
|
9
|
-
end
|
10
|
-
|
11
|
-
custom_methods do
|
12
|
-
|
13
|
-
def speak(what, to=nil)
|
14
|
-
if to
|
15
|
-
url = to.is_a?(String) ? NSURL.fileURLWithPath(to) : to
|
16
|
-
startSpeakingString(what, toURL:url)
|
17
|
-
else
|
18
|
-
startSpeakingString(what)
|
19
|
-
end
|
20
|
-
end
|
21
|
-
|
22
|
-
end
|
23
|
-
|
24
|
-
end
|
25
|
-
|
@@ -1,21 +0,0 @@
|
|
1
|
-
HotCocoa::Mappings.map :split_view => :NSSplitView do
|
2
|
-
|
3
|
-
defaults :layout => {}
|
4
|
-
|
5
|
-
def init_with_options(split_view, options)
|
6
|
-
split_view.initWithFrame options.delete(:frame)
|
7
|
-
end
|
8
|
-
|
9
|
-
custom_methods do
|
10
|
-
|
11
|
-
def horizontal=(value)
|
12
|
-
setVertical(!value)
|
13
|
-
end
|
14
|
-
|
15
|
-
def set_position(position, of_divider_at_index:index)
|
16
|
-
setPosition position, ofDividerAtIndex:index
|
17
|
-
end
|
18
|
-
|
19
|
-
end
|
20
|
-
|
21
|
-
end
|
@@ -1,110 +0,0 @@
|
|
1
|
-
HotCocoa::Mappings.map :table_view => :NSTableView do
|
2
|
-
|
3
|
-
defaults :column_resize => :uniform, :frame => DefaultEmptyRect, :layout => {}
|
4
|
-
|
5
|
-
constant :column_resize, {
|
6
|
-
:none => NSTableViewNoColumnAutoresizing,
|
7
|
-
:uniform => NSTableViewUniformColumnAutoresizingStyle,
|
8
|
-
:sequential => NSTableViewSequentialColumnAutoresizingStyle,
|
9
|
-
:reverse_sequential => NSTableViewReverseSequentialColumnAutoresizingStyle,
|
10
|
-
:last_column_only => NSTableViewLastColumnOnlyAutoresizingStyle,
|
11
|
-
:first_column_only => NSTableViewFirstColumnOnlyAutoresizingStyle
|
12
|
-
}
|
13
|
-
|
14
|
-
constant :grid_style, {
|
15
|
-
:none => NSTableViewGridNone,
|
16
|
-
:vertical => NSTableViewSolidVerticalGridLineMask,
|
17
|
-
:horizontal => NSTableViewSolidHorizontalGridLineMask,
|
18
|
-
:both => NSTableViewSolidVerticalGridLineMask | NSTableViewSolidHorizontalGridLineMask
|
19
|
-
}
|
20
|
-
|
21
|
-
constant :selection_style, {
|
22
|
-
:regular => NSTableViewSelectionHighlightStyleRegular,
|
23
|
-
:source_list => NSTableViewSelectionHighlightStyleSourceList
|
24
|
-
}
|
25
|
-
|
26
|
-
def init_with_options(table_view, options)
|
27
|
-
table_view.initWithFrame(options.delete(:frame))
|
28
|
-
end
|
29
|
-
|
30
|
-
custom_methods do
|
31
|
-
|
32
|
-
def data=(data_source)
|
33
|
-
data_source = HotCocoa::TableDataSource.new(data_source) if data_source.kind_of?(Array)
|
34
|
-
setDataSource(data_source)
|
35
|
-
end
|
36
|
-
|
37
|
-
def columns=(columns)
|
38
|
-
columns.each do |column|
|
39
|
-
addTableColumn(column)
|
40
|
-
end
|
41
|
-
end
|
42
|
-
|
43
|
-
def column=(column)
|
44
|
-
addTableColumn(column)
|
45
|
-
end
|
46
|
-
|
47
|
-
def auto_size
|
48
|
-
setAutoresizingMask(NSViewHeightSizable|NSViewWidthSizable)
|
49
|
-
end
|
50
|
-
|
51
|
-
def column_resize=(style)
|
52
|
-
setColumnAutoresizingStyle(style)
|
53
|
-
end
|
54
|
-
|
55
|
-
def reload
|
56
|
-
reloadData
|
57
|
-
end
|
58
|
-
|
59
|
-
def grid_style=(value)
|
60
|
-
setGridStyleMask(value)
|
61
|
-
end
|
62
|
-
|
63
|
-
def on_double_action=(behavior)
|
64
|
-
if target && (
|
65
|
-
target.instance_variable_get("@action_behavior") ||
|
66
|
-
target.instance_variable_get("@double_action_behavior"))
|
67
|
-
object.instance_variable_set("@double_action_behavior", behavior)
|
68
|
-
object = target
|
69
|
-
else
|
70
|
-
object = Object.new
|
71
|
-
object.instance_variable_set("@double_action_behavior", behavior)
|
72
|
-
setTarget(object)
|
73
|
-
end
|
74
|
-
def object.perform_double_action(sender)
|
75
|
-
@double_action_behavior.call(sender)
|
76
|
-
end
|
77
|
-
setDoubleAction("perform_double_action:")
|
78
|
-
end
|
79
|
-
|
80
|
-
def on_double_action(&behavior)
|
81
|
-
self.on_double_action = behavior
|
82
|
-
self
|
83
|
-
end
|
84
|
-
|
85
|
-
end
|
86
|
-
|
87
|
-
delegating "tableView:willDisplayCell:forTableColumn:row:", :to => :will_display_cell, :parameters => [:willDisplayCell, :forTableColumn, :row]
|
88
|
-
delegating "tableView:dataCellForTableColumn:row:", :to => :data_cell, :parameters => [:dataCellForTableColumn, :row]
|
89
|
-
delegating "tableView:shouldShowCellExpansionForTableColumn:row:", :to => :expand_cell?, :parameters => [:shouldShowCellExpansionForTableColumn, :row]
|
90
|
-
delegating "tableView:isGroupRow:", :to => :is_group_row?, :parameters => [:isGroupRow]
|
91
|
-
delegating "tableView:shouldEditTableColumn:row:", :to => :edit_table_column?, :parameters => [:shouldEditTableColumn, :row]
|
92
|
-
delegating "tableView:heightOfRow:", :to => :height_of_row, :parameters => [:heightOfRow]
|
93
|
-
delegating "selectionShouldChangeInTableView:", :to => :change_selection?
|
94
|
-
delegating "tableView:shouldSelectRow:", :to => :select_row?, :parameters => [:shouldSelectRow]
|
95
|
-
delegating "tableView:selectionIndexesForProposedSelection:", :to => :indexes_for_selection, :parameters => [:selectIndexesForProposedSelection]
|
96
|
-
delegating "tableView:shouldSelectTableColumn:", :to => :select_column?, :parameters => [:shouldSelectTableColumn]
|
97
|
-
delegating "tableViewSelectionIsChanging:", :to => :selection_changing, :parameters => [:tableViewSelectionIsChanging]
|
98
|
-
delegating "tableViewSelectionDidChange:", :to => :selection_changed, :parameters => [:tableViewSelectionDidChange]
|
99
|
-
delegating "tableView:shouldTypeSelectForEvent:withCurrentSearchString:", :to => :type_select_for_event?, :parameters => [:shouldTypeSelectForEvent, :withCurrentSearchString]
|
100
|
-
delegating "tableView:typeSelectStringForTableColumn:row:", :to => :type_select_string, :parameters => [:typeSelectStringForTableColumn, :row]
|
101
|
-
delegating "tableView:nextTypeSelectMatchFromRow:toRow:forString:", :to => :find_in_range, :parameters => [:nextTypeSelectMatchFromRow, :toRow, :forString]
|
102
|
-
delegating "tableView:didDragTableColumn:", :to => :dragged_column, :parameters => [:didDragTableColumn]
|
103
|
-
delegating "tableViewColumnDidMove:", :to => :column_moved, :parameters => [:tableViewColumnDidMove]
|
104
|
-
delegating "tableViewColumnDidResize:", :to => :column_resized, :parameters => [:tableViewColumnDidResize]
|
105
|
-
delegating "tableView:didClickTableColumn:", :to => :clicked_column, :parameters => [:didClickTableColumn]
|
106
|
-
delegating "tableView:mouseDownInHeaderOfTableColumn:", :to => :header_clicked, :parameters => [:mouseDownInHeaderOfTableColumn]
|
107
|
-
delegating "tableView:shouldTrackCell:forTableColumn:row:", :to => :track_cell?, :parameters => [:shouldTrackCell, :forTableColumn, :row]
|
108
|
-
delegating "tableView:toolTipForCell:rect:tableColumn:row:mouseLocation:",:to => :tooltip_for_cell, :parameters => [:toolTipForCell, :rect, :tableColumn, :row, :mouseLocation]
|
109
|
-
|
110
|
-
end
|
@@ -1,41 +0,0 @@
|
|
1
|
-
# NSTextField mappings
|
2
|
-
#
|
3
|
-
# Usage example:
|
4
|
-
# @field = text_field(:text => "your text here", :layout => {:start => false}, :frame => [0, 0, 300, 300])
|
5
|
-
# @field.text = "New text"
|
6
|
-
|
7
|
-
# Cocoa Documentation:
|
8
|
-
# http://developer.apple.com/documentation/Cocoa/Reference/ApplicationKit/Classes/NSTextField_Class/Reference/Reference.html
|
9
|
-
#
|
10
|
-
#
|
11
|
-
|
12
|
-
HotCocoa::Mappings.map :text_field => :NSTextField do
|
13
|
-
|
14
|
-
constant :text_align, {
|
15
|
-
:right => NSRightTextAlignment,
|
16
|
-
:left => NSLeftTextAlignment,
|
17
|
-
:center => NSCenterTextAlignment
|
18
|
-
}
|
19
|
-
|
20
|
-
defaults :selectable => true, :editable => true, :layout => {}, :frame => DefaultEmptyRect
|
21
|
-
|
22
|
-
def init_with_options(text_field, options)
|
23
|
-
text_field.initWithFrame options.delete(:frame)
|
24
|
-
end
|
25
|
-
|
26
|
-
custom_methods do
|
27
|
-
|
28
|
-
def text_align=(value)
|
29
|
-
setAlignment(value)
|
30
|
-
end
|
31
|
-
|
32
|
-
end
|
33
|
-
|
34
|
-
delegating "control:textShouldBeginEditing:", :to => :should_begin_editing?, :parameters => [:textShouldBeginEditing]
|
35
|
-
delegating "control:textShouldEndEditing:", :to => :should_end_editing?, :parameters => [:textShouldEndEditing]
|
36
|
-
delegating "controlTextDidBeginEditing:", :to => :did_begin_editing, :parameters => ["controlTextDidBeginEditing.userInfo['NSFieldEditor']"]
|
37
|
-
delegating "controlTextDidEndEditing:", :to => :did_end_editing, :parameters => ["controlTextDidEndEditing.userInfo['NSFieldEditor']"]
|
38
|
-
delegating "controlTextDidChange:", :to => :did_change, :parameters => ["controlTextDidChange.userInfo['NSFieldEditor']"]
|
39
|
-
|
40
|
-
|
41
|
-
end
|
@@ -1,13 +0,0 @@
|
|
1
|
-
HotCocoa::Mappings.map :text_view => :NSTextView do
|
2
|
-
|
3
|
-
defaults :layout => {}, :frame => DefaultEmptyRect
|
4
|
-
|
5
|
-
def init_with_options(text_view, options)
|
6
|
-
if options[:container]
|
7
|
-
text_view.initWithFrame options.delete(:frame), :textContainer => options.delete(:container)
|
8
|
-
else
|
9
|
-
text_view.initWithFrame options.delete(:frame)
|
10
|
-
end
|
11
|
-
end
|
12
|
-
|
13
|
-
end
|
@@ -1,25 +0,0 @@
|
|
1
|
-
HotCocoa::Mappings.map :timer => :NSTimer do
|
2
|
-
|
3
|
-
defaults :scheduled => true, :repeats => false
|
4
|
-
|
5
|
-
def alloc_with_options(options)
|
6
|
-
raise ArgumentError, "timer requires :interval" unless options.has_key?(:interval)
|
7
|
-
target = options.delete(:target)
|
8
|
-
selector = options.delete(:selector)
|
9
|
-
if !target || !selector
|
10
|
-
raise ArgumentError, "timer requires either :target and :selector or :on_action" unless options.has_key?(:on_action)
|
11
|
-
target = Object.new
|
12
|
-
target.instance_variable_set(:@block, options.delete(:on_action))
|
13
|
-
def target.fire(timer)
|
14
|
-
@block.call(timer)
|
15
|
-
end
|
16
|
-
selector = "fire:"
|
17
|
-
end
|
18
|
-
if options.delete(:scheduled)
|
19
|
-
NSTimer.scheduledTimerWithTimeInterval(options.delete(:interval), target:target, selector:selector, userInfo:options.delete(:info), repeats:options.delete(:repeats))
|
20
|
-
else
|
21
|
-
NSTimer.timerWithTimeInterval(options.delete(:interval), target:target, selector:selector, userInfo:options.delete(:info), repeats:options.delete(:repeats))
|
22
|
-
end
|
23
|
-
end
|
24
|
-
|
25
|
-
end
|