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,458 @@
|
|
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 MyInputHolder
|
6
|
+
include ManqodCommon
|
7
|
+
include Conf
|
8
|
+
include Observable
|
9
|
+
include GtkAttributes
|
10
|
+
|
11
|
+
|
12
|
+
def initialize(item,caller)
|
13
|
+
@item=item
|
14
|
+
@visibility=true
|
15
|
+
@caller=caller
|
16
|
+
@default_is_set=false
|
17
|
+
if parentM.runmode=="wysiwygf"
|
18
|
+
@frame_button=Gtk::Button.new
|
19
|
+
else
|
20
|
+
@frame_button=nil
|
21
|
+
end
|
22
|
+
@query_result=Hash.new
|
23
|
+
@widget=Gtk::Frame.new
|
24
|
+
@expander=Gtk::Expander.new("").set_expanded(true)
|
25
|
+
@expander.signal_connect("notify::expanded"){
|
26
|
+
set_visible
|
27
|
+
parentM.form_holder.vshrink(@widget.allocation.height)
|
28
|
+
}
|
29
|
+
@widget.set_label_widget(Gtk::HBox.new(false,10))
|
30
|
+
if frame_button
|
31
|
+
frame_button.set_image(Gtk::Image.new(Gtk::Stock::PREFERENCES,Gtk::IconSize::MENU)).set_relief(Gtk::ReliefStyle::NONE)
|
32
|
+
frame_button.signal_connect('clicked'){|me|
|
33
|
+
menuw=Gtk::Window.new(Gtk::Window::POPUP)
|
34
|
+
# menuw.set_opacity(0.5)# -- not compatible with galatea
|
35
|
+
|
36
|
+
menuw.add(menu=Gtk::Table.new(3,3))
|
37
|
+
menu.attach_defaults(go_left=Gtk::Button.new,0,1,1,2)
|
38
|
+
go_left.set_image(Gtk::Image.new(Gtk::Stock::GO_BACK,Gtk::IconSize::SMALL_TOOLBAR)).set_relief(Gtk::ReliefStyle::NONE).signal_connect('clicked',menuw,self){|me,parentw,ih|
|
39
|
+
ih.item['x']=lzero(ih.item['x'].to_i-1,2)
|
40
|
+
reattach
|
41
|
+
}
|
42
|
+
menu.attach_defaults(span_left=Gtk::Button.new,0,1,0,1)
|
43
|
+
span_left.set_image(Gtk::Image.new(Gtk::Stock::GOTO_FIRST,Gtk::IconSize::SMALL_TOOLBAR)).set_relief(Gtk::ReliefStyle::NONE).signal_connect('clicked',menuw){|me,parentw|
|
44
|
+
ih.item['xspan']=lzero(ih.item['xspan'].to_i-1,2)
|
45
|
+
reattach
|
46
|
+
}
|
47
|
+
|
48
|
+
menu.attach_defaults(go_right=Gtk::Button.new,2,3,1,2)
|
49
|
+
go_right.set_image(Gtk::Image.new(Gtk::Stock::GO_FORWARD,Gtk::IconSize::SMALL_TOOLBAR)).set_relief(Gtk::ReliefStyle::NONE).signal_connect('clicked',menuw){|me,parentw|
|
50
|
+
ih.item['x']=lzero(ih.item['x'].to_i+1,2)
|
51
|
+
reattach
|
52
|
+
}
|
53
|
+
menu.attach_defaults(span_right=Gtk::Button.new,0,1,2,3)
|
54
|
+
span_right.set_image(Gtk::Image.new(Gtk::Stock::GOTO_LAST,Gtk::IconSize::SMALL_TOOLBAR)).set_relief(Gtk::ReliefStyle::NONE).signal_connect('clicked',menuw){|me,parentw|
|
55
|
+
ih.item['xspan']=lzero(ih.item['xspan'].to_i+1,2)
|
56
|
+
reattach
|
57
|
+
}
|
58
|
+
|
59
|
+
menu.attach_defaults(go_up=Gtk::Button.new,1,2,0,1)
|
60
|
+
go_up.set_image(Gtk::Image.new(Gtk::Stock::GO_UP,Gtk::IconSize::SMALL_TOOLBAR)).set_relief(Gtk::ReliefStyle::NONE).signal_connect('clicked',menuw){|me,parentw|
|
61
|
+
ih.item['y']=lzero(ih.item['y'].to_i-1,2)
|
62
|
+
reattach
|
63
|
+
}
|
64
|
+
menu.attach_defaults(span_up=Gtk::Button.new,2,3,0,1)
|
65
|
+
span_up.set_image(Gtk::Image.new(Gtk::Stock::GOTO_TOP,Gtk::IconSize::SMALL_TOOLBAR)).set_relief(Gtk::ReliefStyle::NONE).signal_connect('clicked',menuw){|me,parentw|
|
66
|
+
ih.item['yspan']=lzero(ih.item['yspan'].to_i-1,2)
|
67
|
+
reattach
|
68
|
+
}
|
69
|
+
|
70
|
+
menu.attach_defaults(go_down=Gtk::Button.new,1,2,2,3)
|
71
|
+
go_down.set_image(Gtk::Image.new(Gtk::Stock::GO_DOWN,Gtk::IconSize::SMALL_TOOLBAR)).set_relief(Gtk::ReliefStyle::NONE).signal_connect('clicked',menuw){|me,parentw|
|
72
|
+
ih.item['y']=lzero(ih.item['y'].to_i+1,2)
|
73
|
+
reattach
|
74
|
+
}
|
75
|
+
menu.attach_defaults(span_down=Gtk::Button.new,2,3,2,3)
|
76
|
+
span_down.set_image(Gtk::Image.new(Gtk::Stock::GOTO_BOTTOM,Gtk::IconSize::SMALL_TOOLBAR)).set_relief(Gtk::ReliefStyle::NONE).signal_connect('clicked',menuw){|me,parentw|
|
77
|
+
ih.item['yspan']=lzero(ih.item['yspan'].to_i+1,2)
|
78
|
+
reattach
|
79
|
+
}
|
80
|
+
|
81
|
+
menu.attach_defaults(go_close=Gtk::Button.new,1,2,1,2)
|
82
|
+
go_close.set_image(Gtk::Image.new(Gtk::Stock::CLOSE,Gtk::IconSize::SMALL_TOOLBAR)).set_relief(Gtk::ReliefStyle::NONE).signal_connect('clicked',menuw){|me,parentw|
|
83
|
+
parentw.hide
|
84
|
+
}
|
85
|
+
|
86
|
+
menuw.set_modal(true).set_window_position(Gtk::Window::POS_MOUSE).show_all
|
87
|
+
=begin
|
88
|
+
#disabled per current compiz is generating the leave notify event in the wrong order
|
89
|
+
=end
|
90
|
+
menuw.signal_connect('leave-notify-event'){|me,e|
|
91
|
+
me.hide if e.window == me.window
|
92
|
+
}
|
93
|
+
menuw.signal_connect("hide"){|me|
|
94
|
+
query("update gtkformitems set x='#{ih.item['x']}', y='#{ih.item['y']}',xspan='#{ih.item['xspan']}', yspan='#{ih.item['yspan']}' where id='#{ih.item['id']}'")
|
95
|
+
}
|
96
|
+
}
|
97
|
+
end
|
98
|
+
|
99
|
+
#Button in info mode is editable
|
100
|
+
item["editable"]="false" if item['gtktype']!='gtk_button' if caller.runmode == 'info'
|
101
|
+
@widget.set_border_width(1)
|
102
|
+
|
103
|
+
@widget.add(@eventbox=Gtk::EventBox.new)
|
104
|
+
set_include_in_query_building(gtk_attribute("include-in-query-building"))
|
105
|
+
repack_renderer
|
106
|
+
|
107
|
+
end
|
108
|
+
attr_reader :widget, :frame_button, :info, :caller, :eventbox, :renderer, :item, :title
|
109
|
+
attr_reader :include_in_query_building, :default_is_set, :query_result, :type_def
|
110
|
+
|
111
|
+
def repack_renderer
|
112
|
+
@item['wantnew']=target.to_i != -1
|
113
|
+
@title=if ['gtk_toggle','qbuilder'].include?(@item['gtktype']) then nil; else @item['description'];end
|
114
|
+
@widget.label_widget.each{|ch| @widget.label_widget.remove(ch)}
|
115
|
+
if gtk_attribute("expander")||'false' == 'true'
|
116
|
+
@widget.label_widget.pack_start(@expander.set_label(title))
|
117
|
+
lw=@expander
|
118
|
+
else
|
119
|
+
@widget.label_widget.pack_start(Gtk::Label.new(title))
|
120
|
+
lw=@widget.label_widget
|
121
|
+
end
|
122
|
+
#set the font
|
123
|
+
if caller.runmode == 'info' then lw.modify_font(Pango::FontDescription.new(get_conf(0,0,"info-frame-font")))
|
124
|
+
else lw.modify_font(Pango::FontDescription.new(get_conf(0,0,"form-frame-font")))
|
125
|
+
end
|
126
|
+
@widget.label_widget.pack_start(@frame_button) if frame_button
|
127
|
+
@renderer.destroy if @renderer
|
128
|
+
|
129
|
+
@renderer=case @item['gtktype']
|
130
|
+
when 'gtk_hidden' then MyRendererHidden.new(self)
|
131
|
+
when 'gtk_label' then MyRendererLabel.new(self)
|
132
|
+
when 'gtk_text'
|
133
|
+
if caller.runmode=="info" then MyRendererLabel.new(self)
|
134
|
+
else MyRendererText.new(self)
|
135
|
+
end
|
136
|
+
when 'gtk_spinbutton'
|
137
|
+
if caller.runmode=="info" then MyRendererLabel.new(self)
|
138
|
+
else MyRendererSpin.new(self)
|
139
|
+
end
|
140
|
+
when 'gtk_duration' then MyRendererDuration.new(self)
|
141
|
+
when 'gtk_hscale' then MyRendererHScale.new(self)
|
142
|
+
when 'gtk_calendar' then MyRendererCalendar.new(self)
|
143
|
+
when 'gtk_calendar_button' then MyRendererCalendarButton.new(self)
|
144
|
+
when 'gtk_timestamp' then MyRendererTimeStamp.new(self)
|
145
|
+
when 'gtk_timestamp_button' then MyRendererTimeStampButton.new(self)
|
146
|
+
when 'gtk_toggle' then MyRendererToggle.new(self)
|
147
|
+
when 'gtk_button' then MyRendererButton.new(self)
|
148
|
+
when 'gtk_color_button' then MyRendererColorButton.new(self)
|
149
|
+
when 'gtk_font_button' then MyRendererFontButton.new(self)
|
150
|
+
when 'gtk_const_radio' then MyRendererRadioGroup.new(self)
|
151
|
+
when 'gtk_password' then MyRendererPassword.new(self)
|
152
|
+
when 'gtk_combo' then MyRendererCombo.new(self)
|
153
|
+
when 'gtk_combo_wn' then MyRendererComboWithNew.new(self)
|
154
|
+
when 'gtk_const_combo' then MyRendererConstCombo.new(self)
|
155
|
+
when 'gtk_consttext' then MyRendererConstText.new(self)
|
156
|
+
when 'gtk_field_combo' then FieldCombo.new(self)
|
157
|
+
when 'gtk_field_list' then FieldList.new(self)
|
158
|
+
when 'gtk_image' then FormImage.new(self)
|
159
|
+
when 'gtk_multiline' then MyRendererMultiline.new(self)
|
160
|
+
when 'gtk_source' then
|
161
|
+
begin
|
162
|
+
MySourceView.new(self)
|
163
|
+
rescue =>err
|
164
|
+
einfo(err.message + "\n" + err.backtrace.join("\n"))
|
165
|
+
MyRendererMultiline.new(self)
|
166
|
+
end
|
167
|
+
when 'gtk_list' then MyRendererList.new(self)
|
168
|
+
when 'gtk_editable_list' then MyRendererEditableList.new(self)
|
169
|
+
when 'fileload'
|
170
|
+
@item['action']='load'
|
171
|
+
MyFileChooserButton.new(self)
|
172
|
+
when 'filesave'
|
173
|
+
@item['action']='save'
|
174
|
+
MyFileChooserButton.new(self)
|
175
|
+
when 'qbuilder'
|
176
|
+
QBuilder.new(self)
|
177
|
+
else
|
178
|
+
edebug("#{self} unknown renderer type: #{@item['gtktype']}","form","warning")
|
179
|
+
nil
|
180
|
+
end
|
181
|
+
|
182
|
+
if @renderer then
|
183
|
+
unless @renderer.class == MyRendererHidden
|
184
|
+
if caller.runmode=="info"
|
185
|
+
@renderer.modify_font(Pango::FontDescription.new(get_conf(0,0,"info-item-font")))
|
186
|
+
else
|
187
|
+
@renderer.modify_font(Pango::FontDescription.new(get_conf(0,0,"form-item-font")))
|
188
|
+
end
|
189
|
+
@renderer.set_height_request(@item['hrequest'].to_i) if @item['hrequest'].to_i>0
|
190
|
+
@renderer.set_width_request(@item['wrequest'].to_i) if @item['wrequest'].to_i>0
|
191
|
+
eventbox.add(@renderer)
|
192
|
+
end
|
193
|
+
end
|
194
|
+
set_visible(@renderer.class != MyRendererHidden)
|
195
|
+
#type_def parsing
|
196
|
+
td=@item["type_def"]
|
197
|
+
@type_def=Hash.new
|
198
|
+
if @item["type_def"].length>3
|
199
|
+
td.split("]").each{|t|
|
200
|
+
if first=t.index("[")
|
201
|
+
parts=t[first+1 .. t.length].split(":")
|
202
|
+
hkey=parts[0]
|
203
|
+
hval=parts[1]||""
|
204
|
+
hdesc=parts[2]||""
|
205
|
+
@type_def[hkey]=[hval,hdesc]
|
206
|
+
end
|
207
|
+
}
|
208
|
+
set_default(-1) if parentM.runmode=="add"
|
209
|
+
edebug("header keys: #{@type_def.inspect}","form-combo")
|
210
|
+
end
|
211
|
+
if rel=gtk_attribute('relation')
|
212
|
+
@relation=parentM.admin_qrow("select relations.* from relations where relations.id='#{rel}'").rehash
|
213
|
+
if parentM.table == @relation["dst_table"]
|
214
|
+
@relation["src_table"],@relation["src_field"]=@relation["dst_table"],@relation["dst_field"];
|
215
|
+
end
|
216
|
+
#overwrite querysql if relation attribute defined
|
217
|
+
item['querysql']=case @item["gtktype"]
|
218
|
+
when "gtk_combo","gtk_combo_wn","gtk_list" then "select * from `#{@relation["dst_table"]}`#{@relation["rel_custom"].length>2 ? " where #{@relation["rel_custom"]}" : ""}"
|
219
|
+
else "select * from `#{@relation["dst_table"]}` where `#{@relation["dst_field"]}`='\#{default}'"
|
220
|
+
end
|
221
|
+
#add order by tree_key
|
222
|
+
item["querysql"]="#{item['querysql']} order by #{gtk_attribute("tree_key")}" unless gtk_attribute("tree_key").nil?
|
223
|
+
s=""
|
224
|
+
@type_def.each_key{|key| s="#{s}, #{key}"}
|
225
|
+
item['querysql']="#{item['querysql']} #{(gtk_attribute("tree_key").nil? ? "order by":",")} #{s[2..s.length]}" if s.length>0
|
226
|
+
edebug("generated query:#{querySQL}","sql")
|
227
|
+
end
|
228
|
+
self
|
229
|
+
end
|
230
|
+
|
231
|
+
def set_shadow
|
232
|
+
shadow=case caller.runmode
|
233
|
+
when "info" then Gtk::SHADOW_ETCHED_IN
|
234
|
+
else Gtk::SHADOW_OUT
|
235
|
+
end
|
236
|
+
shadow=Gtk::SHADOW_NONE if ['gtk_button'].include?(item['gtktype'])
|
237
|
+
attr_shadow=case gtk_attribute('border-shadow')
|
238
|
+
when 'none' then Gtk::ShadowType::NONE
|
239
|
+
when 'in' then Gtk::ShadowType::IN
|
240
|
+
when 'out' then Gtk::ShadowType::OUT
|
241
|
+
when 'etched-in' then Gtk::ShadowType::ETCHED_IN
|
242
|
+
when 'etched-out' then Gtk::ShadowType::ETCHED_OUT
|
243
|
+
end
|
244
|
+
shadow=attr_shadow unless attr_shadow.nil?
|
245
|
+
shadow=Gtk::ShadowType::NONE unless @expander.expanded?
|
246
|
+
@widget.set_shadow_type(shadow) unless shadow.nil?
|
247
|
+
end
|
248
|
+
|
249
|
+
def text
|
250
|
+
renderer.text if renderer
|
251
|
+
end
|
252
|
+
|
253
|
+
def data
|
254
|
+
item['data']
|
255
|
+
end
|
256
|
+
def set_default(new_value)
|
257
|
+
item['default']=new_value
|
258
|
+
@default_is_set=true
|
259
|
+
self
|
260
|
+
end
|
261
|
+
def unset_default
|
262
|
+
@default_is_set=false
|
263
|
+
end
|
264
|
+
|
265
|
+
def default_set?
|
266
|
+
@default_is_set == true
|
267
|
+
end
|
268
|
+
|
269
|
+
def default
|
270
|
+
item['default']
|
271
|
+
end
|
272
|
+
|
273
|
+
def set_data(da)
|
274
|
+
item['data']=da
|
275
|
+
self
|
276
|
+
end
|
277
|
+
|
278
|
+
def set_visibility(vis)
|
279
|
+
@visibility=vis
|
280
|
+
@widget.set_no_show_all(!@visibility)
|
281
|
+
self
|
282
|
+
end
|
283
|
+
def set_visible(visibility=@visibility)
|
284
|
+
set_visibility(visibility)
|
285
|
+
super(@visibilty)
|
286
|
+
if @visibility
|
287
|
+
@widget.show_all
|
288
|
+
else
|
289
|
+
@widget.hide
|
290
|
+
end
|
291
|
+
|
292
|
+
if @expander
|
293
|
+
@renderer.set_visible(@expander.expanded? && visibility)
|
294
|
+
@renderer.set_no_show_all(!(@expander.expanded? && visibility))
|
295
|
+
end
|
296
|
+
set_shadow
|
297
|
+
self
|
298
|
+
end
|
299
|
+
|
300
|
+
def type
|
301
|
+
item['gtktype']
|
302
|
+
end
|
303
|
+
|
304
|
+
def initial
|
305
|
+
item["initial"]
|
306
|
+
end
|
307
|
+
|
308
|
+
def description
|
309
|
+
item['description']
|
310
|
+
end
|
311
|
+
|
312
|
+
def querySQL
|
313
|
+
item['querysql']
|
314
|
+
end
|
315
|
+
|
316
|
+
def editable
|
317
|
+
item['editable'].to_s=='true'
|
318
|
+
end
|
319
|
+
|
320
|
+
def editable?
|
321
|
+
item['editable'].to_s.upcase=='TRUE'
|
322
|
+
end
|
323
|
+
|
324
|
+
def set_editable(ed=item['editable'])
|
325
|
+
item['editable']=parentM.batch? ? ed.to_s.upcase=='TRUE' && batch? : ed.to_s
|
326
|
+
renderer.set_sensitive(self.editable?)
|
327
|
+
self
|
328
|
+
end
|
329
|
+
|
330
|
+
def set_sensitive(sensi)
|
331
|
+
renderer.set_sensitive(sensi)
|
332
|
+
self
|
333
|
+
end
|
334
|
+
|
335
|
+
def batch?
|
336
|
+
(gtk_attribute("batch") || "false").upcase == "TRUE"
|
337
|
+
end
|
338
|
+
|
339
|
+
def set_include_in_query_building(iqb=nil)
|
340
|
+
if(iqb.nil?) then
|
341
|
+
@include_in_query_building=nil
|
342
|
+
else
|
343
|
+
@include_in_query_building=(iqb.to_s.upcase=='TRUE')
|
344
|
+
end
|
345
|
+
self
|
346
|
+
end
|
347
|
+
|
348
|
+
def sefmin(l_min)
|
349
|
+
item["min"]=l_min.to_s
|
350
|
+
self
|
351
|
+
end
|
352
|
+
|
353
|
+
def set_max(l_max)
|
354
|
+
item["max"]=l_max.to_s
|
355
|
+
self
|
356
|
+
end
|
357
|
+
|
358
|
+
def get_min
|
359
|
+
item["min"]
|
360
|
+
end
|
361
|
+
def get_max
|
362
|
+
item["max"]
|
363
|
+
end
|
364
|
+
|
365
|
+
def required
|
366
|
+
item['required'].to_s=='true'
|
367
|
+
end
|
368
|
+
|
369
|
+
def set_required(req)
|
370
|
+
item['required']=req.to_s
|
371
|
+
self
|
372
|
+
end
|
373
|
+
|
374
|
+
def target
|
375
|
+
item['to_call']
|
376
|
+
end
|
377
|
+
|
378
|
+
def target_runmode
|
379
|
+
case parentM.runmode
|
380
|
+
when "info" then "info"
|
381
|
+
when "wysiwygf" then "wysiwygf"
|
382
|
+
else (text.to_i == -1 || text.to_i == 0 ? "add" : "modify" )
|
383
|
+
end
|
384
|
+
end
|
385
|
+
|
386
|
+
def target_module
|
387
|
+
item['modname']
|
388
|
+
end
|
389
|
+
|
390
|
+
def set_target(new_target)
|
391
|
+
item['to_call']=new_target
|
392
|
+
end
|
393
|
+
|
394
|
+
def parentselected
|
395
|
+
caller.parentselected
|
396
|
+
end
|
397
|
+
|
398
|
+
def update(notifier=nil,new_value=item['default'])
|
399
|
+
item['default']=new_value
|
400
|
+
edebug("Update notification from #{notifier} for #{data} = [#{new_value}]","form","info")
|
401
|
+
before=Time.now
|
402
|
+
set_editable
|
403
|
+
renderer.update(new_value) if renderer
|
404
|
+
after=Time.now
|
405
|
+
diff=after-before
|
406
|
+
edebug("#{@item['gtktype']}:#{@item['data']} updated in #{diff.to_s}","time","info")
|
407
|
+
end
|
408
|
+
|
409
|
+
def parentM
|
410
|
+
@caller
|
411
|
+
end
|
412
|
+
|
413
|
+
def multiselector?
|
414
|
+
gtk_attribute("multiselector") == "true"
|
415
|
+
end
|
416
|
+
|
417
|
+
def short_data
|
418
|
+
if i=item['data'].rindex(".")
|
419
|
+
item['data'][i+1 .. item['data'].length]
|
420
|
+
else
|
421
|
+
item['data']
|
422
|
+
end
|
423
|
+
end
|
424
|
+
|
425
|
+
def run_query
|
426
|
+
@query_result=Hash.new
|
427
|
+
return false if item['querysql'].length<5
|
428
|
+
sql=eeval("\"#{item['querysql']}\"")
|
429
|
+
edebug("runnning query: #{sql}","sql")
|
430
|
+
ret=if item['admin'].to_s == 'true' then parentM.admin_qrow(sql) else parentM.qrow(sql) end
|
431
|
+
@query_result=ret.rehash if ret
|
432
|
+
if @query_result.has_key?(short_data)
|
433
|
+
edebug("new value: #{ret[short_data]}","form")
|
434
|
+
item['default']=@query_result[short_data]
|
435
|
+
end
|
436
|
+
end
|
437
|
+
|
438
|
+
def method_missing(sym,*args)
|
439
|
+
renderer
|
440
|
+
end
|
441
|
+
|
442
|
+
def reattach
|
443
|
+
@caller.reattach(self)
|
444
|
+
end
|
445
|
+
|
446
|
+
def set_expanded(exp)
|
447
|
+
@expander.set_expanded(exp)
|
448
|
+
end
|
449
|
+
|
450
|
+
def inspect
|
451
|
+
"InputHolder of #{renderer.inspect}"
|
452
|
+
end
|
453
|
+
def to_s
|
454
|
+
inspect
|
455
|
+
end
|
456
|
+
|
457
|
+
end #end MyInputHolder
|
458
|
+
|