vr-corelib 0.0.36

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.
Files changed (65) hide show
  1. checksums.yaml +7 -0
  2. data/Demo.rb +41 -0
  3. data/doc/images/add.png +0 -0
  4. data/doc/images/brick.png +0 -0
  5. data/doc/images/brick_link.png +0 -0
  6. data/doc/images/bug.png +0 -0
  7. data/doc/images/bullet_black.png +0 -0
  8. data/doc/images/bullet_toggle_minus.png +0 -0
  9. data/doc/images/bullet_toggle_plus.png +0 -0
  10. data/doc/images/date.png +0 -0
  11. data/doc/images/delete.png +0 -0
  12. data/doc/images/find.png +0 -0
  13. data/doc/images/macFFBgHack.png +0 -0
  14. data/doc/images/package.png +0 -0
  15. data/doc/images/page_green.png +0 -0
  16. data/doc/images/page_white_text.png +0 -0
  17. data/doc/images/page_white_width.png +0 -0
  18. data/doc/images/plugin.png +0 -0
  19. data/doc/images/ruby.png +0 -0
  20. data/doc/images/tag_blue.png +0 -0
  21. data/doc/images/tag_green.png +0 -0
  22. data/doc/images/transparent.png +0 -0
  23. data/doc/images/wrench.png +0 -0
  24. data/doc/images/wrench_orange.png +0 -0
  25. data/doc/images/zoom.png +0 -0
  26. data/glade/Demo.glade +52 -0
  27. data/img/image-x-generic.png +0 -0
  28. data/lib/Dialog.rb +157 -0
  29. data/lib/GladeGUI.rb +358 -0
  30. data/lib/IconHash.rb +22 -0
  31. data/lib/SimpleComboBoxEntry.rb +14 -0
  32. data/lib/Thread.rb +59 -0
  33. data/lib/Widget.rb +37 -0
  34. data/lib/treeview/FileTreeView.rb +91 -0
  35. data/lib/treeview/IterMethods.rb +82 -0
  36. data/lib/treeview/ListView.rb +90 -0
  37. data/lib/treeview/ModelRow.rb +31 -0
  38. data/lib/treeview/TreeIter.rb +33 -0
  39. data/lib/treeview/TreeView.rb +43 -0
  40. data/lib/treeview/ViewCommon.rb +351 -0
  41. data/lib/treeview/columns/CalendarCol.rb +88 -0
  42. data/lib/treeview/columns/CellRendererCombo.rb +66 -0
  43. data/lib/treeview/columns/CellRendererDate.rb +45 -0
  44. data/lib/treeview/columns/CellRendererObject.rb +57 -0
  45. data/lib/treeview/columns/CellRendererPhone.rb +45 -0
  46. data/lib/treeview/columns/CellRendererPixbuf.rb +16 -0
  47. data/lib/treeview/columns/CellRendererProgress.rb +17 -0
  48. data/lib/treeview/columns/CellRendererSpin.rb +37 -0
  49. data/lib/treeview/columns/CellRendererText.rb +38 -0
  50. data/lib/treeview/columns/CellRendererToggle.rb +47 -0
  51. data/lib/treeview/columns/ComboCol.rb +43 -0
  52. data/lib/treeview/columns/CurrencyCol.rb +23 -0
  53. data/lib/treeview/columns/DateCol.rb +20 -0
  54. data/lib/treeview/columns/ImageCol.rb +30 -0
  55. data/lib/treeview/columns/ProgressCol.rb +27 -0
  56. data/lib/treeview/columns/SpinCol.rb +11 -0
  57. data/lib/treeview/columns/TextCol.rb +64 -0
  58. data/lib/treeview/columns/TreeViewColumn.rb +108 -0
  59. data/lib/treeview/columns/glade/CalendarCol.glade +133 -0
  60. data/lib/treeview/columns/glade/ImageCol.glade +16 -0
  61. data/lib/treeview/columns/glade/TextCol.glade +77 -0
  62. data/main.rb +3 -0
  63. data/vr-corelib.rb +7 -0
  64. data/vrlib.rb +7 -0
  65. metadata +138 -0
