manqod 1.1505.0
Sign up to get free protection for your applications and to get access to all the features.
- data/bin/manqod +309 -0
- data/doc/HOWTOS +11 -0
- data/doc/INSTALL +6 -0
- data/doc/LICENCE +450 -0
- data/doc/README +33 -0
- data/doc/benchmarkings/ListLoader.rb +177 -0
- data/doc/manqod.png +0 -0
- data/doc/manqod.svg +99 -0
- data/doc/server.conf.example +24 -0
- data/lib/About.rb +93 -0
- data/lib/BarMenu/BarMenuItem.rb +46 -0
- data/lib/BarMenu.rb +76 -0
- data/lib/ButtonMenu/ButtonMenuItem.rb +82 -0
- data/lib/ButtonMenu/EndSeparator.rb +14 -0
- data/lib/ButtonMenu/StartSeparator.rb +14 -0
- data/lib/ButtonMenu.rb +154 -0
- data/lib/Common/Conf.rb +119 -0
- data/lib/Common/Eprint.rb +180 -0
- data/lib/Common/EventCache.rb +41 -0
- data/lib/Common/Fixnum.rb +18 -0
- data/lib/Common/Images.rb +41 -0
- data/lib/Common/ManqodDB.rb +40 -0
- data/lib/Common/MyExec.rb +77 -0
- data/lib/Common/MyImage.rb +47 -0
- data/lib/Common/Nick.rb +25 -0
- data/lib/Common/String.rb +15 -0
- data/lib/FormHolder/Form/InputHolder/Button.rb +133 -0
- data/lib/FormHolder/Form/InputHolder/Calendar.rb +101 -0
- data/lib/FormHolder/Form/InputHolder/CalendarButton.rb +117 -0
- data/lib/FormHolder/Form/InputHolder/ColorButton.rb +54 -0
- data/lib/FormHolder/Form/InputHolder/Combo.rb +82 -0
- data/lib/FormHolder/Form/InputHolder/ComboWithNew.rb +103 -0
- data/lib/FormHolder/Form/InputHolder/Common/Model.rb +337 -0
- data/lib/FormHolder/Form/InputHolder/ConstCombo.rb +18 -0
- data/lib/FormHolder/Form/InputHolder/ConstText.rb +17 -0
- data/lib/FormHolder/Form/InputHolder/Duration.rb +73 -0
- data/lib/FormHolder/Form/InputHolder/EditableList.rb +57 -0
- data/lib/FormHolder/Form/InputHolder/FieldCombo.rb +40 -0
- data/lib/FormHolder/Form/InputHolder/FieldList.rb +40 -0
- data/lib/FormHolder/Form/InputHolder/FileChooser.rb +131 -0
- data/lib/FormHolder/Form/InputHolder/FontButton.rb +37 -0
- data/lib/FormHolder/Form/InputHolder/FormImage.rb +74 -0
- data/lib/FormHolder/Form/InputHolder/HScale.rb +44 -0
- data/lib/FormHolder/Form/InputHolder/Hidden.rb +41 -0
- data/lib/FormHolder/Form/InputHolder/Label.rb +40 -0
- data/lib/FormHolder/Form/InputHolder/List.rb +176 -0
- data/lib/FormHolder/Form/InputHolder/MultiLine.rb +63 -0
- data/lib/FormHolder/Form/InputHolder/Password.rb +41 -0
- data/lib/FormHolder/Form/InputHolder/QBuilder/QObject.rb +269 -0
- data/lib/FormHolder/Form/InputHolder/QBuilder.rb +333 -0
- data/lib/FormHolder/Form/InputHolder/RadioGroup.rb +82 -0
- data/lib/FormHolder/Form/InputHolder/SourceView.rb +100 -0
- data/lib/FormHolder/Form/InputHolder/Spin.rb +49 -0
- data/lib/FormHolder/Form/InputHolder/Text.rb +55 -0
- data/lib/FormHolder/Form/InputHolder/TimeStamp.rb +82 -0
- data/lib/FormHolder/Form/InputHolder/TimeStampButton.rb +93 -0
- data/lib/FormHolder/Form/InputHolder/Toggle.rb +43 -0
- data/lib/FormHolder/Form/InputHolder.rb +458 -0
- data/lib/FormHolder/Form.rb +529 -0
- data/lib/FormHolder.rb +203 -0
- data/lib/Gtk.rb +101 -0
- data/lib/GtkAttributes.rb +76 -0
- data/lib/Kernel.rb +48 -0
- data/lib/ListHolder/EditableList/CellRenderers/Combo.rb +91 -0
- data/lib/ListHolder/EditableList/CellRenderers/ComboText.rb +22 -0
- data/lib/ListHolder/EditableList/CellRenderers/ConstCombo.rb +12 -0
- data/lib/ListHolder/EditableList/CellRenderers/ConstText.rb +23 -0
- data/lib/ListHolder/EditableList/CellRenderers/Pixbuf.rb +18 -0
- data/lib/ListHolder/EditableList/CellRenderers/Progress.rb +36 -0
- data/lib/ListHolder/EditableList/CellRenderers/Text.rb +51 -0
- data/lib/ListHolder/EditableList/CellRenderers/Toggle.rb +35 -0
- data/lib/ListHolder/EditableList/Column.rb +223 -0
- data/lib/ListHolder/EditableList/DrbListModel.rb +809 -0
- data/lib/ListHolder/EditableList/ListPrintOperation/ColumnsHeaderLayout.rb +56 -0
- data/lib/ListHolder/EditableList/ListPrintOperation/CustomPageSetup.rb +100 -0
- data/lib/ListHolder/EditableList/ListPrintOperation/FooterLayout.rb +26 -0
- data/lib/ListHolder/EditableList/ListPrintOperation/HeaderLayout.rb +35 -0
- data/lib/ListHolder/EditableList/ListPrintOperation/IterLayout.rb +89 -0
- data/lib/ListHolder/EditableList/ListPrintOperation.rb +365 -0
- data/lib/ListHolder/EditableList.rb +309 -0
- data/lib/ListHolder/GanttHolder/Gantt/Rectangle.rb +290 -0
- data/lib/ListHolder/GanttHolder/Gantt.rb +317 -0
- data/lib/ListHolder/GanttHolder/GanttFooter.rb +27 -0
- data/lib/ListHolder/GanttHolder/GanttScaler.rb +60 -0
- data/lib/ListHolder/GanttHolder.rb +31 -0
- data/lib/ListHolder/HistoryWindow.rb +63 -0
- data/lib/ListHolder/ListButtonHolder/ArchiveButton.rb +37 -0
- data/lib/ListHolder/ListButtonHolder/ButtonGroup.rb +32 -0
- data/lib/ListHolder/ListButtonHolder/FilterButton.rb +28 -0
- data/lib/ListHolder/ListButtonHolder/ListButton.rb +305 -0
- data/lib/ListHolder/ListButtonHolder/OrderingButton.rb +26 -0
- data/lib/ListHolder/ListButtonHolder/SumPanelButton.rb +23 -0
- data/lib/ListHolder/ListButtonHolder.rb +94 -0
- data/lib/ListHolder/ListPanel/ListFilter/FRenderer/Combo.rb +94 -0
- data/lib/ListHolder/ListPanel/ListFilter/FRenderer/ConstCombo.rb +11 -0
- data/lib/ListHolder/ListPanel/ListFilter/FRenderer/Text.rb +26 -0
- data/lib/ListHolder/ListPanel/ListFilter/FRenderer/Toggle.rb +41 -0
- data/lib/ListHolder/ListPanel/ListFilter/FRenderer.rb +58 -0
- data/lib/ListHolder/ListPanel/ListFilter.rb +42 -0
- data/lib/ListHolder/ListPanel/ListSum/Text.rb +32 -0
- data/lib/ListHolder/ListPanel/ListSum.rb +72 -0
- data/lib/ListHolder/ListPanel.rb +60 -0
- data/lib/ListHolder.rb +241 -0
- data/lib/LoginWindow.rb +77 -0
- data/lib/MainRouter.rb +64 -0
- data/lib/ManqodCommon.rb +295 -0
- data/lib/ManqodHelp/FormatEditor/FormatJustificationWidget.rb +76 -0
- data/lib/ManqodHelp/FormatsEditor.rb +139 -0
- data/lib/ManqodHelp/HelpBrowser/FormatTagTable/FormatTag.rb +84 -0
- data/lib/ManqodHelp/HelpBrowser/FormatTagTable.rb +39 -0
- data/lib/ManqodHelp/HelpBrowser.rb +135 -0
- data/lib/ManqodHelp/HelpIndex.rb +62 -0
- data/lib/ManqodHelp/HelpToolbar.rb +16 -0
- data/lib/ManqodHelp.rb +120 -0
- data/lib/ManqodRPC.rb +37 -0
- data/lib/Memcache.rb +82 -0
- data/lib/MyConfig.rb +93 -0
- data/lib/Print/PrintItem/TextLayout.rb +47 -0
- data/lib/Print/PrintItem.rb +240 -0
- data/lib/Print.rb +199 -0
- data/lib/PrintEditor/ItemInfo/ItemImage.rb +30 -0
- data/lib/PrintEditor/ItemInfo/ItemList.rb +44 -0
- data/lib/PrintEditor/ItemInfo/ItemTextAlignment.rb +27 -0
- data/lib/PrintEditor/ItemInfo.rb +129 -0
- data/lib/PrintEditor/PageLayout.rb +91 -0
- data/lib/PrintEditor/PrintEditorItem.rb +310 -0
- data/lib/PrintEditor.rb +195 -0
- data/lib/RelationBuilder/RTable/RField.rb +91 -0
- data/lib/RelationBuilder/RTable.rb +293 -0
- data/lib/RelationBuilder/Relation/RelationHandle.rb +70 -0
- data/lib/RelationBuilder/Relation.rb +161 -0
- data/lib/RelationBuilder/RunQuery.rb +55 -0
- data/lib/RelationBuilder/SearchWindow.rb +72 -0
- data/lib/RelationBuilder.rb +468 -0
- data/lib/SB/ListProgress.rb +150 -0
- data/lib/SB/Messaging.rb +77 -0
- data/lib/SB.rb +29 -0
- data/lib/mynotebook.rb +131 -0
- data/lib/mytouchwindow.rb +162 -0
- data/lib/mywindow.rb +134 -0
- data/lib/wysiwyg-print-label.rb +57 -0
- 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
|
+
|