manqod 1.1505.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (142) hide show
  1. data/bin/manqod +309 -0
  2. data/doc/HOWTOS +11 -0
  3. data/doc/INSTALL +6 -0
  4. data/doc/LICENCE +450 -0
  5. data/doc/README +33 -0
  6. data/doc/benchmarkings/ListLoader.rb +177 -0
  7. data/doc/manqod.png +0 -0
  8. data/doc/manqod.svg +99 -0
  9. data/doc/server.conf.example +24 -0
  10. data/lib/About.rb +93 -0
  11. data/lib/BarMenu/BarMenuItem.rb +46 -0
  12. data/lib/BarMenu.rb +76 -0
  13. data/lib/ButtonMenu/ButtonMenuItem.rb +82 -0
  14. data/lib/ButtonMenu/EndSeparator.rb +14 -0
  15. data/lib/ButtonMenu/StartSeparator.rb +14 -0
  16. data/lib/ButtonMenu.rb +154 -0
  17. data/lib/Common/Conf.rb +119 -0
  18. data/lib/Common/Eprint.rb +180 -0
  19. data/lib/Common/EventCache.rb +41 -0
  20. data/lib/Common/Fixnum.rb +18 -0
  21. data/lib/Common/Images.rb +41 -0
  22. data/lib/Common/ManqodDB.rb +40 -0
  23. data/lib/Common/MyExec.rb +77 -0
  24. data/lib/Common/MyImage.rb +47 -0
  25. data/lib/Common/Nick.rb +25 -0
  26. data/lib/Common/String.rb +15 -0
  27. data/lib/FormHolder/Form/InputHolder/Button.rb +133 -0
  28. data/lib/FormHolder/Form/InputHolder/Calendar.rb +101 -0
  29. data/lib/FormHolder/Form/InputHolder/CalendarButton.rb +117 -0
  30. data/lib/FormHolder/Form/InputHolder/ColorButton.rb +54 -0
  31. data/lib/FormHolder/Form/InputHolder/Combo.rb +82 -0
  32. data/lib/FormHolder/Form/InputHolder/ComboWithNew.rb +103 -0
  33. data/lib/FormHolder/Form/InputHolder/Common/Model.rb +337 -0
  34. data/lib/FormHolder/Form/InputHolder/ConstCombo.rb +18 -0
  35. data/lib/FormHolder/Form/InputHolder/ConstText.rb +17 -0
  36. data/lib/FormHolder/Form/InputHolder/Duration.rb +73 -0
  37. data/lib/FormHolder/Form/InputHolder/EditableList.rb +57 -0
  38. data/lib/FormHolder/Form/InputHolder/FieldCombo.rb +40 -0
  39. data/lib/FormHolder/Form/InputHolder/FieldList.rb +40 -0
  40. data/lib/FormHolder/Form/InputHolder/FileChooser.rb +131 -0
  41. data/lib/FormHolder/Form/InputHolder/FontButton.rb +37 -0
  42. data/lib/FormHolder/Form/InputHolder/FormImage.rb +74 -0
  43. data/lib/FormHolder/Form/InputHolder/HScale.rb +44 -0
  44. data/lib/FormHolder/Form/InputHolder/Hidden.rb +41 -0
  45. data/lib/FormHolder/Form/InputHolder/Label.rb +40 -0
  46. data/lib/FormHolder/Form/InputHolder/List.rb +176 -0
  47. data/lib/FormHolder/Form/InputHolder/MultiLine.rb +63 -0
  48. data/lib/FormHolder/Form/InputHolder/Password.rb +41 -0
  49. data/lib/FormHolder/Form/InputHolder/QBuilder/QObject.rb +269 -0
  50. data/lib/FormHolder/Form/InputHolder/QBuilder.rb +333 -0
  51. data/lib/FormHolder/Form/InputHolder/RadioGroup.rb +82 -0
  52. data/lib/FormHolder/Form/InputHolder/SourceView.rb +100 -0
  53. data/lib/FormHolder/Form/InputHolder/Spin.rb +49 -0
  54. data/lib/FormHolder/Form/InputHolder/Text.rb +55 -0
  55. data/lib/FormHolder/Form/InputHolder/TimeStamp.rb +82 -0
  56. data/lib/FormHolder/Form/InputHolder/TimeStampButton.rb +93 -0
  57. data/lib/FormHolder/Form/InputHolder/Toggle.rb +43 -0
  58. data/lib/FormHolder/Form/InputHolder.rb +458 -0
  59. data/lib/FormHolder/Form.rb +529 -0
  60. data/lib/FormHolder.rb +203 -0
  61. data/lib/Gtk.rb +101 -0
  62. data/lib/GtkAttributes.rb +76 -0
  63. data/lib/Kernel.rb +48 -0
  64. data/lib/ListHolder/EditableList/CellRenderers/Combo.rb +91 -0
  65. data/lib/ListHolder/EditableList/CellRenderers/ComboText.rb +22 -0
  66. data/lib/ListHolder/EditableList/CellRenderers/ConstCombo.rb +12 -0
  67. data/lib/ListHolder/EditableList/CellRenderers/ConstText.rb +23 -0
  68. data/lib/ListHolder/EditableList/CellRenderers/Pixbuf.rb +18 -0
  69. data/lib/ListHolder/EditableList/CellRenderers/Progress.rb +36 -0
  70. data/lib/ListHolder/EditableList/CellRenderers/Text.rb +51 -0
  71. data/lib/ListHolder/EditableList/CellRenderers/Toggle.rb +35 -0
  72. data/lib/ListHolder/EditableList/Column.rb +223 -0
  73. data/lib/ListHolder/EditableList/DrbListModel.rb +809 -0
  74. data/lib/ListHolder/EditableList/ListPrintOperation/ColumnsHeaderLayout.rb +56 -0
  75. data/lib/ListHolder/EditableList/ListPrintOperation/CustomPageSetup.rb +100 -0
  76. data/lib/ListHolder/EditableList/ListPrintOperation/FooterLayout.rb +26 -0
  77. data/lib/ListHolder/EditableList/ListPrintOperation/HeaderLayout.rb +35 -0
  78. data/lib/ListHolder/EditableList/ListPrintOperation/IterLayout.rb +89 -0
  79. data/lib/ListHolder/EditableList/ListPrintOperation.rb +365 -0
  80. data/lib/ListHolder/EditableList.rb +309 -0
  81. data/lib/ListHolder/GanttHolder/Gantt/Rectangle.rb +290 -0
  82. data/lib/ListHolder/GanttHolder/Gantt.rb +317 -0
  83. data/lib/ListHolder/GanttHolder/GanttFooter.rb +27 -0
  84. data/lib/ListHolder/GanttHolder/GanttScaler.rb +60 -0
  85. data/lib/ListHolder/GanttHolder.rb +31 -0
  86. data/lib/ListHolder/HistoryWindow.rb +63 -0
  87. data/lib/ListHolder/ListButtonHolder/ArchiveButton.rb +37 -0
  88. data/lib/ListHolder/ListButtonHolder/ButtonGroup.rb +32 -0
  89. data/lib/ListHolder/ListButtonHolder/FilterButton.rb +28 -0
  90. data/lib/ListHolder/ListButtonHolder/ListButton.rb +305 -0
  91. data/lib/ListHolder/ListButtonHolder/OrderingButton.rb +26 -0
  92. data/lib/ListHolder/ListButtonHolder/SumPanelButton.rb +23 -0
  93. data/lib/ListHolder/ListButtonHolder.rb +94 -0
  94. data/lib/ListHolder/ListPanel/ListFilter/FRenderer/Combo.rb +94 -0
  95. data/lib/ListHolder/ListPanel/ListFilter/FRenderer/ConstCombo.rb +11 -0
  96. data/lib/ListHolder/ListPanel/ListFilter/FRenderer/Text.rb +26 -0
  97. data/lib/ListHolder/ListPanel/ListFilter/FRenderer/Toggle.rb +41 -0
  98. data/lib/ListHolder/ListPanel/ListFilter/FRenderer.rb +58 -0
  99. data/lib/ListHolder/ListPanel/ListFilter.rb +42 -0
  100. data/lib/ListHolder/ListPanel/ListSum/Text.rb +32 -0
  101. data/lib/ListHolder/ListPanel/ListSum.rb +72 -0
  102. data/lib/ListHolder/ListPanel.rb +60 -0
  103. data/lib/ListHolder.rb +241 -0
  104. data/lib/LoginWindow.rb +77 -0
  105. data/lib/MainRouter.rb +64 -0
  106. data/lib/ManqodCommon.rb +295 -0
  107. data/lib/ManqodHelp/FormatEditor/FormatJustificationWidget.rb +76 -0
  108. data/lib/ManqodHelp/FormatsEditor.rb +139 -0
  109. data/lib/ManqodHelp/HelpBrowser/FormatTagTable/FormatTag.rb +84 -0
  110. data/lib/ManqodHelp/HelpBrowser/FormatTagTable.rb +39 -0
  111. data/lib/ManqodHelp/HelpBrowser.rb +135 -0
  112. data/lib/ManqodHelp/HelpIndex.rb +62 -0
  113. data/lib/ManqodHelp/HelpToolbar.rb +16 -0
  114. data/lib/ManqodHelp.rb +120 -0
  115. data/lib/ManqodRPC.rb +37 -0
  116. data/lib/Memcache.rb +82 -0
  117. data/lib/MyConfig.rb +93 -0
  118. data/lib/Print/PrintItem/TextLayout.rb +47 -0
  119. data/lib/Print/PrintItem.rb +240 -0
  120. data/lib/Print.rb +199 -0
  121. data/lib/PrintEditor/ItemInfo/ItemImage.rb +30 -0
  122. data/lib/PrintEditor/ItemInfo/ItemList.rb +44 -0
  123. data/lib/PrintEditor/ItemInfo/ItemTextAlignment.rb +27 -0
  124. data/lib/PrintEditor/ItemInfo.rb +129 -0
  125. data/lib/PrintEditor/PageLayout.rb +91 -0
  126. data/lib/PrintEditor/PrintEditorItem.rb +310 -0
  127. data/lib/PrintEditor.rb +195 -0
  128. data/lib/RelationBuilder/RTable/RField.rb +91 -0
  129. data/lib/RelationBuilder/RTable.rb +293 -0
  130. data/lib/RelationBuilder/Relation/RelationHandle.rb +70 -0
  131. data/lib/RelationBuilder/Relation.rb +161 -0
  132. data/lib/RelationBuilder/RunQuery.rb +55 -0
  133. data/lib/RelationBuilder/SearchWindow.rb +72 -0
  134. data/lib/RelationBuilder.rb +468 -0
  135. data/lib/SB/ListProgress.rb +150 -0
  136. data/lib/SB/Messaging.rb +77 -0
  137. data/lib/SB.rb +29 -0
  138. data/lib/mynotebook.rb +131 -0
  139. data/lib/mytouchwindow.rb +162 -0
  140. data/lib/mywindow.rb +134 -0
  141. data/lib/wysiwyg-print-label.rb +57 -0
  142. metadata +231 -0