@@ -0,0 +1,20 @@
1
+
2
+
3
+ module VR
4
+
5
+ class DateCol
6
+
7
+ attr_accessor :date
8
+
9
+ def initialize(date, format = "%Y-%m-%d")
10
+ set_date(date, format)
11
+ end
12
+
13
+ def set_date(date, format = "%Y-%m-%d")
14
+ @date = date
15
+ # gsub!(self, @date.strftime(format))
16
+ end
17
+
18
+ end
19
+
20
+ end
@@ -0,0 +1,30 @@
1
+
2
+ module VR
3
+
4
+ class ImageCol #< Gdk::Pixbuf
5
+
6
+ include GladeGUI
7
+
8
+ def initialize(image)
9
+ # super(File.dirname(__FILE__) + "/../../../img/image-x-generic.png")
10
+ @image1 = image
11
+ end
12
+
13
+ def show()
14
+ load_glade(__FILE__)
15
+ set_glade_variables()
16
+ @builder["window1"].resize 500, 360
17
+ show_window()
18
+ end
19
+
20
+ def to_s
21
+ "<Img>"
22
+ end
23
+
24
+ # def visual_attributes
25
+ # { :pixbuf => self }
26
+ # end
27
+
28
+ end
29
+
30
+ end
@@ -0,0 +1,27 @@
1
+
2
+ # ==The VR Module hold all the classes of the vrlib gem. The most useful APIs are:
3
+ #
4
+ # ===GladeGUI -- loads glade form
5
+ # ===VR::ListView -- makes Gtk::TreeView easy!
6
+ # ===VR::Dialog -- Dialog boxes: Message Box, Ok Box, Folder selector etc.
7
+
8
+ module VR
9
+
10
+ # This class is simply a wrapper for an Integer. It signals VR::Listview's
11
+ # and VR::Treeviews constructor to make this column a progressbar using
12
+ # VR::CellRendererProgress. For example, whwn you create a VR::ListView,
13
+ # you can pass VR::Progress as a column type:
14
+ #
15
+ # @view = VR::ListView.new(String, VR::Progress, Gdk::Pixbif)
16
+ #
17
+ # This makes model_col #1 a progress bar. When you set the value of the column,
18
+ # provide an integer value from 0 to 100:
19
+ #
20
+ # @view.add_row("Hello World", 65, @pixbuf)
21
+ #
22
+ #
23
+
24
+ class ProgressCol < Integer
25
+ end
26
+
27
+ end
@@ -0,0 +1,11 @@
1
+ module VR
2
+
3
+ class SpinCol < Gtk::Adjustment
4
+
5
+ def initialize(val, min, max, step)
6
+ super(val, min, max, step, 0, 0)
7
+ end
8
+
9
+ end
10
+
11
+ end
@@ -0,0 +1,64 @@
1
+
2
+ module VR
3
+
4
+ # The TextCol class is a simple text editor for editing strings of data:
5
+ #
6
+ # http://visualruby.net/img/textcol.jpg
7
+ #
8
+ # It is a very useful class when you want to display and edit long strings
9
+ # of data in a VR::ListView. To create a coulmn of long strings in a VR::ListView,
10
+ # simply define the column type as VR::TextCol:
11
+ #
12
+ # @view = VR::ListView.new(:name => String, :quote => VR::TextCol)
13
+ # row = @view.add_row
14
+ # row[:name] = "Eric"
15
+ # row[:quote] = VR::TextCol.new("I have come to believe that the whole world is an enigma, a harmless enigma that is made terrible by our own mad attempt to interpret it as though it had an underlying truth. - Umberto Eco) ")
16
+ #
17
+ # The above listview will only display the first 20 characters of the quote, so
18
+ # it won't destroy the appearance of the listview. When a user clicks on the
19
+ # quote column, a window like the one above will appear.
20
+ #
21
+ # See the example project, "listview_objects" for more.
22
+
23
+ class TextCol
24
+
25
+ include GladeGUI
26
+
27
+ attr_accessor :text, :length_to_display
28
+ #
29
+ # - text - String value of the field
30
+ # - length_to_display - Integer number of characters to display in the listview. Default: 20
31
+ #
32
+ def initialize(text, length_to_display = 20)
33
+ @length_to_display = length_to_display
34
+ @text = text
35
+ end
36
+
37
+ def show()
38
+ load_glade(__FILE__)
39
+ set_glade_variables()
40
+ @builder["window1"].resize 650, 360
41
+ show_window()
42
+ end
43
+
44
+ # The to_s method outputs the string that is shown in the VR::ListView. By default
45
+ # it will display the first 20 characters of the string. If you
46
+ # want to change the number of characters it displays, change the
47
+ # value of the length_to_display variable.
48
+
49
+ def to_s
50
+ (@text.size > @length_to_display ? @text[0, @length_to_display - 4] + "..." : @text).gsub("\n"," ")
51
+ end
52
+
53
+ def buttonSave__clicked(*args) # :nodoc:
54
+ get_glade_variables()
55
+ destroy_window()
56
+ end
57
+
58
+ def <=>(text_col)
59
+ self.text <=> text_col.text
60
+ end
61
+
62
+ end
63
+
64
+ end
@@ -0,0 +1,108 @@
1
+ module VR
2
+
3
+ class TreeViewColumn < Gtk::TreeViewColumn
4
+
5
+ def initialize(view, model_col, sym, type)
6
+ super()
7
+ self.title = sym.to_s.gsub("_", " ").split(' ').map {|w| w.capitalize }.join(' ') # My Title
8
+ @view = view
9
+ self.resizable = true
10
+ cols = (type.is_a? Hash) ? type : {sym => type}
11
+ cols.each_pair do |symb, type|
12
+ a = [model_col, self, @view, symb]
13
+ if type == Gdk::Pixbuf
14
+ ren = VR::CellRendererPixbuf.new(*a)
15
+ self.pack_start( ren, false )
16
+ self.add_attribute( ren, :pixbuf, model_col)
17
+ elsif type == TrueClass
18
+ ren = VR::CellRendererToggle.new(*a)
19
+ self.pack_start( ren, false )
20
+ self.add_attribute( ren, :active, model_col)
21
+ elsif type == VR::SpinCol
22
+ ren = VR::CellRendererSpin.new(*a)
23
+ self.pack_start( ren, false )
24
+ self.add_attribute( ren, :adjustment, model_col)
25
+ self.set_cell_data_func(ren) do |col, renderer, model, iter|
26
+ fmt = "%.#{renderer.digits}f"
27
+ renderer.text = fmt % iter[renderer.model_col].value
28
+ end
29
+ elsif type == VR::ComboCol
30
+ r = VR::CellRendererCombo.new(*a)
31
+ self.pack_start( r, false )
32
+ self.set_cell_data_func(r) do |col, ren, model, iter|
33
+ ren.text = iter[ren.model_col].selected.to_s
34
+ end
35
+ elsif type == VR::ProgressCol
36
+ r = VR::CellRendererProgress.new(*a)
37
+ self.pack_start( r, false )
38
+ self.add_attribute( r, :value, model_col)
39
+ elsif type == DateTime
40
+ r = VR::CellRendererDate.new(*a)
41
+ self.pack_start( r, false )
42
+ self.set_cell_data_func(r) do |col, ren, model, iter|
43
+ ren.text = iter[ren.model_col].strftime(ren.date_format)
44
+ end
45
+ elsif type == String or type == Float or type == Integer or type == Fixnum
46
+ r = VR::CellRendererText.new(*a)
47
+ self.pack_start( r, false )
48
+ self.add_attribute( r, :text, model_col)
49
+ else #user defined object
50
+ r = VR::CellRendererObject.new(*a)
51
+ self.pack_start( r, false )
52
+ self.set_cell_data_func(r) do |col, ren, model, iter|
53
+ ren.render_object(iter)
54
+ end
55
+ end
56
+ model_col = model_col + 1
57
+ end
58
+ end
59
+
60
+ def width=(w) #pixels
61
+ self.sizing = Gtk::TreeViewColumn::FIXED
62
+ self.fixed_width = w
63
+ end
64
+
65
+ def sortable=(is_sortable)
66
+ self.sort_column_id = cell_renderers[0].model_col
67
+ self.clickable = is_sortable
68
+ end
69
+
70
+ end
71
+
72
+ end
73
+ #class VR::TreeViewColumn < Gtk::TreeViewColumn
74
+
75
+ # TYPES = {
76
+ # Gdk::Pixbuf => VR::CellRendererPixbuf,
77
+ # TrueClass => VR::CellRendererToggle,
78
+ # Gtk::Adjustment => VR::CellRendererSpin,
79
+ # VR::Combo => VR::CellRendererCombo,
80
+ # VR::Progress => VR::CellRendererProgress
81
+ # }
82
+ #
83
+ # ATTR = {
84
+ # VR::CellRendererPixbuf => "pixbuf",
85
+ # VR::CellRendererToggle => "active",
86
+ # VR::CellRendererSpin => "adjustment",
87
+ # VR::CellRendererText => "text",
88
+ # VR::CellRendererProgress => "value"
89
+ # }
90
+
91
+
92
+ # def initialize(view, model_col, *args)
93
+ # super()
94
+ # self.resizable = true
95
+ # args = args.flatten
96
+ # args.each do |type|
97
+ # t = TYPES.key?(type) ? TYPES[type] : VR::CellRendererText
98
+ # ren = t.new(model_col, view)
99
+ # self.pack_start( ren, false )
100
+ # self.add_attribute( ren, ATTR[t], model_col) if ATTR.key?(t)
101
+ # model_col = model_col + 1
102
+ # if t.is_a VR::Cell
103
+ # end
104
+ # end
105
+ #end
106
+
107
+
108
+ #end
@@ -0,0 +1,133 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <interface>
3
+ <requires lib="gtk+" version="2.16"/>
4
+ <!-- interface-naming-policy project-wide -->
5
+ <object class="GtkAdjustment" id="hour">
6
+ <property name="lower">1</property>
7
+ <property name="upper">12</property>
8
+ <property name="step_increment">1</property>
9
+ </object>
10
+ <object class="GtkAdjustment" id="minute">
11
+ <property name="upper">59</property>
12
+ <property name="step_increment">1</property>
13
+ </object>
14
+ <object class="GtkWindow" id="window1">
15
+ <property name="modal">True</property>
16
+ <property name="window_position">center-always</property>
17
+ <property name="decorated">False</property>
18
+ <signal name="destroy" handler="destroy_window"/>
19
+ <child>
20
+ <object class="GtkVBox" id="vbox2">
21
+ <property name="visible">True</property>
22
+ <child>
23
+ <object class="GtkCalendar" id="date">
24
+ <property name="visible">True</property>
25
+ <property name="can_focus">True</property>
26
+ <property name="year">2012</property>
27
+ <property name="month">2</property>
28
+ <property name="day">11</property>
29
+ </object>
30
+ <packing>
31
+ <property name="position">0</property>
32
+ </packing>
33
+ </child>
34
+ <child>
35
+ <object class="GtkHBox" id="hboxTime">
36
+ <property name="visible">True</property>
37
+ <child>
38
+ <object class="GtkSpinButton" id="spinbutton1">
39
+ <property name="visible">True</property>
40
+ <property name="can_focus">True</property>
41
+ <property name="invisible_char">•</property>
42
+ <property name="adjustment">hour</property>
43
+ <property name="climb_rate">1</property>
44
+ <property name="numeric">True</property>
45
+ </object>
46
+ <packing>
47
+ <property name="position">0</property>
48
+ </packing>
49
+ </child>
50
+ <child>
51
+ <object class="GtkSpinButton" id="spinbutton2">
52
+ <property name="visible">True</property>
53
+ <property name="can_focus">True</property>
54
+ <property name="invisible_char">•</property>
55
+ <property name="adjustment">minute</property>
56
+ <property name="numeric">True</property>
57
+ </object>
58
+ <packing>
59
+ <property name="padding">5</property>
60
+ <property name="position">1</property>
61
+ </packing>
62
+ </child>
63
+ <child>
64
+ <object class="GtkCheckButton" id="am">
65
+ <property name="label" translatable="yes">am</property>
66
+ <property name="visible">True</property>
67
+ <property name="can_focus">True</property>
68
+ <property name="receives_default">False</property>
69
+ <property name="draw_indicator">True</property>
70
+ </object>
71
+ <packing>
72
+ <property name="position">2</property>
73
+ </packing>
74
+ </child>
75
+ <child>
76
+ <object class="GtkCheckButton" id="pm">
77
+ <property name="label" translatable="yes">pm</property>
78
+ <property name="visible">True</property>
79
+ <property name="can_focus">True</property>
80
+ <property name="receives_default">False</property>
81
+ <property name="draw_indicator">True</property>
82
+ </object>
83
+ <packing>
84
+ <property name="position">3</property>
85
+ </packing>
86
+ </child>
87
+ </object>
88
+ <packing>
89
+ <property name="padding">5</property>
90
+ <property name="position">1</property>
91
+ </packing>
92
+ </child>
93
+ <child>
94
+ <object class="GtkHButtonBox" id="hbuttonbox1">
95
+ <property name="visible">True</property>
96
+ <property name="spacing">8</property>
97
+ <property name="layout_style">center</property>
98
+ <child>
99
+ <object class="GtkButton" id="buttonSave">
100
+ <property name="label" translatable="yes">Save</property>
101
+ <property name="visible">True</property>
102
+ <property name="can_focus">True</property>
103
+ <property name="receives_default">True</property>
104
+ </object>
105
+ <packing>
106
+ <property name="expand">False</property>
107
+ <property name="fill">False</property>
108
+ <property name="position">0</property>
109
+ </packing>
110
+ </child>
111
+ <child>
112
+ <object class="GtkButton" id="buttonCancel">
113
+ <property name="label" translatable="yes">Cancel</property>
114
+ <property name="visible">True</property>
115
+ <property name="can_focus">True</property>
116
+ <property name="receives_default">True</property>
117
+ </object>
118
+ <packing>
119
+ <property name="expand">False</property>
120
+ <property name="fill">False</property>
121
+ <property name="position">1</property>
122
+ </packing>
123
+ </child>
124
+ </object>
125
+ <packing>
126
+ <property name="padding">5</property>
127
+ <property name="position">2</property>
128
+ </packing>
129
+ </child>
130
+ </object>
131
+ </child>
132
+ </object>
133
+ </interface>
@@ -0,0 +1,16 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <interface>
3
+ <requires lib="gtk+" version="2.16"/>
4
+ <!-- interface-naming-policy project-wide -->
5
+ <object class="GtkWindow" id="window1">
6
+ <property name="visible">True</property>
7
+ <property name="modal">True</property>
8
+ <signal name="destroy" handler="destroy_window"/>
9
+ <child>
10
+ <object class="GtkImage" id="image1">
11
+ <property name="visible">True</property>
12
+ <property name="stock">gtk-missing-image</property>
13
+ </object>
14
+ </child>
15
+ </object>
16
+ </interface>
@@ -0,0 +1,77 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <interface>
3
+ <requires lib="gtk+" version="2.16"/>
4
+ <!-- interface-naming-policy project-wide -->
5
+ <object class="GtkWindow" id="window1">
6
+ <property name="title" translatable="yes">Edit Text</property>
7
+ <property name="modal">True</property>
8
+ <property name="window_position">center-always</property>
9
+ <property name="type_hint">menu</property>
10
+ <signal name="destroy" handler="destroy_window"/>
11
+ <child>
12
+ <object class="GtkHBox" id="hbox1">
13
+ <property name="visible">True</property>
14
+ <child>
15
+ <object class="GtkVBox" id="vbox1">
16
+ <property name="visible">True</property>
17
+ <child>
18
+ <object class="GtkTextView" id="text">
19
+ <property name="visible">True</property>
20
+ <property name="can_focus">True</property>
21
+ <property name="wrap_mode">word</property>
22
+ </object>
23
+ <packing>
24
+ <property name="padding">6</property>
25
+ <property name="position">0</property>
26
+ </packing>
27
+ </child>
28
+ <child>
29
+ <object class="GtkHButtonBox" id="hbuttonbox1">
30
+ <property name="visible">True</property>
31
+ <property name="spacing">7</property>
32
+ <property name="layout_style">end</property>
33
+ <child>
34
+ <object class="GtkButton" id="buttonSave">
35
+ <property name="label" translatable="yes">Save</property>
36
+ <property name="visible">True</property>
37
+ <property name="can_focus">True</property>
38
+ <property name="receives_default">True</property>
39
+ </object>
40
+ <packing>
41
+ <property name="expand">False</property>
42
+ <property name="fill">False</property>
43
+ <property name="position">0</property>
44
+ </packing>
45
+ </child>
46
+ <child>
47
+ <object class="GtkButton" id="buttonCancel">
48
+ <property name="label" translatable="yes">Cancel</property>
49
+ <property name="visible">True</property>
50
+ <property name="can_focus">True</property>
51
+ <property name="receives_default">True</property>
52
+ <signal name="clicked" handler="destroy_window"/>
53
+ </object>
54
+ <packing>
55
+ <property name="expand">False</property>
56
+ <property name="fill">False</property>
57
+ <property name="position">1</property>
58
+ </packing>
59
+ </child>
60
+ </object>
61
+ <packing>
62
+ <property name="expand">False</property>
63
+ <property name="fill">False</property>
64
+ <property name="padding">5</property>
65
+ <property name="position">1</property>
66
+ </packing>
67
+ </child>
68
+ </object>
69
+ <packing>
70
+ <property name="padding">7</property>
71
+ <property name="position">0</property>
72
+ </packing>
73
+ </child>
74
+ </object>
75
+ </child>
76
+ </object>
77
+ </interface>