gtk 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -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
+