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,35 @@
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 MyCellRendererToggle < Gtk::CellRendererToggle
6
+ def initialize(column)
7
+ super()
8
+ signal_connect("editing-started"){|cell, editable, path|
9
+ false
10
+ }
11
+ signal_connect("toggled"){|me,path|
12
+ @column.list.list_model.change_value_of_path(path,@column.header['data'],!active?)
13
+ }
14
+ end
15
+
16
+ def set_column(column)
17
+ @column=column
18
+ set_activatable(@column.header['editable']=="true")
19
+ end
20
+
21
+ def text
22
+ active
23
+ end
24
+ def set_wrap_width(width)
25
+ #we don't wrap this :)
26
+ end
27
+ def data
28
+ header["data"]
29
+ end
30
+
31
+ def set_font(font)
32
+ #doing nothing here
33
+ end
34
+ end
35
+
@@ -0,0 +1,223 @@
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 MyColumn < Gtk::TreeViewColumn
6
+ include ManqodCommon
7
+ include GtkAttributes
8
+ include Conf
9
+ def initialize(list,header)
10
+ @list=list
11
+ @header=header
12
+
13
+ #replace our type if list has set 'ordering' attribute to us
14
+ @header['type']='gtk_ordering' if list.gtk_attribute("ordering") == data
15
+
16
+ attributes=Hash.new
17
+
18
+ case header['type']
19
+ when 'gtk_combo' then @renderer=MyCellRendererCombo.new(self)
20
+ when 'gtk_const_combo' then @renderer=MyCellRendererConstCombo.new(self)
21
+ when 'gtk_text','String' then
22
+ @renderer=MyCellRendererText.new(self)
23
+ attributes={"text" => header['model_col']}
24
+ when 'gtk_int','gtk_float','gtk_duration','gtk_timestamp','Integer','Bignum','gtk_ordering' then @renderer=MyCellRendererText.new(self)
25
+ when 'gtk_pixbuf' then @renderer=MyCellRendererPixbuf.new(self)
26
+ #attributes={:pixbuf => DrbImages.instance.image_of_id(header['model_col'].to_i)}
27
+ when 'gtk_toggle' then
28
+ @renderer=MyCellRendererToggle.new(self)
29
+ attributes={"active" => header['model_col']}
30
+ when 'gtk_const_text' then @renderer=MyCellRendererConstText.new(self)
31
+ when 'gtk_combo_text' then @renderer=MyCellRendererComboText.new(self)
32
+ when 'gtk_progress' then @renderer=MyCellRendererProgress.new(self)
33
+ end
34
+
35
+ super(header['header'],@renderer,attributes)
36
+ set_widget(header_widget=Gtk::Label.new(header['header']).set_visible(true))
37
+ header_widget.set_angle(gtk_attribute("header_angle").to_f) if gtk_attribute("header_angle")
38
+ #set color
39
+ # header_widget.modify_fg(Gtk::STATE_NORMAL,Gdk::Color.new(0,35000, 0))
40
+ # header_widget.modify_fg(Gtk::STATE_PRELIGHT,Gdk::Color.new(0,35000, 0))
41
+
42
+ header_widget.modify_font(Pango::FontDescription.new(gtk_attribute("header-font")||list.gtk_attribute("list-header-font")))
43
+
44
+
45
+ @decimals_attribute=(gtk_attribute("decimals") || if header['type']=="gtk_float" then "2" else "0" end).to_i
46
+ @duration_format=gtk_attribute("column-duration-format") || "%d %H:%M:%S"
47
+ @timestamp_format=gtk_attribute("column-timestamp-format") || "%Y-%b-%d %H:%M:%S"
48
+ case header['type']
49
+ when 'gtk_ordering' then set_cell_data_func(renderer) { |column, cell, model, iter| cell.text=path_format(iter)}
50
+ when 'gtk_float' then set_cell_data_func(renderer) { |column, cell, model, iter| cell.text=number_format(iter[column.colnum],decimals_attribute)}
51
+ when 'gtk_int' then set_cell_data_func(renderer) { |column, cell, model, iter| cell.text=number_format(iter[column.colnum],0)}
52
+ when 'gtk_duration' then set_cell_data_func(renderer) { |column, cell, model, iter| cell.text=iter[column.colnum].strftime(@duration_format)}
53
+ when 'gtk_timestamp' then set_cell_data_func(renderer) { |column, cell, model, iter| cell.text=iter[column.colnum]==0 ? "" : Time.at(iter[column.colnum]).strftime(@timestamp_format)}
54
+ when 'gtk_const_text','gtk_combo_text' then set_cell_data_func(renderer) { |column, cell, model, iter| cell.text = cell.get_display(iter[column.colnum])}
55
+ when 'gtk_combo','gtk_const_combo' then set_cell_data_func(renderer){ |column, cell, model, iter| cell.text = cell.get_text_from_value(iter[column.colnum])}
56
+ when 'gtk_pixbuf' then
57
+ if client.nil?
58
+ set_cell_data_func(renderer){|column, cell, model, iter|
59
+ cell.pixbuf=image_of_id(iter[column.colnum],get_conf(0,0,"list-image-size"))
60
+ }
61
+ else
62
+ set_cell_data_func(renderer){|column, cell, model, iter|
63
+ cell.pixbuf=client_image_of_id(iter[column.colnum],get_conf(0,0,"list-image-size"))
64
+ }
65
+ end
66
+ when 'gtk_progress' then set_cell_data_func(renderer){|column, cell, model, iter| cell.set_value(iter[column.colnum])}
67
+ end
68
+
69
+ #query gtkattribute
70
+ if header["querySQL"].length == 0 && sqlid=gtk_attribute("query")
71
+ if sql=admin.qrow("select `sql` from `queries` where `id` = '#{sqlid}'")["sql"]
72
+ header["querySQL"]=sql
73
+ end
74
+ end
75
+ unless header["querySQL"].length == 0
76
+ #key gtkattribute
77
+ if col_key=gtk_attribute("key")
78
+ header["key"]=col_key
79
+ else
80
+ header["key"]="#{guess_base(header["querySQL"])}.cdata"
81
+ end
82
+ #display gtkattribute
83
+ if col_disp=gtk_attribute("display")
84
+ header["display"]=col_disp
85
+ else
86
+ header["display"]="#{guess_base(header["querySQL"])}.cdisplay"
87
+ end
88
+ end
89
+
90
+ @renderer.set_column(self)
91
+ #set_attributes(@renderer,attributes)
92
+ @renderer.set_xalign(header['align'].to_f)
93
+ set_resizable((gtk_attribute("resizable") || list.gtk_attribute("columns_resizable") || "true") == "true")
94
+ set_expand(!resizable?)
95
+ set_reorderable((gtk_attribute("reorderable") || list.gtk_attribute("columns_reorderable") || "false") =="true")
96
+ set_spacing((list.gtk_attribute("column_spacing") || "1").to_i)
97
+ set_min_width((list.default_attribute("column_min_width") || "1").to_i)
98
+ #override the sorting attributes set by user if 'ordering' is set
99
+ if list.gtk_attribute("ordering")
100
+ #set sorting to us, and noone else
101
+ if list.gtk_attribute("ordering") == data
102
+ set_sort_column_id(header["model_col"])
103
+ @list.list_model.sorter.set_sort_column_id(header["model_col"])
104
+ end
105
+ set_clickable(false)
106
+ else
107
+ set_sort_column_id(header["model_col"]) if (gtk_attribute("sortable") || list.gtk_attribute("columns_sortable") || "true") == "true"
108
+ set_clickable(true)
109
+ end
110
+ set_alignment(header['align'].to_f)
111
+ set_renderers_background
112
+ set_renderers_foreground
113
+ set_renderers_sensitive
114
+ @renderer.set_font(get_conf(0,0,"list-cell-font"))
115
+ load_config
116
+ =begin
117
+ signal_connect("destroy"){|me|
118
+ # save_config
119
+ @renderer.destroy if !@renderer.destroyed?
120
+ }
121
+ =end
122
+ end
123
+ attr_accessor :list
124
+ attr_accessor :header
125
+ attr_accessor :renderer
126
+ attr_reader :decimals_attribute, :duration_format, :timestamp_format
127
+
128
+ def save_config
129
+ set_conf(list.get_id.to_s,header['id'].to_s,"width",width.to_s) if resizable? and width >0
130
+ end
131
+
132
+ def load_config
133
+ if gtk_attribute("width")
134
+ stored_width=gtk_attribute("width")
135
+ else
136
+ stored_width=get_conf(list.get_id,header['id'],"width") if resizable?
137
+ end
138
+ if stored_width
139
+ set_sizing(Gtk::TreeViewColumn::FIXED)
140
+ set_fixed_width(stored_width.to_i)
141
+ end
142
+ end
143
+
144
+ def set_colnum(colnum)
145
+ header["model_col"]=colnum
146
+ self
147
+ end
148
+ def colnum
149
+ header["model_col"]
150
+ end
151
+
152
+ def to_s
153
+ inspect
154
+ end
155
+
156
+ def data_type
157
+ list.headertypes[colnum]
158
+ end
159
+
160
+ def inspect
161
+ "ListColumn #{text}(#{@header['type']}:#{colnum})"
162
+ end
163
+
164
+ def data
165
+ header["data"]
166
+ end
167
+ def text
168
+ header["header"]
169
+ end
170
+
171
+ def printable
172
+ header['printable']
173
+ end
174
+
175
+ def printable?
176
+ printable == "true"
177
+ end
178
+
179
+ def summable?
180
+ ["gtk_duration","gtk_float","gtk_int"].include?(header['type'])
181
+ end
182
+
183
+ def pango_layout_alignment
184
+ if alignment < 0.25
185
+ Pango::Layout::Alignment::LEFT
186
+ else
187
+ if alignment > 0.25 and alignment < 0.75
188
+ Pango::Layout::Alignment::CENTER
189
+ else
190
+ Pango::Layout::Alignment::RIGHT
191
+ end
192
+ end
193
+ end
194
+ def set_renderers_background
195
+ unless @list.list_model.column_of_background.nil?
196
+ add_attribute(@renderer,"cell-background",@list.list_model.column_of_background)
197
+ edebug("#{@renderer} attribute added: background_color => #{@list.list_model.column_of_background}","list","debug")
198
+ end
199
+ end
200
+ def set_renderers_foreground
201
+ unless @list.list_model.column_of_foreground.nil?
202
+ unless ["MyCellRendererToggle", "MyCellRendererPixbuf", "MyCellRendererProgress"].include?(@renderer.class.name)
203
+ add_attribute(@renderer,"foreground",@list.list_model.column_of_foreground)
204
+ edebug("#{@renderer} attribute added: foreground_color => #{@list.list_model.column_of_foreground}","list","debug")
205
+ end
206
+ end
207
+ end
208
+ def set_renderers_sensitive
209
+ unless @list.list_model.column_of_sensitive.nil?
210
+ add_attribute(@renderer,"sensitive",@list.list_model.column_of_sensitive)
211
+ edebug("#{@renderer} attribute added: sensitive => #{@list.list_model.column_of_sensitive}","list","debug")
212
+ end
213
+ end
214
+ def wipe
215
+ save_config
216
+ @renderer.destroy unless @renderer.destroyed?
217
+ destroy unless destroyed?
218
+ end
219
+ def path_format(iter)
220
+ iter.path.indices.collect{|i| i+=1}.join(".")
221
+ end
222
+ end
223
+