@@ -0,0 +1,133 @@
1
+ #this file is part of manqod
2
+ #manqod is distributed under the CDDL licence
3
+ #the author of manqod is Dobai-Pataky Balint(dpblnt@gmail.com)
4
+
5
+ class MyRendererButton < Gtk::Button
6
+ include ManqodCommon
7
+ include Conf
8
+ include MyExec
9
+ def initialize(pc)
10
+ @pc=pc
11
+ super(item['description'])
12
+ set_relief(Gtk::ReliefStyle::NONE)
13
+ set_image_position(Gtk::PositionType::RIGHT)
14
+ set_use_underline(true)
15
+ signal_connect('clicked'){|me|
16
+ edebug("#{item['default']} clicked","gtk_button","debug")
17
+ run_events(item['id'],'form_item-Action')
18
+ unless target == "-1" || target == "0"
19
+ if modname=='form'
20
+ @form=Myform::MyFormHolder.new("dialog",self,@pc.target_runmode,target)
21
+ @form.set_parentM(parentM)
22
+ ret=@form.run(text.to_i)
23
+ update(ret) if ret and ret>0
24
+ notify_changes
25
+ else
26
+ mr=MainRouter.new(w=Gtk::Dialog.new)
27
+ w.vbox.
28
+ pack_start(Gtk::HBox.new.
29
+ pack_start(back_button=Gtk::Button.new(Gtk::Stock::GO_BACK),false,false).
30
+ pack_start(clear_button=Gtk::Button.new(Gtk::Stock::CLEAR),false,false),
31
+ false,false).
32
+ pack_start(mr)
33
+ back_button.signal_connect("clicked"){|me,ev|
34
+ update(mr.child.list.get_cursor_id.to_s)
35
+ w.destroy
36
+ notify_changes
37
+ }
38
+ clear_button.signal_connect("clicked"){|me,ev|
39
+ update("-1")
40
+ w.destroy
41
+ notify_changes
42
+ }
43
+ if sw=get_conf(target,0,"width") and sh=get_conf(target,0,"height")
44
+ w.resize(sw.to_i,sh.to_i)# if sw.to_i * sh.to_i >0
45
+ else
46
+ w.resize(600,400)
47
+ end
48
+ sx=get_conf(target,0,"x") || 50
49
+ sy=get_conf(target,0,"y") || 60
50
+ w.move(sx.to_i,sy.to_i)
51
+
52
+ w.maximize if get_conf(target,0,"maximized") == "true"
53
+ w.iconify if get_conf(target,0,"iconified") == "true"
54
+ w.fullscreen if get_conf(target,0,"fullscreen") == "true"
55
+
56
+ w.set_resizable(true).set_transient_for(@pc.caller.get_ancestor(Gtk::Window)).set_modal(true).show_all
57
+ w.signal_connect("configure-event"){|me,event|
58
+ if nick
59
+ set_conf(target,0,"width",event.width.to_s)
60
+ set_conf(target,0,"height",event.height.to_s)
61
+ set_conf(target,0,"x",event.x.to_s)
62
+ set_conf(target,0,"y",event.y.to_s)
63
+ end
64
+ false
65
+ }
66
+ w.signal_connect("window-state-event"){|me,event|
67
+ if nick
68
+ set_conf(target,0,"maximized",(event.new_window_state & Gdk::EventWindowState::MAXIMIZED == Gdk::EventWindowState::MAXIMIZED).to_s)
69
+ set_conf(target,0,"minimized",(event.new_window_state & Gdk::EventWindowState::ICONIFIED == Gdk::EventWindowState::ICONIFIED).to_s)
70
+ set_conf(target,0,"minimized",(event.new_window_state & Gdk::EventWindowState::FULLSCREEN == Gdk::EventWindowState::FULLSCREEN).to_s)
71
+ end
72
+ false
73
+ }
74
+
75
+ mr.update(self)
76
+ mr.child.list.set_cursor_id(text.to_i)
77
+ end
78
+ end
79
+ }
80
+ end
81
+ attr_accessor :pc
82
+
83
+ def modname
84
+ @pc.target_module
85
+ end
86
+ def update(new_value=item['default'])
87
+ item['default']=new_value
88
+ run_events(item['id'],'form_item-BeforeUpdate')
89
+ pc.run_query
90
+ if @pc.type_def.size == 0
91
+ set_label(item['default'])
92
+ else
93
+ s=""
94
+ @pc.type_def.each_pair{|key,value|
95
+ s="#{s}\n" if s.size>0
96
+ s="#{s}#{@pc.query_result[key]}" if @pc.query_result.has_key?(key)
97
+ }
98
+ set_label(s)
99
+ set_image(Gtk::Image.new((text=="-1" || text=="0" ? Gtk::Stock::ADD : Gtk::Stock::EDIT ),Gtk::IconSize.from_name(get_conf(0,0,"button-size"))))
100
+ notify_changes
101
+ end
102
+ edebug("#{text} updated","gtk_button","info")
103
+ run_events(item['id'],'form_item-AfterUpdate')
104
+ end
105
+
106
+ def text
107
+ item['default'].to_s
108
+ end
109
+
110
+ def parentM
111
+ pc.parentM
112
+ end
113
+
114
+ def target
115
+ item['to_call']
116
+ end
117
+ def item
118
+ pc.item
119
+ end
120
+ def inspect
121
+ "Button(#{item['description']})"
122
+ end
123
+ def to_s
124
+ inspect
125
+ end
126
+
127
+ def notify_changes
128
+ edebug("'#{item['data']}' changed","form")
129
+ pc.changed
130
+ pc.notify_observers(self)
131
+ edebug("'#{item['data']}' emiting 'changed' to observers","form")
132
+ end
133
+ end
@@ -0,0 +1,101 @@
1
+ #this file is part of manqod
2
+ #manqod is distributed under the CDDL licence
3
+ #the author of manqod is Dobai-Pataky Balint(dpblnt@gmail.com)
4
+
5
+ class MyRendererCalendar < Gtk::Calendar
6
+ include ManqodCommon
7
+ def initialize(pc)
8
+ @pc=pc
9
+ super()
10
+ set_show_details(true) if respond_to?("set_show_details")
11
+ set_show_week_numbers(true)
12
+ show_day_names=true
13
+ signal_connect("next-year"){|me|
14
+ run_events(item['id'],'form_item-Action')
15
+ pc.changed
16
+ pc.notify_observers(self)
17
+ }
18
+ signal_connect("prev-year"){|me|
19
+ run_events(item['id'],'form_item-Action')
20
+ pc.changed
21
+ pc.notify_observers(self)
22
+ }
23
+
24
+ signal_connect("month-changed"){|me|
25
+ run_events(item['id'],'form_item-Action')
26
+ pc.changed
27
+ pc.notify_observers(self)
28
+ }
29
+
30
+ signal_connect("day-selected"){|me|
31
+ check_limits
32
+ run_events(item['id'],'form_item-Action')
33
+ pc.changed
34
+ pc.notify_observers(self)
35
+ }
36
+ end
37
+ attr_accessor :pc
38
+
39
+ def item
40
+ pc.item
41
+ end
42
+
43
+ def check_limits
44
+ @last_text=item["default"] if @last_text.nil?
45
+ if pc.get_min and pc.get_min > text
46
+ tell_exception("min:#{pc.get_min}")
47
+ set_text(@last_text)
48
+ return false
49
+ end
50
+ if pc.get_max and pc.get_max < text
51
+ tell_exception("max:#{pc.get_max}")
52
+ set_text(@last_text)
53
+ return false
54
+ end
55
+ @last_text=text
56
+ return true
57
+ end
58
+
59
+ def text
60
+ d=self.date
61
+ return lzero(d[0],4).to_s+"-"+lzero(d[1],2).to_s+"-"+lzero(d[2],2).to_s
62
+ end
63
+
64
+ def set_text(t)
65
+ if t != nil
66
+ tt=t.split(" ")
67
+ if tt[0] != nil
68
+ f=tt[0].split('-')
69
+ if f[0].nil? or f[0].to_i==0
70
+ f[0]=Time.now.year
71
+ f[1]=Time.now.month
72
+ f[2]=Time.now.day
73
+ end
74
+
75
+ set_year(f[0].to_i) if f[0]
76
+ set_month(f[1].to_i-1) if f[1]
77
+ if f[2]
78
+ set_day(f[2].to_i)
79
+ mark_day(f[2].to_i)
80
+ end
81
+ end
82
+ end
83
+ end
84
+
85
+ def update(new_value=item['default'])
86
+ item['default']=new_value
87
+ run_events(item['id'],'form_item-BeforeUpdate')
88
+ pc.run_query
89
+ set_text(item['default']) if item['default']
90
+ run_events(item['id'],'form_item-AfterUpdate')
91
+ end
92
+
93
+ def parentselected
94
+ pc.parentselected
95
+ end
96
+
97
+ def parentM
98
+ pc.parentM
99
+ end
100
+ end
101
+
@@ -0,0 +1,117 @@
1
+ #this file is part of manqod
2
+ #manqod is distributed under the CDDL licence
3
+ #the author of manqod is Dobai-Pataky Balint(dpblnt@gmail.com)
4
+
5
+ class MyRendererCalendarButton < Gtk::Button
6
+ include ManqodCommon
7
+ include Conf
8
+ include MyExec
9
+ def initialize(pc)
10
+ @pc=pc
11
+ super(item['description'])
12
+ @calendar_win=Gtk::Window.new(Gtk::Window::POPUP)
13
+ @calendar_win.set_modal(true).set_has_frame(false).add(@calendar=Gtk::Calendar.new).set_transient_for(@pc.caller.get_ancestor(Gtk::Window))
14
+
15
+ @calendar.set_show_details(true) if @calendar.respond_to?("set_show_details")
16
+ @calendar.show_day_names=true
17
+ @calendar.signal_connect("month-changed"){|me|
18
+ @month_changed=true
19
+ }
20
+
21
+ @calendar.signal_connect("day-selected"){|me|
22
+ run_events(item['id'],'form_item-Action')
23
+ set_label(calendar_text)
24
+ if @month_changed
25
+ @month_changed=false
26
+ else
27
+ @calendar_win.hide
28
+ end
29
+ pc.changed
30
+ pc.notify_observers(self)
31
+ }
32
+ @calendar.signal_connect("key-release-event"){|me,ev| @calendar_win.hide if ev.keyval == Gdk::Keyval::GDK_KEY_Escape}
33
+
34
+ signal_connect('clicked'){|me|
35
+ edebug("#{item['default']} clicked","gtk_button")
36
+ x,y=@pc.caller.get_ancestor(Gtk::Window).position
37
+ xd,yd=translate_coordinates(@pc.caller.get_ancestor(Gtk::Window),x,y+allocation.height+allocation.y)
38
+ @calendar_win.move(xd,yd)
39
+ @calendar_win.show_all
40
+ }
41
+ end
42
+ attr_accessor :pc
43
+
44
+ def update(new_value=item['default'])
45
+ item['default']=new_value
46
+ run_events(item['id'],'form_item-BeforeUpdate')
47
+ pc.run_query
48
+ set_text(item['default'])
49
+ einfo("updated","gtk_button")
50
+ run_events(item['id'],'form_item-AfterUpdate')
51
+ end
52
+
53
+ def text
54
+ label
55
+ end
56
+
57
+ def calendar_text
58
+ d=@calendar.date
59
+ return lzero(d[0],4).to_s+"-"+lzero(d[1],2).to_s+"-"+lzero(d[2],2).to_s
60
+ end
61
+
62
+ def set_text(t)
63
+ if t != nil
64
+ tt=t.split(" ")
65
+ if tt[0] != nil
66
+ f=tt[0].split('-')
67
+ if f[0].nil? or f[0].to_i==0
68
+ f[0]=Time.now.year
69
+ f[1]=Time.now.month
70
+ f[2]=Time.now.day
71
+ end
72
+
73
+ @calendar.set_year(f[0].to_i) if f[0]
74
+ @calendar.set_month(f[1].to_i-1) if f[1]
75
+ if f[2]
76
+ @calendar.set_day(f[2].to_i)
77
+ @calendar.mark_day(f[2].to_i)
78
+ end
79
+ end
80
+ end
81
+ set_label(calendar_text)
82
+ end
83
+
84
+ def check_limits
85
+ @last_text=item["default"] if @last_text.nil?
86
+ if pc.get_min and pc.get_min > text
87
+ warn("min:#{pc.get_min}")
88
+ set_text(@last_text)
89
+ return false
90
+ end
91
+ if pc.get_max and pc.get_max < text
92
+ warn("max:#{pc.get_max}")
93
+ set_text(@last_text)
94
+ return false
95
+ end
96
+ @last_text=text
97
+ return true
98
+ end
99
+
100
+ def parentM
101
+ pc.parentM
102
+ end
103
+
104
+ def target
105
+ item['to_call']
106
+ end
107
+ def item
108
+ pc.item
109
+ end
110
+ def inspect
111
+ "CalendarButton(#{item['description']})"
112
+ end
113
+ def to_s
114
+ inspect
115
+ end
116
+
117
+ end
@@ -0,0 +1,54 @@
1
+ #this file is part of manqod
2
+ #manqod is distributed under the CDDL licence
3
+ #the author of manqod is Dobai-Pataky Balint(dpblnt@gmail.com)
4
+
5
+ class MyRendererColorButton < Gtk::ColorButton
6
+ include ManqodCommon
7
+ include Conf
8
+ def initialize(pc)
9
+ @pc=pc
10
+ super()
11
+ set_use_alpha(false)
12
+ signal_connect('clicked'){|me|
13
+ edebug("#{item['default']} clicked","gtk_button","debug")
14
+ run_events(item['id'],'form_item-Action')
15
+ }
16
+ end
17
+ attr_accessor :pc
18
+
19
+ def update(new_value=item['default'])
20
+ item['default']=new_value
21
+ run_events(item['id'],'form_item-BeforeUpdate')
22
+ begin
23
+ set_color(Gdk::Color.parse("##{item['default']}"))
24
+ rescue => err
25
+ ewarn("#{item['default'].inspect} not a valid color")
26
+ end
27
+ edebug(item['default'].to_s+" updated","gtk_button","info")
28
+ run_events(item['id'],'form_item-AfterUpdate')
29
+ end
30
+
31
+ def text
32
+ t=""
33
+ color.to_a.each{|i| t="#{t}#{sprintf("%02x",i/255)}"}
34
+ t
35
+ end
36
+
37
+ def parentM
38
+ pc.parentM
39
+ end
40
+
41
+ def target
42
+ nil
43
+ end
44
+ def item
45
+ pc.item
46
+ end
47
+ def inspect
48
+ "ColorButton(#{item['description']})"
49
+ end
50
+ def to_s
51
+ inspect
52
+ end
53
+
54
+ end
@@ -0,0 +1,82 @@
1
+ #this file is part of manqod
2
+ #manqod is distributed under the CDDL licence
3
+ #the author of manqod is Dobai-Pataky Balint(dpblnt@gmail.com)
4
+
5
+ class MyRendererCombo < Gtk::ComboBox
6
+ include ManqodCommon
7
+ include GtkAttributes
8
+
9
+ def initialize(pc)
10
+ @pc=pc
11
+ super(false)
12
+ item['wantnew']=true
13
+ set_model(MyRendererModel.new(self))
14
+ signal_connect('changed'){|me|
15
+ edebug(inspect+" '#{item['data']}' changed to item #{me.active.inspect}","form-combo","debug")
16
+ pc.changed
17
+ pc.notify_observers(self)
18
+ edebug("'#{item['data']}' emiting 'changed' to observers","form-combo","debug")
19
+ run_events(item['id'],'form_item-Action')
20
+ }
21
+ end
22
+
23
+ attr_accessor :pc
24
+
25
+ def item
26
+ pc.item
27
+ end
28
+
29
+
30
+ def update(new_value=item['default'])
31
+ item['default']=new_value
32
+ edebug("update called for #{inspect}, setting value #{new_value}","form-combo","debug")
33
+ run_events(item['id'],'form_item-BeforeUpdate')
34
+ model.update
35
+ select_value(item['default'])
36
+ run_events(item['id'],'form_item-AfterUpdate')
37
+ end
38
+
39
+ def get_value_from_text(selected_combo_text)
40
+ selected_combo_value=nil
41
+ model.mymodel.each {|model, path, iter| selected_combo_value=iter[0] if iter[1]==selected_combo_text }
42
+ return selected_combo_value
43
+ end
44
+
45
+ def get_text_from_value(selected_combo_value)
46
+ selected_combo_text=nil
47
+ model.mymodel.each {|model, path, iter| selected_combo_text=iter[0] if iter[1]==selected_combo_value }
48
+ return selected_combo_text
49
+ end
50
+
51
+ def text
52
+ if active_iter
53
+ self.active_iter[0]
54
+ else
55
+ ""
56
+ end
57
+ end
58
+
59
+ def select_value(selected_value=item['default'])
60
+ item['default']=selected_value.to_s
61
+ found_and_selected=false
62
+ model.mymodel.each {|m, path, iter|
63
+ if iter[0]==item['default']
64
+ set_active_iter(model.convert_child_iter_to_iter(iter))
65
+ found_and_selected=true
66
+ end
67
+ }
68
+ found_and_selected
69
+ end
70
+
71
+ def parentselected
72
+ pc.parentselected
73
+ end
74
+ def parentM
75
+ pc.parentM
76
+ end
77
+ def to_s
78
+ "Combo(#{item['description']})"
79
+ end
80
+
81
+ end
82
+
@@ -0,0 +1,103 @@
1
+ #this file is part of manqod
2
+ #manqod is distributed under the CDDL licence
3
+ #the author of manqod is Dobai-Pataky Balint(dpblnt@gmail.com)
4
+
5
+ class MyRendererComboWithNew < Gtk::HBox
6
+ include ManqodCommon
7
+ include Myform
8
+ include GtkAttributes
9
+ class ComboButton < Gtk::Button
10
+ include ManqodCommon
11
+ include Observable
12
+ def initialize
13
+ super()
14
+ set_label("")
15
+ set_image(Gtk::Image.new(Gtk::Stock::INDEX,Gtk::IconSize::MENU))
16
+ set_relief(Gtk::ReliefStyle::NONE)
17
+ end
18
+
19
+ def update(notifier)
20
+ set_image(Gtk::Image.new(
21
+ case notifier.parentM.runmode
22
+ when "info" then Gtk::Stock::INFO
23
+ when "wysiwygf" then Gtk::Stock::PROPERTIES
24
+ else (notifier.text=="-1" || notifier.text=="" ? Gtk::Stock::ADD : Gtk::Stock::EDIT )
25
+ end ,Gtk::IconSize::MENU))
26
+ end
27
+ end
28
+
29
+ def initialize(pc)
30
+ @pc=pc
31
+ item['wantnew']=true
32
+ super()
33
+ @combo=MyRendererCombo.new(pc)
34
+ @button=ComboButton.new
35
+ pc.add_observer(button)
36
+ pack_start(combo,true,true,0)
37
+ button.signal_connect('clicked'){|c|
38
+ @form=Myform::MyFormHolder.new("dialog",self,@pc.target_runmode,target)
39
+ @form.set_parentM(parentM)
40
+ ret=form.run(text.to_i)
41
+ combo.update(ret) if ret and ret>0
42
+ }
43
+ pack_end(button,false,false,0)
44
+ end
45
+ attr_accessor :combo
46
+ attr_accessor :button
47
+ attr_accessor :pc
48
+ attr_accessor :form
49
+
50
+ def update(to_select=item['default'])
51
+ combo.update(to_select)
52
+ button.update(combo)
53
+ end
54
+
55
+ def item
56
+ pc.item
57
+ end
58
+
59
+ def text
60
+ combo.text
61
+ end
62
+
63
+ def select_value(selected_value)
64
+ combo.select_value(selected_value)
65
+ end
66
+
67
+ def get_text_from_value(selected_combo_value)
68
+ combo.get_text_from_value(selected_combo_value)
69
+ end
70
+
71
+ def get_value_from_text(selected_combo_text)
72
+ combo.get_value_from_text(selected_combo_text)
73
+ end
74
+
75
+ def target
76
+ pc.target
77
+ end
78
+
79
+ def parentM
80
+ pc.parentM
81
+ end
82
+
83
+ def query
84
+ parentM.query
85
+ end
86
+
87
+ def set_sensitive(sens)
88
+ @combo.set_sensitive(sens)
89
+ self
90
+ end
91
+
92
+ def model
93
+ combo.model
94
+ end
95
+
96
+ def qrow
97
+ parentM.qrow
98
+ end
99
+ def inspect
100
+ "Combo(#{item["description"]})"
101
+ end
102
+
103
+ end