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,131 @@
|
|
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 MyFileChooserButton < Gtk::FileChooserWidget
|
6
|
+
include ManqodCommon
|
7
|
+
include Conf
|
8
|
+
def initialize(pc)
|
9
|
+
@pc=pc
|
10
|
+
action=case item['action']
|
11
|
+
when 'load' then Gtk::FileChooser::Action::OPEN
|
12
|
+
when 'save' then Gtk::FileChooser::Action::SAVE
|
13
|
+
end
|
14
|
+
super(action)
|
15
|
+
# set_select_multiple(false)
|
16
|
+
path=get_conf(0,item['id'],"path")
|
17
|
+
set_current_folder(path) if !path.nil?
|
18
|
+
|
19
|
+
preview=Gtk::Image.new
|
20
|
+
set_preview_widget(preview)
|
21
|
+
signal_connect("update-preview") {
|
22
|
+
filename = preview_filename
|
23
|
+
begin
|
24
|
+
have_pixbuf=true
|
25
|
+
pixbuf = Gdk::Pixbuf.new(filename, 128, 128)
|
26
|
+
rescue
|
27
|
+
have_pixbuf=false
|
28
|
+
end
|
29
|
+
preview_widget.set_pixbuf(pixbuf)
|
30
|
+
set_preview_widget_active(have_pixbuf)
|
31
|
+
}
|
32
|
+
begin
|
33
|
+
@ftp=eval(pc.gtk_attribute("ftp-access").to_s)
|
34
|
+
rescue =>err
|
35
|
+
ewarn(err)
|
36
|
+
end
|
37
|
+
pack_start(@progress=Gtk::ProgressBar.new,false,true,1) if @ftp.class==Array
|
38
|
+
end
|
39
|
+
attr_accessor :pc, :progress, :ftp
|
40
|
+
|
41
|
+
def item
|
42
|
+
@pc.item
|
43
|
+
end
|
44
|
+
|
45
|
+
def update(nfilename=item['default'])
|
46
|
+
run_events(item['id'],'info_item-BeforeUpdate')
|
47
|
+
edebug("filename to set: |#{nfilename}|","list-filechooser","debug")
|
48
|
+
set_current_name(nfilename) if nfilename
|
49
|
+
run_events(item['id'],'info_item-AfterUpdate')
|
50
|
+
end
|
51
|
+
|
52
|
+
def text
|
53
|
+
filename[current_folder.length() +1 .. filename.length()]
|
54
|
+
end
|
55
|
+
|
56
|
+
def load
|
57
|
+
ret=String.new
|
58
|
+
file = File.new(filename, "rb")
|
59
|
+
ret=file.read
|
60
|
+
file.close
|
61
|
+
edebug("loaded","list-filechooser","debug")
|
62
|
+
set_conf(0,item['id'],"path",current_folder)
|
63
|
+
ret
|
64
|
+
end
|
65
|
+
|
66
|
+
def save(content)
|
67
|
+
file = File.new(filename, "wb+")
|
68
|
+
file.write(content)
|
69
|
+
file.close
|
70
|
+
edebug("saved","list-filechooser","debug")
|
71
|
+
set_conf(0,item['id'],"path",current_folder)
|
72
|
+
end
|
73
|
+
|
74
|
+
def ftp_store
|
75
|
+
unless @ftp.class==Array
|
76
|
+
warn("no ftp access defined")
|
77
|
+
return false
|
78
|
+
end
|
79
|
+
set_conf(0,item['id'],"path",current_folder)
|
80
|
+
ftp=Net::FTP.new(@ftp[0],@ftp[1],@ftp[2])
|
81
|
+
@ftp[3].each("/"){|s|
|
82
|
+
begin
|
83
|
+
ecode("changing ftp dir: #{s}")
|
84
|
+
ftp.chdir(s)
|
85
|
+
rescue =>err
|
86
|
+
ecode("creating ftp dir: #{s}")
|
87
|
+
ftp.mkdir(s)
|
88
|
+
retry
|
89
|
+
end
|
90
|
+
} if @ftp[3]
|
91
|
+
perc=0
|
92
|
+
ftp.putbinaryfile(filename,text,File.size(filename)/100){
|
93
|
+
progress.set_fraction(perc/100.0)
|
94
|
+
Gtk.show_thread_changes
|
95
|
+
perc+=1
|
96
|
+
}
|
97
|
+
ftp.close
|
98
|
+
end
|
99
|
+
|
100
|
+
def ftp_get
|
101
|
+
unless @ftp.class==Array
|
102
|
+
warn("no ftp access defined")
|
103
|
+
return false
|
104
|
+
end
|
105
|
+
set_conf(0,item['id'],"path",current_folder)
|
106
|
+
ftp=Net::FTP.new(@ftp[0],@ftp[1],@ftp[2])
|
107
|
+
@ftp[3].each("/"){|s|
|
108
|
+
ecode("changing ftp dir: #{s}")
|
109
|
+
ftp.chdir(s)
|
110
|
+
} if @ftp[3]
|
111
|
+
perc=0
|
112
|
+
ecode(item["initial"])
|
113
|
+
ftp.getbinaryfile(item["initial"],filename,ftp.size(item["initial"])/100){
|
114
|
+
progress.set_fraction(perc/100.0)
|
115
|
+
Gtk.show_thread_changes
|
116
|
+
perc+=1
|
117
|
+
}
|
118
|
+
ftp.close
|
119
|
+
end
|
120
|
+
|
121
|
+
|
122
|
+
def loadPixbuf
|
123
|
+
set_conf(0,item['id'],"path",current_folder)
|
124
|
+
pixdata=Gdk::Pixdata.from_pixbuf(Gdk::Pixbuf.new(filename),true)
|
125
|
+
a=pixdata.serialize
|
126
|
+
r=""
|
127
|
+
a.each{|v|r=r+v.chr}
|
128
|
+
r
|
129
|
+
end
|
130
|
+
end
|
131
|
+
|
@@ -0,0 +1,37 @@
|
|
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 MyRendererFontButton < Gtk::FontButton
|
6
|
+
include ManqodCommon
|
7
|
+
def initialize(pc)
|
8
|
+
@pc=pc
|
9
|
+
super(item['default'])
|
10
|
+
set_use_font(true)
|
11
|
+
signal_connect('font-set'){|me|
|
12
|
+
edebug(item['default']+" font-set","gtk_button","debug")
|
13
|
+
run_events(item['id'],'form_item-Action')
|
14
|
+
}
|
15
|
+
end
|
16
|
+
attr_accessor :pc
|
17
|
+
|
18
|
+
def update(new_value=item['default'])
|
19
|
+
item['default']=new_value
|
20
|
+
run_events(item['id'],'form_item-BeforeUpdate')
|
21
|
+
set_font_name(item['default'])
|
22
|
+
edebug(item['default'].to_s+" updated","gtk_button","info")
|
23
|
+
run_events(item['id'],'form_item-AfterUpdate')
|
24
|
+
end
|
25
|
+
|
26
|
+
def text
|
27
|
+
font_name
|
28
|
+
end
|
29
|
+
|
30
|
+
def parentM
|
31
|
+
pc.parentM
|
32
|
+
end
|
33
|
+
|
34
|
+
def item
|
35
|
+
pc.item
|
36
|
+
end
|
37
|
+
end
|
@@ -0,0 +1,74 @@
|
|
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 FormImage < Gtk::Button
|
6
|
+
include ManqodCommon
|
7
|
+
def initialize(pc)
|
8
|
+
@pc=pc
|
9
|
+
super()
|
10
|
+
set_relief(Gtk::ReliefStyle::NONE)
|
11
|
+
signal_connect("clicked"){|me,ev|
|
12
|
+
if @pc.editable?
|
13
|
+
fch=Gtk::FileChooserDialog.new
|
14
|
+
fch.set_action(Gtk::FileChooser::Action::OPEN)
|
15
|
+
fch.signal_connect("file-activated"){|me,ev|
|
16
|
+
set_image(load_file(me.filename))
|
17
|
+
me.close
|
18
|
+
}
|
19
|
+
fch.signal_connect("delete-event"){|me,ev|
|
20
|
+
me.destroy
|
21
|
+
}
|
22
|
+
fch.run
|
23
|
+
end
|
24
|
+
}
|
25
|
+
end
|
26
|
+
attr_accessor :pc
|
27
|
+
|
28
|
+
def update(im=item['default'])
|
29
|
+
run_events(item['id'],'info_item-BeforeUpdate')
|
30
|
+
set_image(deserialize_pixdata(im))
|
31
|
+
run_events(item['id'],'info_item-AfterUpdate')
|
32
|
+
end
|
33
|
+
|
34
|
+
def item
|
35
|
+
@pc.item
|
36
|
+
end
|
37
|
+
|
38
|
+
def deserialize_pixdata(raw)
|
39
|
+
begin
|
40
|
+
pixdata=Gdk::Pixdata.deserialize(Marshal.load(raw))
|
41
|
+
pb=pixdata.to_pixbuf(true)
|
42
|
+
Gtk::Image.new(pb)
|
43
|
+
rescue =>e
|
44
|
+
ewarn("cannot load image: #{e}")
|
45
|
+
Gtk::Image.new(Gtk::Stock::MISSING_IMAGE,Gtk::IconSize::MENU)
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
def load_file(filename)
|
50
|
+
im=Gtk::Image.new(filename)
|
51
|
+
if im.storage_type==Gtk::Image::PIXBUF && pc.gtk_attribute('form-image-max-height') && pc.gtk_attribute('form-image-max-height').to_f < im.pixbuf.height
|
52
|
+
nw,nh =im.pixbuf.width*pc.gtk_attribute('form-image-max-height').to_f / im.pixbuf.height, pc.gtk_attribute('form-image-max-height').to_f
|
53
|
+
new_pb=im.pixbuf.scale(nw,nh)
|
54
|
+
im.set_pixbuf(new_pb)
|
55
|
+
end
|
56
|
+
im
|
57
|
+
end
|
58
|
+
|
59
|
+
def set_image(im)
|
60
|
+
super
|
61
|
+
begin
|
62
|
+
item['default']=Marshal.dump(Gdk::Pixdata.from_pixbuf(im.pixbuf,true).serialize)
|
63
|
+
rescue =>err
|
64
|
+
ewarn(err)
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
68
|
+
def text
|
69
|
+
item["default"]
|
70
|
+
end
|
71
|
+
def modify_font(font)
|
72
|
+
end
|
73
|
+
end
|
74
|
+
|
@@ -0,0 +1,44 @@
|
|
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 MyRendererHScale < Gtk::HScale
|
6
|
+
include ManqodCommon
|
7
|
+
def initialize(pc)
|
8
|
+
@pc=pc
|
9
|
+
super(0,100,1)
|
10
|
+
signal_connect('value_changed'){|me|
|
11
|
+
edebug(inspect+" '#{item['data']}' changed to item #{me.value}","form","debug")
|
12
|
+
pc.changed
|
13
|
+
pc.notify_observers(self)
|
14
|
+
edebug("'#{item['data']}' emiting 'changed' to observers","form","debug")
|
15
|
+
run_events(item['id'],'form_item-Action')
|
16
|
+
}
|
17
|
+
end
|
18
|
+
attr_accessor :pc
|
19
|
+
|
20
|
+
def update(new_value=item['default'])
|
21
|
+
item['default']=new_value
|
22
|
+
run_events(item['id'],'form_item-BeforeUpdate')
|
23
|
+
pc.run_query
|
24
|
+
set_value(item['default'].to_f) if item['default']
|
25
|
+
run_events(item['id'],'form_item-AfterUpdate')
|
26
|
+
end
|
27
|
+
|
28
|
+
def item
|
29
|
+
pc.item
|
30
|
+
end
|
31
|
+
|
32
|
+
def text
|
33
|
+
value.to_s
|
34
|
+
end
|
35
|
+
|
36
|
+
def parentselected
|
37
|
+
pc.parentselected
|
38
|
+
end
|
39
|
+
|
40
|
+
def parentM
|
41
|
+
pc.parentM
|
42
|
+
end
|
43
|
+
|
44
|
+
end #MyRendererText
|
@@ -0,0 +1,41 @@
|
|
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 MyRendererHidden
|
6
|
+
include ManqodCommon
|
7
|
+
def initialize(pc)
|
8
|
+
@pc=pc
|
9
|
+
end
|
10
|
+
attr_reader :pc
|
11
|
+
|
12
|
+
def item
|
13
|
+
pc.item
|
14
|
+
end
|
15
|
+
|
16
|
+
def text
|
17
|
+
item['default'].to_s
|
18
|
+
end
|
19
|
+
|
20
|
+
def update(new_value=item['default'])
|
21
|
+
item['default']=new_value
|
22
|
+
run_events(item['id'],'form_item-BeforeUpdate')
|
23
|
+
pc.run_query
|
24
|
+
run_events(item['id'],'form_item-AfterUpdate')
|
25
|
+
end
|
26
|
+
|
27
|
+
def parentselected
|
28
|
+
pc.parentselected
|
29
|
+
end
|
30
|
+
def parentM
|
31
|
+
pc.parentM
|
32
|
+
end
|
33
|
+
def method_missing(sym,*args)
|
34
|
+
nil
|
35
|
+
end
|
36
|
+
|
37
|
+
def to_s
|
38
|
+
"Hidden(#{item["description"]})"
|
39
|
+
end
|
40
|
+
|
41
|
+
end
|
@@ -0,0 +1,40 @@
|
|
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 MyRendererLabel < Gtk::Label
|
6
|
+
include ManqodCommon
|
7
|
+
def initialize(pc)
|
8
|
+
@pc=pc
|
9
|
+
super()
|
10
|
+
end
|
11
|
+
attr_accessor :pc
|
12
|
+
|
13
|
+
def update(new_value=item['default'])
|
14
|
+
item['default']=new_value
|
15
|
+
run_events(item['id'],'form_item-BeforeUpdate')
|
16
|
+
pc.run_query
|
17
|
+
set_text(item['default']) if item['default']
|
18
|
+
run_events(item['id'],'form_item-AfterUpdate')
|
19
|
+
end
|
20
|
+
|
21
|
+
def item
|
22
|
+
pc.item
|
23
|
+
end
|
24
|
+
|
25
|
+
def text
|
26
|
+
item["default"]
|
27
|
+
end
|
28
|
+
|
29
|
+
def set_editable(*args)
|
30
|
+
end
|
31
|
+
|
32
|
+
def parentselected
|
33
|
+
pc.parentselected
|
34
|
+
end
|
35
|
+
|
36
|
+
def parentM
|
37
|
+
pc.parentM
|
38
|
+
end
|
39
|
+
|
40
|
+
end #MyRendererText
|
@@ -0,0 +1,176 @@
|
|
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 MyRendererList < Gtk::VBox
|
6
|
+
include Observable
|
7
|
+
include ManqodCommon
|
8
|
+
|
9
|
+
class ListButton < Gtk::Button
|
10
|
+
def initialize
|
11
|
+
super()
|
12
|
+
set_label("")
|
13
|
+
set_image(Gtk::Image.new(Gtk::Stock::INDEX,Gtk::IconSize::MENU))
|
14
|
+
set_relief(Gtk::ReliefStyle::NONE)
|
15
|
+
end
|
16
|
+
|
17
|
+
def update(notifier)
|
18
|
+
set_image(Gtk::Image.new(
|
19
|
+
case notifier.parentM.runmode
|
20
|
+
when "info" then Gtk::Stock::INFO
|
21
|
+
when "wysiwygf" then Gtk::Stock::PROPERTIES
|
22
|
+
else if notifier.text=="-1" or notifier.text=="" then Gtk::Stock::ADD else Gtk::Stock::EDIT end
|
23
|
+
end ,Gtk::IconSize::MENU))
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
class List < Gtk::TreeView
|
28
|
+
include ManqodCommon
|
29
|
+
include GtkAttributes
|
30
|
+
include Conf
|
31
|
+
def initialize(pc)
|
32
|
+
@pc=pc
|
33
|
+
super()
|
34
|
+
set_enable_grid_lines(case get_conf(0,0,"form-grid")
|
35
|
+
when "both" then Gtk::TreeView::GridLines::BOTH
|
36
|
+
when "vertical" then Gtk::TreeView::GridLines::VERTICAL
|
37
|
+
when "horizontal" then Gtk::TreeView::GridLines::HORIZONTAL
|
38
|
+
else Gtk::TreeView::GridLines::NONE
|
39
|
+
end
|
40
|
+
) if Gtk.check_version?(2,10,9)
|
41
|
+
set_enable_tree_lines(true)
|
42
|
+
set_rules_hint(true)
|
43
|
+
set_enable_search(false)
|
44
|
+
# enable_search=false
|
45
|
+
# set_search_column(nil)
|
46
|
+
end
|
47
|
+
attr_accessor :pc
|
48
|
+
|
49
|
+
def update(id_to_select)
|
50
|
+
model.update
|
51
|
+
set_headers_visible(model.header_descriptions?)
|
52
|
+
set_selected(id_to_select)
|
53
|
+
end
|
54
|
+
|
55
|
+
def item
|
56
|
+
pc.item
|
57
|
+
end
|
58
|
+
|
59
|
+
def parentselected
|
60
|
+
pc.parentselected
|
61
|
+
end
|
62
|
+
|
63
|
+
def parentM
|
64
|
+
pc.parentM
|
65
|
+
end
|
66
|
+
|
67
|
+
def text
|
68
|
+
pc.text
|
69
|
+
end
|
70
|
+
|
71
|
+
def set_selected(id_to_select)
|
72
|
+
id_iter=nil
|
73
|
+
model.each{|model,path,iter|
|
74
|
+
if iter[0]==id_to_select.to_s
|
75
|
+
id_iter=iter
|
76
|
+
expand_to_path(id_iter.path)
|
77
|
+
selection.select_iter(id_iter)
|
78
|
+
scroll_to_cell(path,nil,false,0,0)
|
79
|
+
break
|
80
|
+
end
|
81
|
+
}
|
82
|
+
!id_iter.nil?
|
83
|
+
end
|
84
|
+
end
|
85
|
+
|
86
|
+
def initialize(pc)
|
87
|
+
@pc=pc
|
88
|
+
@list=List.new(self)
|
89
|
+
@scroller=Gtk::ScrolledWindow.new
|
90
|
+
buttons=Gtk::HButtonBox.new.set_layout_style(Gtk::ButtonBox::END)
|
91
|
+
super()
|
92
|
+
pack_start(scroller)
|
93
|
+
pack_start(buttons,false,false) unless target.to_i == -1
|
94
|
+
button=ListButton.new
|
95
|
+
pc.add_observer(button)
|
96
|
+
button.signal_connect('clicked') do |c|
|
97
|
+
@form=Myform::MyFormHolder.new("dialog",self,@pc.target_runmode,target)
|
98
|
+
@form.set_parentM(parentM)
|
99
|
+
ret=form.run(text.to_i)
|
100
|
+
list.update(ret) if ret and ret>0
|
101
|
+
end
|
102
|
+
buttons.pack_start(button)
|
103
|
+
scroller.set_hscrollbar_policy(Gtk::POLICY_AUTOMATIC).add(list)
|
104
|
+
list.set_model(@model=MyRendererModel.new(list))
|
105
|
+
list.selection.signal_connect('changed'){|me|
|
106
|
+
if me.selected then
|
107
|
+
edebug("#{self} selection changed by user: #{pc.default} -> #{me.selected[0]}. emiting signal","list-list","debug")
|
108
|
+
pc.changed
|
109
|
+
pc.notify_observers(pc)
|
110
|
+
run_events(item['id'],'form_item-Action')
|
111
|
+
end
|
112
|
+
}
|
113
|
+
|
114
|
+
# signal_connect('key-press-event'){|me,key| list.model.update_filter(me,key)}
|
115
|
+
end
|
116
|
+
attr_accessor :pc, :scroller
|
117
|
+
attr_accessor :list, :model
|
118
|
+
attr_accessor :form
|
119
|
+
|
120
|
+
def item
|
121
|
+
pc.item
|
122
|
+
end
|
123
|
+
|
124
|
+
def parentM
|
125
|
+
pc.parentM
|
126
|
+
end
|
127
|
+
|
128
|
+
def text
|
129
|
+
list.selection.selected[0] if !list.selection.selected.nil?
|
130
|
+
end
|
131
|
+
|
132
|
+
def set_selected(id_to_select)
|
133
|
+
list.set_selected(id_to_select)
|
134
|
+
end
|
135
|
+
|
136
|
+
def update(id_to_select=item['default'])
|
137
|
+
run_events(item['id'],'form_item-BeforeUpdate')
|
138
|
+
list.update(id_to_select)
|
139
|
+
run_events(item['id'],'form_item-AfterUpdate')
|
140
|
+
end #update
|
141
|
+
|
142
|
+
def set_model(model)
|
143
|
+
list.set_model(model)
|
144
|
+
end
|
145
|
+
|
146
|
+
def parentselected
|
147
|
+
pc.parentselected
|
148
|
+
end
|
149
|
+
|
150
|
+
def set_label(label)
|
151
|
+
pc.set_label(label)
|
152
|
+
end
|
153
|
+
|
154
|
+
def target
|
155
|
+
pc.target
|
156
|
+
end
|
157
|
+
|
158
|
+
def set_sensitive(sens)
|
159
|
+
@list.set_sensitive(sens)
|
160
|
+
self
|
161
|
+
end
|
162
|
+
|
163
|
+
|
164
|
+
def query
|
165
|
+
parentM.query
|
166
|
+
end
|
167
|
+
|
168
|
+
def qrow
|
169
|
+
parentM.qrow
|
170
|
+
end
|
171
|
+
|
172
|
+
def to_s
|
173
|
+
"List: (#{item['description']})"
|
174
|
+
end
|
175
|
+
end #class
|
176
|
+
|
@@ -0,0 +1,63 @@
|
|
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 MyRendererMultiline < Gtk::ScrolledWindow
|
6
|
+
include ManqodCommon
|
7
|
+
def initialize(pc)
|
8
|
+
@pc=pc
|
9
|
+
super(nil,nil)
|
10
|
+
set_policy(Gtk::POLICY_AUTOMATIC,Gtk::POLICY_AUTOMATIC)
|
11
|
+
@tv=Gtk::TextView.new(@source_buffer = Gtk::TextBuffer.new)
|
12
|
+
add(@tv)
|
13
|
+
@tv.modify_font(Pango::FontDescription.new('Monospace 10'))
|
14
|
+
end
|
15
|
+
attr_accessor :tv
|
16
|
+
attr_accessor :pc
|
17
|
+
|
18
|
+
def item
|
19
|
+
@pc.item
|
20
|
+
end
|
21
|
+
def editable
|
22
|
+
@tv.editable
|
23
|
+
end
|
24
|
+
|
25
|
+
def modify_font(f)
|
26
|
+
@tv.modify_font(f)
|
27
|
+
end
|
28
|
+
|
29
|
+
def text
|
30
|
+
@tv.buffer.text
|
31
|
+
end
|
32
|
+
|
33
|
+
def set_sensitive(sens)
|
34
|
+
@tv.set_sensitive(sens)
|
35
|
+
end
|
36
|
+
|
37
|
+
def update(new_value)
|
38
|
+
run_events(item['id'],'form_item-BeforeUpdate')
|
39
|
+
pc.run_query
|
40
|
+
|
41
|
+
@source_buffer.delete(*@source_buffer.bounds)
|
42
|
+
@source_buffer.insert(@source_buffer.get_iter_at_offset(0),"#{item['default']}")
|
43
|
+
@tv.set_buffer(@source_buffer)
|
44
|
+
edebug("#{self} updated to #{item['default']}","form","info")
|
45
|
+
run_events(item['id'],'form_item-AfterUpdate')
|
46
|
+
end
|
47
|
+
|
48
|
+
def parentselected
|
49
|
+
@pc.parentselected
|
50
|
+
end
|
51
|
+
|
52
|
+
def parentM
|
53
|
+
@pc.parentM
|
54
|
+
end
|
55
|
+
def inspect
|
56
|
+
"Multiline(#{item['description']})"
|
57
|
+
end
|
58
|
+
def to_s
|
59
|
+
inspect
|
60
|
+
end
|
61
|
+
|
62
|
+
end #MyRendererMultiline
|
63
|
+
|
@@ -0,0 +1,41 @@
|
|
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 MyRendererPassword < Gtk::Entry
|
6
|
+
include ManqodCommon
|
7
|
+
|
8
|
+
def initialize(pc)
|
9
|
+
@pc=pc
|
10
|
+
super()
|
11
|
+
self.visibility=false
|
12
|
+
# self.editable=true
|
13
|
+
end
|
14
|
+
attr_accessor :item, :pc
|
15
|
+
|
16
|
+
def text
|
17
|
+
np=Digest::MD5.new
|
18
|
+
np << super
|
19
|
+
np.hexdigest.to_s
|
20
|
+
end
|
21
|
+
|
22
|
+
def parentselected
|
23
|
+
pc.parentselected
|
24
|
+
end
|
25
|
+
|
26
|
+
def parentM
|
27
|
+
pc.parentM
|
28
|
+
end
|
29
|
+
def item
|
30
|
+
@pc.item
|
31
|
+
end
|
32
|
+
|
33
|
+
def update(new_value=item['default'])
|
34
|
+
run_events(item['id'],'form_item-BeforeUpdate')
|
35
|
+
item['default']=new_value
|
36
|
+
pc.run_query
|
37
|
+
set_text(item['default'])
|
38
|
+
run_events(item['id'],'form_item-AfterUpdate')
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|