gtk 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,5 @@
1
+ module Gtk
2
+ class Bin < Container
3
+ end
4
+ end
5
+
@@ -0,0 +1,14 @@
1
+ module Gtk
2
+ module ButtonsType
3
+ NONE = 0
4
+ OK = 1
5
+ CLOSE = 2
6
+ CANCEL = 3
7
+ YES_NO = 4
8
+ OK_CANCEL = 5
9
+
10
+ def self.[] symbol
11
+ const_get(symbol.to_s.upcase.to_sym)
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,164 @@
1
+ module Gtk
2
+ module Lib
3
+ # attach_function :gtk_cell_renderer_new, [], :pointer
4
+ attach_method :gtk_cell_renderer_get_state, [:pointer, :pointer, :int], :int
5
+ attach_method :gtk_cell_renderer_get_padding, [:pointer, :pointer, :pointer], :void
6
+ attach_method :gtk_cell_renderer_set_padding, [:pointer, :int, :int], :void
7
+ attach_method :gtk_cell_renderer_get_alignment, [:pointer, :pointer, :pointer], :void
8
+ attach_function :gtk_cell_renderer_get_type, [], :ulong
9
+ end
10
+
11
+ class CellRenderer < Widget
12
+ class GObjectClass < FFI::Struct
13
+ layout :g_type_class, :long,
14
+ :construct_properties, :pointer,
15
+ :constructor, :pointer,
16
+ :set_property, :pointer,
17
+ :get_property, :pointer
18
+ end
19
+
20
+ class GtkCellRendererClass < FFI::Struct
21
+
22
+ # layout :get_request_mode, :get_request_mode_function,
23
+ # :get_preferred_width, :get_preferred_width_function,
24
+ # :get_preferred_height_for_width, :get_preferred_height_for_width_function,
25
+ # :get_preferred_height, :get_preferred_height_function,
26
+ # :get_preferred_width_for_height, :get_preferred_width_for_height_function,
27
+ # :get_aligned_area, :get_aligned_area_function,
28
+ # :get_size, :get_size_function,
29
+ # :render, :render_function
30
+
31
+ SIZE_OF_GInitiallyUnownedClass = 136
32
+
33
+ layout :parent_class, [:uint8, SIZE_OF_GInitiallyUnownedClass],
34
+ :get_request_mode, :pointer,
35
+ :get_preferred_width, :pointer,
36
+ :get_preferred_height_for_width, :pointer,
37
+ :get_preferred_height, :pointer,
38
+ :get_preferred_width_for_height, :pointer,
39
+ :get_aligned_area, :pointer,
40
+ :get_size, :pointer,
41
+ :render, :pointer
42
+
43
+ # gboolean (* activate) (GtkCellRenderer *cell,
44
+ # GdkEvent *event,
45
+ # GtkWidget *widget,
46
+ # const gchar *path,
47
+ # const GdkRectangle *background_area,
48
+ # const GdkRectangle *cell_area,
49
+ # GtkCellRendererState flags);
50
+ # GtkCellEditable * (* start_editing) (GtkCellRenderer *cell,
51
+ # GdkEvent *event,
52
+ # GtkWidget *widget,
53
+ # const gchar *path,
54
+ # const GdkRectangle *background_area,
55
+ # const GdkRectangle *cell_area,
56
+ # GtkCellRendererState flags);
57
+
58
+ # /* Signals */
59
+ # void (* editing_canceled) (GtkCellRenderer *cell);
60
+ # void (* editing_started) (GtkCellRenderer *cell,
61
+ # GtkCellEditable *editable,
62
+ # const gchar *path);
63
+ end
64
+
65
+ GetProperty = FFI::Function.new(:void,[:pointer, :uint, :pointer, :pointer]) do |_object,property_id,_value,_pspec|
66
+ raise "get_property"
67
+ end
68
+ SetProperty = FFI::Function.new(:void,[:pointer, :uint, :pointer, :pointer]) do |_object,property_id,_value,_pspec|
69
+ raise "set_property"
70
+ end
71
+
72
+ def self.inherited sub
73
+ sub.const_set(:ClassInit,FFI::Function.new(:void,[:pointer]) do |_klass|
74
+ cell_class = GtkCellRendererClass.new(_klass)
75
+ object_class = GObjectClass.new(_klass)
76
+ cell_class[:render] = Render
77
+ cell_class[:get_size] = GetSize
78
+ object_class[:set_property] = SetProperty
79
+ object_class[:get_property] = GetProperty
80
+ sub.init(cell_class,object_class)
81
+ end)
82
+ end
83
+
84
+ InstanceInit = FFI::Function.new(:void,[:pointer]) do |_klass|
85
+ Gtk::CellRenderer.new(FFI::Pointer.new(_klass)).set_padding 2,2
86
+ end
87
+
88
+ def self.type_info
89
+ @type_info ||= begin
90
+ type_info = Gtk::Lib::GTypeInfo.new
91
+ type_info[:class_size] = 264
92
+ type_info[:class_init] = self.const_get(:ClassInit)
93
+ type_info[:instance_init] = InstanceInit
94
+ type_info[:instance_size] = 40
95
+ type_info
96
+ end
97
+ end
98
+
99
+ class CairoRectangleInt < FFI::Struct
100
+ layout :x, :int, :y, :int, :width, :int, :height, :int;
101
+ end
102
+
103
+ Render = FFI::Function.new(:void,[:pointer, :pointer, :pointer, :pointer, :pointer, :int]) do |_cell,_cr,_widget,_background_area,_cell_area,flags|
104
+ Cairo::Context.new(FFI::Pointer.new(_cr)) do |cr|
105
+ instances[_cell.address].render(
106
+ cr,
107
+ Gtk::Widget.new(FFI::Pointer.new(_widget)),
108
+ CairoRectangleInt.new(FFI::Pointer.new(_background_area)),
109
+ CairoRectangleInt.new(FFI::Pointer.new(_cell_area)),
110
+ flags
111
+ )
112
+ end
113
+ end
114
+
115
+ GetSize = FFI::Function.new(:void,[:pointer, :pointer, :pointer, :pointer, :pointer, :pointer, :pointer]) do |_cell,_widget,_cell_area,_x_offset,_y_offset,_width,_height|
116
+ x_offset,y_offset,width,height = instances[_cell.address].get_size(
117
+ Gtk::Widget.new(FFI::Pointer.new(_widget)),
118
+ _cell_area.null? ? nil : CairoRectangleInt.new(FFI::Pointer.new(_cell_area))
119
+ )
120
+ _x_offset.write_int(x_offset) if x_offset
121
+ _y_offset.write_int(x_offset) if y_offset
122
+ _width.write_int(width) unless _width.null?
123
+ _height.write_int(height) unless _height.null?
124
+ end
125
+
126
+ def self.instances
127
+ @@instances ||= {}
128
+ end
129
+ def instances
130
+ self.class.instances
131
+ end
132
+
133
+ def initialize pointer
134
+ raise "hell" unless pointer.is_a?(FFI::Pointer)
135
+ @native = pointer
136
+ instances[native.address] = self
137
+ end
138
+ def self.type
139
+ @type ||= Lib.gtk_cell_renderer_text_get_type()
140
+ end
141
+ def get_padding
142
+ xpad = FFI::MemoryPointer.new(:int,1)
143
+ ypad = FFI::MemoryPointer.new(:int,1)
144
+ Lib.gtk_cell_renderer_get_padding(native,xpad,ypad)
145
+ [xpad.read_int,ypad.read_int]
146
+ end
147
+ def set_padding xpad,ypad
148
+ Lib.gtk_cell_renderer_set_padding(native,xpad,ypad)
149
+ end
150
+ def get_alignment
151
+ xpad = FFI::MemoryPointer.new(:int,1)
152
+ ypad = FFI::MemoryPointer.new(:int,1)
153
+ Lib.gtk_cell_renderer_get_alignment(native,xpad,ypad)
154
+ [xpad.read_int,ypad.read_int]
155
+ end
156
+ # def initialize
157
+ # @native = Lib.gtk_cell_renderer_new()
158
+ # end
159
+ def self.type
160
+ Lib.gtk_cell_renderer_get_type()
161
+ end
162
+ end
163
+ end
164
+
@@ -0,0 +1,12 @@
1
+ module Gtk
2
+ module Lib
3
+ attach_function :gtk_cell_renderer_text_new, [], :pointer
4
+ end
5
+
6
+ class CellRendererText < Widget
7
+ def initialize
8
+ @native = Lib.gtk_cell_renderer_text_new()
9
+ end
10
+ end
11
+ end
12
+
@@ -0,0 +1,9 @@
1
+ module Gtk
2
+ module Lib
3
+ attach_method :gtk_container_add, [:pointer, :pointer], :void
4
+ end
5
+
6
+ class Container < Widget
7
+ end
8
+ end
9
+
@@ -0,0 +1,11 @@
1
+ module Gtk
2
+ module DialogFlags
3
+ MODAL = 1 << 0
4
+ DESTROY_WITH_PARENT = 1 << 1
5
+ NO_SEPARATOR = 1 << 2
6
+
7
+ def self.[] symbol
8
+ const_get(symbol.to_s.upcase.to_sym)
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,6 @@
1
+ module Gtk
2
+ class GType < Enums
3
+ FLOAT = 56
4
+ STRING = 64
5
+ end
6
+ end
@@ -0,0 +1,26 @@
1
+ module Gtk
2
+ module Lib
3
+ attach_function :gtk_list_store_new, [:int, :varargs], :pointer
4
+ attach_method :gtk_list_store_append, [:pointer, :pointer], :void
5
+ attach_method :gtk_list_store_set, [:pointer, :pointer, :varargs], :void
6
+ end
7
+
8
+ class ListStore < GObject
9
+ def initialize(n_columns, *types)
10
+ @native = Lib.gtk_list_store_new(n_columns,
11
+ *(types.map{ |type| [:int,GType[type]] }.flatten)
12
+ )
13
+ end
14
+ def append iter
15
+ iter.owner = self
16
+ Lib.gtk_list_store_append(native,iter.to_ptr)
17
+ end
18
+ # def set *args
19
+ # puts "SET #{args.inspect}"
20
+ # end
21
+ def to_tree_model
22
+ Gtk::TreeModel.new(native)
23
+ end
24
+ end
25
+ end
26
+
@@ -0,0 +1,25 @@
1
+ module Gtk
2
+ module Lib
3
+ attach_function :gtk_message_dialog_new, [:pointer, :long, :long, :long, :string, :varargs], :pointer
4
+ attach_method :gtk_dialog_run, [:pointer], :long
5
+ end
6
+
7
+ class MessageDialog < Widget
8
+ def initialize(options)
9
+ @native = Lib.gtk_message_dialog_new(
10
+ options[:parent],
11
+ DialogFlags[options[:flags]],
12
+ MessageType[options[:type]],
13
+ ButtonsType[options[:buttons_type]],
14
+ "%s",
15
+ :string,
16
+ options[:message]
17
+ )
18
+ end
19
+
20
+ def run
21
+ Lib.gtk_dialog_run(native)
22
+ end
23
+ end
24
+ end
25
+
@@ -0,0 +1,13 @@
1
+ module Gtk
2
+ module MessageType
3
+ INFO = 0
4
+ WARNING = 1
5
+ QUESTION = 2
6
+ ERROR = 3
7
+ OTHER = 4
8
+
9
+ def self.[] symbol
10
+ const_get(symbol.to_s.upcase.to_sym)
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,8 @@
1
+ module Gtk
2
+ class SelectionMode < Enums
3
+ NONE = 0
4
+ SINGLE = 1
5
+ BROWSE = 2
6
+ MULTIPLE = 3
7
+ end
8
+ end
@@ -0,0 +1,16 @@
1
+ module Gtk
2
+ module Lib
3
+ attach_method :gtk_style_context_restore, [:pointer], :void
4
+ attach_method :gtk_style_context_set_state, [:pointer, :int], :void
5
+ attach_method :gtk_style_context_add_class, [:pointer, :string], :void
6
+ attach_method :gtk_style_context_save, [:pointer], :void
7
+ end
8
+
9
+ class StyleContext < GObject
10
+ def initialize(pointer)
11
+ raise "hell" unless pointer.is_a?(FFI::Pointer)
12
+ @native = pointer
13
+ end
14
+ end
15
+ end
16
+
@@ -0,0 +1,32 @@
1
+ module Gtk
2
+ class TreeIter < FFI::Struct
3
+ attr_accessor :owner
4
+
5
+ layout :stamp, :long,
6
+ :user_data, :pointer,
7
+ :user_data2, :pointer,
8
+ :user_data3, :pointer
9
+
10
+ def [] i
11
+ val = FFI::MemoryPointer.new(:float,1) # TODO: lookup column type
12
+ owner.get(self,:int,i,:pointer,val,:int,-1)
13
+ val.read_float
14
+ end
15
+
16
+ def []= i,value
17
+ owner.set(self,:int,i,
18
+ case value
19
+ when String
20
+ :string
21
+ when Fixnum
22
+ :int
23
+ when Float
24
+ :float
25
+ else
26
+ raise value.class.name
27
+ end,
28
+ value,:int,-1)
29
+ end
30
+ end
31
+ end
32
+
@@ -0,0 +1,20 @@
1
+ module Gtk
2
+ module Lib
3
+ attach_method :gtk_tree_model_get_iter_first, [:pointer, :pointer], :bool
4
+ attach_method :gtk_tree_model_get, [:pointer, :pointer, :varargs], :void
5
+ end
6
+
7
+ class TreeModel < GObject # GInterface really
8
+ def initialize(pointer)
9
+ raise "hell" unless pointer.is_a?(FFI::Pointer)
10
+ @native = pointer
11
+ end
12
+ def iter_first
13
+ iter = TreeIter.new
14
+ iter.owner = self
15
+ Lib.gtk_tree_model_get_iter_first(native,iter.to_ptr)
16
+ iter
17
+ end
18
+ end
19
+ end
20
+
@@ -0,0 +1,17 @@
1
+ module Gtk
2
+ module Lib
3
+ attach_method :gtk_tree_path_get_indices, [:pointer], :pointer
4
+ attach_method :gtk_tree_path_get_depth, [:pointer], :long
5
+ end
6
+
7
+ class TreePath < GObject
8
+ def initialize(pointer)
9
+ @native = pointer
10
+ end
11
+ def get_indices
12
+ ret = Lib.gtk_tree_path_get_indices(native)
13
+ ret.get_array_of_int(0,depth)
14
+ end
15
+ end
16
+ end
17
+
@@ -0,0 +1,12 @@
1
+ module Gtk
2
+ module Lib
3
+ attach_method :gtk_tree_selection_set_mode, [:pointer, SelectionMode], :void
4
+ end
5
+
6
+ class TreeSelection < GObject
7
+ def initialize(pointer)
8
+ @native = pointer
9
+ end
10
+ end
11
+ end
12
+
@@ -0,0 +1,45 @@
1
+ module Gtk
2
+ module Lib
3
+ attach_function :gtk_tree_store_new, [:long, :varargs], :pointer
4
+ attach_method :gtk_tree_store_append, [:pointer, Gtk::TreeIter.by_ref, Gtk::TreeIter.by_ref], :void
5
+ attach_method :gtk_tree_store_set_column_types, [:pointer, :long, :pointer], :void
6
+ attach_method :gtk_tree_store_set, [:pointer, Gtk::TreeIter.by_ref, :varargs], :void
7
+ end
8
+
9
+ class TreeStore < GObject
10
+
11
+ TYPE_MAP = {
12
+ Integer => 24, # GObject::TYPE_INT,
13
+ String => 64 # GObject::TYPE_STRING
14
+ }
15
+
16
+ def self.type_mapped_types(*types)
17
+ types = types.first if types.size == 1 && types.first.is_a?(Array)
18
+ types.map{ |type| TYPE_MAP[type] }
19
+ end
20
+
21
+ def initialize(*types)
22
+ @native = Gtk::Lib.gtk_tree_store_new(
23
+ types.size,
24
+ *self.class.type_mapped_types(*types).map{ |type|
25
+ [:int,type]
26
+ }.flatten
27
+ )
28
+ end
29
+
30
+ def set_column_types *types
31
+ types = self.class.type_mapped_types(*types)
32
+ array = FFI::MemoryPointer.new(:long,types.size)
33
+ array.write_array_of_long(types)
34
+ Lib.gtk_tree_store_set_column_types(@native,types.size,array)
35
+ end
36
+
37
+ def append parent=nil
38
+ iter = Gtk::TreeIter.new
39
+ Gtk::Lib.gtk_tree_store_append(native,iter,parent)
40
+ iter.owner = self
41
+ iter
42
+ end
43
+ end
44
+ end
45
+