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,42 @@
|
|
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 MyListFilter < Gtk::HBox
|
6
|
+
def initialize(list_holder)
|
7
|
+
@list_holder=list_holder
|
8
|
+
@columns=Hash.new
|
9
|
+
super()
|
10
|
+
set_no_show_all(true)
|
11
|
+
set_border_width(0)
|
12
|
+
set_resize_mode(Gtk::ResizeMode::PARENT)
|
13
|
+
end
|
14
|
+
|
15
|
+
def update(notifier)
|
16
|
+
self.each{|frenderer| frenderer.destroy}
|
17
|
+
notifier.columns.each {|column|
|
18
|
+
@columns[column.data]=MyFRenderer.new(notifier,column)
|
19
|
+
pack_start(Gtk::Alignment.new(0,0,1,1).set_padding(0,0,0,0).add(@columns[column.data]))
|
20
|
+
}
|
21
|
+
self
|
22
|
+
end
|
23
|
+
|
24
|
+
def list_holder
|
25
|
+
@list_holder
|
26
|
+
end
|
27
|
+
def columns
|
28
|
+
@columns
|
29
|
+
end
|
30
|
+
|
31
|
+
def set_visible(visible)
|
32
|
+
each{|child|
|
33
|
+
if visible
|
34
|
+
child.show_all
|
35
|
+
else
|
36
|
+
child.hide_all
|
37
|
+
end
|
38
|
+
}
|
39
|
+
super
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
@@ -0,0 +1,32 @@
|
|
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 SumRendererText < Gtk::Label
|
6
|
+
include ManqodCommon
|
7
|
+
def initialize(column)
|
8
|
+
@column=column
|
9
|
+
@decimals=case column.header["type"]
|
10
|
+
when "gtk_float" then 2
|
11
|
+
else 0
|
12
|
+
end
|
13
|
+
super()
|
14
|
+
set_alignment(column.alignment,0.5)
|
15
|
+
end
|
16
|
+
attr_accessor :column
|
17
|
+
|
18
|
+
def update(new_value=0)
|
19
|
+
set_text(case column.header['type']
|
20
|
+
when "gtk_int" then number_format(new_value,@column.decimals_attribute)
|
21
|
+
when "gtk_float" then number_format(new_value,@column.decimals_attribute)
|
22
|
+
when "gtk_duration" then Time.at(new_value).strftime(column.duration_format)
|
23
|
+
end)
|
24
|
+
end
|
25
|
+
|
26
|
+
def to_s
|
27
|
+
"SumRenderer of #{column}"
|
28
|
+
end
|
29
|
+
def inspect
|
30
|
+
to_s
|
31
|
+
end
|
32
|
+
end
|
@@ -0,0 +1,72 @@
|
|
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 ListSum < Gtk::HBox
|
6
|
+
def initialize(list_holder)
|
7
|
+
@list_holder=list_holder
|
8
|
+
super()
|
9
|
+
@columns=Hash.new
|
10
|
+
@renderers=Hash.new
|
11
|
+
@values=Hash.new
|
12
|
+
set_no_show_all(true)
|
13
|
+
set_border_width(0)
|
14
|
+
set_resize_mode(Gtk::ResizeMode::PARENT)
|
15
|
+
signal_connect('destroy'){|me|
|
16
|
+
renderers.each_value{|r| r.destroy if r}
|
17
|
+
}
|
18
|
+
end
|
19
|
+
attr_accessor :list_holder
|
20
|
+
attr_accessor :columns
|
21
|
+
attr_accessor :renderers
|
22
|
+
|
23
|
+
def update(notifier)
|
24
|
+
@renderers.each_value{|renderer| renderer.destroy}
|
25
|
+
@columns.clear
|
26
|
+
@renderers.clear
|
27
|
+
@values.clear
|
28
|
+
list_holder.list.columns.each {|column|
|
29
|
+
renderers[column.data]=SumRendererText.new(column)
|
30
|
+
pack_start(renderers[column.data])
|
31
|
+
if column.summable?
|
32
|
+
@values[column.data]=0.0
|
33
|
+
@columns[column.data]=column
|
34
|
+
end
|
35
|
+
}
|
36
|
+
return self
|
37
|
+
end
|
38
|
+
|
39
|
+
def set_visible(visible)
|
40
|
+
each{|child|
|
41
|
+
if visible
|
42
|
+
child.show
|
43
|
+
else
|
44
|
+
child.hide
|
45
|
+
end
|
46
|
+
# p child.inspect + child.visible?.to_s
|
47
|
+
}
|
48
|
+
super
|
49
|
+
end
|
50
|
+
|
51
|
+
def zero
|
52
|
+
@values.each_key{|key| @values[key]=0.0}
|
53
|
+
end
|
54
|
+
|
55
|
+
def calculate
|
56
|
+
zero
|
57
|
+
if list_holder.list.model
|
58
|
+
list_holder.list.model.each{|model,path,iter|
|
59
|
+
@columns.each_pair{|col_data,col| @values[col_data]+=iter[col.header["model_col"]].to_f}
|
60
|
+
}
|
61
|
+
end
|
62
|
+
columns.each_key{|col_data| renderers[col_data].update(@values[col_data])}
|
63
|
+
end
|
64
|
+
|
65
|
+
def inspect
|
66
|
+
"ListSum of #{list_holder.list}"
|
67
|
+
end
|
68
|
+
def to_s
|
69
|
+
inspect
|
70
|
+
end
|
71
|
+
end
|
72
|
+
|
@@ -0,0 +1,60 @@
|
|
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
|
+
public
|
6
|
+
class ListPanel < Gtk::Viewport
|
7
|
+
include ManqodCommon
|
8
|
+
|
9
|
+
def initialize(list_holder)
|
10
|
+
@list_holder=list_holder
|
11
|
+
super(list_holder.list_scroller.hadjustment,Gtk::Adjustment.new(0,0,0,0,0,0))
|
12
|
+
set_resize_mode(Gtk::RESIZE_PARENT)
|
13
|
+
set_width_request(1)
|
14
|
+
set_no_show_all(true)
|
15
|
+
|
16
|
+
add(@vbox=Gtk::VBox.new(false))
|
17
|
+
vbox.pack_start(@list_sum=ListSum.new(list_holder),false,false,0)
|
18
|
+
vbox.pack_end(@list_filter=MyListFilter.new(list_holder),false,false,0)
|
19
|
+
|
20
|
+
signal_connect('destroy'){|me|
|
21
|
+
@list_sum.destroy if @list_sum
|
22
|
+
@list_filter.destroy if @list_filter
|
23
|
+
}
|
24
|
+
end
|
25
|
+
attr_accessor :list_holder
|
26
|
+
attr_accessor :list_filter
|
27
|
+
attr_accessor :list_sum
|
28
|
+
attr_accessor :vbox
|
29
|
+
attr_accessor :visibility
|
30
|
+
|
31
|
+
|
32
|
+
def update(notifier)
|
33
|
+
list_filter.update(notifier)
|
34
|
+
list_sum.update(notifier)
|
35
|
+
set_visibility
|
36
|
+
self
|
37
|
+
end
|
38
|
+
|
39
|
+
def set_visibility
|
40
|
+
if visibility!=(list_holder.sum_button.active? || list_holder.advanced_filter.active?)
|
41
|
+
@visibility=list_holder.sum_button.active? || list_holder.advanced_filter.active?
|
42
|
+
set_visible(visibility)
|
43
|
+
vbox.set_visible(visibility)
|
44
|
+
list_holder.placeholder_button.set_visible(visibility)
|
45
|
+
# set_visible(list_holder.advanced_filter.active?)
|
46
|
+
# vbox.set_visible(list_holder.advanced_filter.active?)
|
47
|
+
edebug("#{self} visibility set to #{visibility}","list","info")
|
48
|
+
end
|
49
|
+
list_filter.set_visible(list_holder.advanced_filter.active?)
|
50
|
+
list_sum.set_visible(list_holder.sum_button.active?)
|
51
|
+
end
|
52
|
+
|
53
|
+
def inspect
|
54
|
+
"ListPanel of #{@list_holder}"
|
55
|
+
end
|
56
|
+
def to_s
|
57
|
+
inspect
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
data/lib/ListHolder.rb
ADDED
@@ -0,0 +1,241 @@
|
|
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
|
+
module Mylist
|
6
|
+
|
7
|
+
class MyListHolder < Gtk::Frame
|
8
|
+
include ManqodCommon
|
9
|
+
include Conf
|
10
|
+
|
11
|
+
class VHolder < Gtk::VPaned
|
12
|
+
def initialize(holder)
|
13
|
+
@holder=holder
|
14
|
+
super()
|
15
|
+
end
|
16
|
+
attr_reader :holder
|
17
|
+
def title
|
18
|
+
@holder.title
|
19
|
+
end
|
20
|
+
def list
|
21
|
+
@holder.list
|
22
|
+
end
|
23
|
+
end
|
24
|
+
class HHolder < Gtk::HPaned
|
25
|
+
def initialize(holder)
|
26
|
+
@holder=holder
|
27
|
+
super()
|
28
|
+
end
|
29
|
+
attr_reader :holder
|
30
|
+
def title
|
31
|
+
@holder.title
|
32
|
+
end
|
33
|
+
def list
|
34
|
+
@holder.list
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
def initialize(caller)
|
39
|
+
@caller=caller
|
40
|
+
@list_id=nil
|
41
|
+
@parentM=nil
|
42
|
+
@info=Gtk::Label.new('initializing')
|
43
|
+
@list=MyEditableList.new(self)
|
44
|
+
@list.signal_connect('size-allocate'){|me,alloc|
|
45
|
+
me.columns.each{|col|
|
46
|
+
list_panel.list_filter.columns[col.data].set_width_request(col.width) unless list_panel.list_filter.columns[col.data].nil? || list_panel.list_filter.columns[col.data].destroyed?
|
47
|
+
list_panel.list_sum.renderers[col.data].set_width_request(col.width) unless list_panel.list_sum.renderers[col.data].nil? || list_panel.list_sum.renderers[col.data].destroyed?
|
48
|
+
}
|
49
|
+
}
|
50
|
+
@flistbox=Gtk::VBox.new(false).pack_start(@list_scroller=Gtk::ScrolledWindow.new.add(@list),true,true,0)
|
51
|
+
@list_scroller.set_policy(Gtk::POLICY_AUTOMATIC,Gtk::POLICY_ALWAYS)
|
52
|
+
|
53
|
+
|
54
|
+
@list_panel=ListPanel.new(self)
|
55
|
+
@flistbox.pack_end(Gtk::HBox.new.pack_start(list_panel).pack_end(@placeholder_button=Gtk::Button.new.set_relief(Gtk::ReliefStyle::NONE),false,false),false,true,0)
|
56
|
+
placeholder_button.set_no_show_all(true)
|
57
|
+
@list_scroller.vscrollbar.signal_connect("size-allocate",placeholder_button){|me,alloc,pl|
|
58
|
+
pl.set_width_request(alloc.width)
|
59
|
+
}
|
60
|
+
@buttonholder=ListButtonHolder.new(self,Gtk::ORIENTATION_HORIZONTAL)
|
61
|
+
@placeholder_button.
|
62
|
+
signal_connect('clicked'){|me|
|
63
|
+
menuw=Gtk::Window.new(Gtk::Window::POPUP).add(bar=Gtk::VBox.new.
|
64
|
+
add(refresh=Gtk::Button.new.set_image(Gtk::Image.new(Gtk::Stock::REFRESH,Gtk::IconSize::MENU))).
|
65
|
+
add(history=Gtk::Button.new.set_image(Gtk::Image.new(Gtk::Stock::INDEX,Gtk::IconSize::MENU))).
|
66
|
+
add(cancel=Gtk::Button.new.set_image(Gtk::Image.new(Gtk::Stock::CANCEL,Gtk::IconSize::MENU)))
|
67
|
+
)
|
68
|
+
refresh.set_relief(Gtk::ReliefStyle::NONE).signal_connect('clicked',menuw,self){|button,menuw,me|
|
69
|
+
ManqodDB.instance.manqod_db.reload_moditem(me.list.list_id)
|
70
|
+
menuw.hide unless menuw.destroyed?
|
71
|
+
}
|
72
|
+
history.set_relief(Gtk::ReliefStyle::NONE).signal_connect('clicked',menuw,self){|button,menuw,me|
|
73
|
+
history_window
|
74
|
+
menuw.hide unless menuw.destroyed?
|
75
|
+
}
|
76
|
+
cancel.set_relief(Gtk::ReliefStyle::NONE).signal_connect('clicked',menuw,self){|button,menuw,me|
|
77
|
+
menuw.hide
|
78
|
+
}
|
79
|
+
menuw.set_modal(true).set_window_position(Gtk::Window::POS_MOUSE).show_all
|
80
|
+
=begin
|
81
|
+
#disabled per current compiz is generating the leave notify event in the wrong order
|
82
|
+
=end
|
83
|
+
menuw.signal_connect('leave-notify-event'){|me,e|
|
84
|
+
# me.destroy if e.window == me.window
|
85
|
+
me.hide if e.window == me.window
|
86
|
+
}
|
87
|
+
}
|
88
|
+
|
89
|
+
super()
|
90
|
+
set_shadow_type(Gtk::SHADOW_NONE)
|
91
|
+
signal_connect('destroy'){|me|
|
92
|
+
@notebook.wipe unless @notebook.nil?
|
93
|
+
@list.wipe unless @list.nil? || @list.destroyed?
|
94
|
+
unless @listbox.nil?
|
95
|
+
list_panel.destroy unless list_panel.destroyed?
|
96
|
+
@flistbox.destroy unless @flistbox.destroyed?
|
97
|
+
@listbox.destroy unless @listbox.destroyed?
|
98
|
+
@buttonholder.holder.destroy unless @buttonholder.holder.destroyed?
|
99
|
+
@list_panel.destroy unless @list_panel.destroyed?
|
100
|
+
end
|
101
|
+
@info.destroy unless @info.destroyed?
|
102
|
+
}
|
103
|
+
end
|
104
|
+
attr_accessor :list, :list_scroller, :list_panel, :list_id
|
105
|
+
attr_accessor :notebook, :child_placement
|
106
|
+
attr_reader :caller, :parentM, :widget, :info
|
107
|
+
attr_accessor :buttonholder, :placeholder_button
|
108
|
+
|
109
|
+
def embedd?
|
110
|
+
@list.embedd?
|
111
|
+
end
|
112
|
+
|
113
|
+
def update(notifier)
|
114
|
+
case notifier.class.name
|
115
|
+
when 'BarMenuItem', 'ButtonMenuItem', 'MyRendererButton'
|
116
|
+
list.set_id(@list_id=notifier.target)
|
117
|
+
when 'MyEditableList'
|
118
|
+
list.set_id(@list_id) #preserve the last id
|
119
|
+
else
|
120
|
+
edebug("unknown routing: #{notifier.class.name}","list","warning")
|
121
|
+
end
|
122
|
+
|
123
|
+
@child_placement=list.gtk_attribute('child_placement') || 'bottom'
|
124
|
+
@button_placement=list.gtk_attribute('button_placement') || 'bottom'
|
125
|
+
@gantt_start=list.gtk_attribute('gantt_start')
|
126
|
+
@gantt_duration=list.gtk_attribute('gantt_duration')
|
127
|
+
|
128
|
+
@listbox.remove(@flistbox).remove(@buttonholder.holder) unless @listbox.nil?
|
129
|
+
@gantt.destroy unless @gantt.nil?
|
130
|
+
@gantt=nil
|
131
|
+
unless @widget.nil?
|
132
|
+
@widget.remove(child1) unless child1.nil?
|
133
|
+
@widget.remove(child2) unless child2.nil?
|
134
|
+
@widget.destroy
|
135
|
+
end
|
136
|
+
|
137
|
+
@buttonholder.set_orientation((@button_placement == 'right' ? Gtk::ORIENTATION_VERTICAL : Gtk::ORIENTATION_HORIZONTAL))
|
138
|
+
|
139
|
+
@widget=if @child_placement == 'right' then HHolder.new(self) else VHolder.new(self) end
|
140
|
+
@listbox=if @button_placement == 'right' then Gtk::HBox.new else Gtk::VBox.new end
|
141
|
+
@listbox.pack_start(@flistbox,true,true,0).pack_start(@buttonholder.holder,false,false,0)
|
142
|
+
|
143
|
+
if @gantt_start.nil?
|
144
|
+
gantt_box=@listbox
|
145
|
+
else
|
146
|
+
gantt_box=Gtk::HPaned.new.add1(@listbox).add2(@gantt=GanttHolder.new(self))
|
147
|
+
if gpos=get_conf(@list.get_id,0,"gantt_position")
|
148
|
+
gantt_box.set_position(gpos.to_i).set_position_set(true)
|
149
|
+
end
|
150
|
+
gantt_box.signal_connect("size-allocate"){|me,alloc|
|
151
|
+
set_conf(@list.get_id,0,"gantt_position",me.position)
|
152
|
+
}
|
153
|
+
end
|
154
|
+
|
155
|
+
@widget.pack1(gantt_box,true,true)
|
156
|
+
@widget.signal_connect("size_allocate"){|me,alloc|
|
157
|
+
set_conf(@list.get_id,0,"position",me.position) unless me.position == 0
|
158
|
+
}
|
159
|
+
|
160
|
+
add(@widget)
|
161
|
+
|
162
|
+
#children
|
163
|
+
@submodules=list.list_model.drbmodel.childs.size
|
164
|
+
if @submodules>0
|
165
|
+
@notebook=MyNotebook.new(self)
|
166
|
+
@notebook.show_all
|
167
|
+
pack2(@notebook)
|
168
|
+
if (position=get_conf(list_id,0,"position")||0) !=0
|
169
|
+
widget.set_position(position.to_i)
|
170
|
+
widget.set_position_set(true)
|
171
|
+
end
|
172
|
+
else
|
173
|
+
@notebook.wipe if @notebook
|
174
|
+
@notebook=nil
|
175
|
+
@widget.remove(child2) unless child2.nil?
|
176
|
+
end
|
177
|
+
|
178
|
+
show_all
|
179
|
+
list_panel.set_visibility
|
180
|
+
@notebook.update(@list) if @submodules>0
|
181
|
+
@list.load_data(notifier)
|
182
|
+
@gantt.update unless @gantt.nil?
|
183
|
+
end
|
184
|
+
|
185
|
+
def repack_widget
|
186
|
+
end
|
187
|
+
|
188
|
+
def history_window
|
189
|
+
HistoryWindow.new(self)
|
190
|
+
end
|
191
|
+
|
192
|
+
def set_id(new_list_id)
|
193
|
+
@list_id=new_list_id
|
194
|
+
end
|
195
|
+
def set_parentM(parentM)
|
196
|
+
@parentM=parentM
|
197
|
+
list.set_parentM(parentM)
|
198
|
+
end
|
199
|
+
|
200
|
+
def progress
|
201
|
+
SB.instance.progress
|
202
|
+
end
|
203
|
+
def advanced_filter
|
204
|
+
@buttonholder.advanced_filter
|
205
|
+
end
|
206
|
+
def sum_button
|
207
|
+
@buttonholder.sum_button
|
208
|
+
end
|
209
|
+
def archive_button
|
210
|
+
@buttonholder.archive_button
|
211
|
+
end
|
212
|
+
def pack1(widget_to_pack)
|
213
|
+
@widget.pack1(widget_to_pack,true,true)
|
214
|
+
end
|
215
|
+
def pack2(widget_to_pack)
|
216
|
+
@widget.pack2(widget_to_pack,true,true)
|
217
|
+
end
|
218
|
+
def position
|
219
|
+
@widget.position
|
220
|
+
end
|
221
|
+
def child1
|
222
|
+
@widget.child1
|
223
|
+
end
|
224
|
+
def child2
|
225
|
+
@widget.child2
|
226
|
+
end
|
227
|
+
def set_position_set(set_pos)
|
228
|
+
@widget.set_position_set(set_pos)
|
229
|
+
end
|
230
|
+
def set_position(pos)
|
231
|
+
@widget.set_position(pos)
|
232
|
+
end
|
233
|
+
def title
|
234
|
+
@list.title || 'none'
|
235
|
+
end
|
236
|
+
|
237
|
+
def to_s
|
238
|
+
"Holder of #{@list}"
|
239
|
+
end
|
240
|
+
end
|
241
|
+
end
|
data/lib/LoginWindow.rb
ADDED
@@ -0,0 +1,77 @@
|
|
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 LoginWindow < Gtk::Dialog
|
6
|
+
include ManqodCommon
|
7
|
+
def initialize(show_connections_combo=false)
|
8
|
+
@curcon=nil
|
9
|
+
super("manqod login",nil,nil,[Gtk::Stock::OK,Gtk::Dialog::RESPONSE_ACCEPT],[Gtk::Stock::QUIT,Gtk::Dialog::RESPONSE_REJECT])
|
10
|
+
set_window_position(Gtk::Window::POS_CENTER)
|
11
|
+
|
12
|
+
table=Gtk::Table.new(3,2,false)
|
13
|
+
@conn_combo=Gtk::ComboBox.new(conn_model=Gtk::ListStore.new(String,String))
|
14
|
+
if show_connections_combo
|
15
|
+
table.attach(Gtk::Label.new('Connection'),0,1,0,1,Gtk::FILL,Gtk::FILL)
|
16
|
+
table.attach(@conn_combo,1,2,0,1,Gtk::FILL|Gtk::EXPAND,Gtk::FILL|Gtk::EXPAND)
|
17
|
+
end
|
18
|
+
@conn_combo.pack_start(renderer=Gtk::CellRendererText.new,true).add_attribute(renderer,:text,0)
|
19
|
+
table.attach(Gtk::Label.new('Username'),0,1,1,2,Gtk::FILL,Gtk::FILL)
|
20
|
+
table.attach(@nick_entry=Gtk::Entry.new,1,2,1,2,Gtk::FILL|Gtk::EXPAND,Gtk::FILL|Gtk::EXPAND)
|
21
|
+
table.attach(@passwd_label=Gtk::Label.new('Password'),0,1,2,3,Gtk::FILL,Gtk::FILL)
|
22
|
+
table.attach(@passwd=Gtk::Entry.new.set_visibility(false),1,2,2,3,Gtk::FILL|Gtk::EXPAND,Gtk::FILL|Gtk::EXPAND)
|
23
|
+
@passwd.signal_connect("activate") {|me|response(Gtk::Dialog::RESPONSE_ACCEPT)}
|
24
|
+
@nick_entry.signal_connect("activate") {|me|response(Gtk::Dialog::RESPONSE_ACCEPT)}
|
25
|
+
@conn_combo.signal_connect("changed"){|me|
|
26
|
+
@curcon=ManqodRPC.instance.manqod_server.conn(@conn_combo.active_iter[1])
|
27
|
+
}
|
28
|
+
ManqodRPC.instance.manqod_server.conn_list{|conn_name,conn|
|
29
|
+
begin
|
30
|
+
alive=ManqodRPC.instance.manqod_server.dbs[conn_name].alive?
|
31
|
+
rescue =>err
|
32
|
+
alive=false
|
33
|
+
end
|
34
|
+
if alive
|
35
|
+
iter=conn_model.append
|
36
|
+
iter[0]=conn["name"]
|
37
|
+
iter[1]=conn_name
|
38
|
+
if conn.has_key?("client_default") and conn["client_default"]==true
|
39
|
+
@conn_combo.set_active_iter(iter)
|
40
|
+
end
|
41
|
+
end
|
42
|
+
}
|
43
|
+
|
44
|
+
|
45
|
+
vbox.pack_start(table)
|
46
|
+
end
|
47
|
+
|
48
|
+
def run
|
49
|
+
show_all
|
50
|
+
@nick_entry.grab_focus
|
51
|
+
ret=nil
|
52
|
+
while not (nick or ret==Gtk::Dialog::RESPONSE_REJECT)
|
53
|
+
ret=super()
|
54
|
+
if ret==Gtk::Dialog::RESPONSE_ACCEPT and !@curcon.nil?
|
55
|
+
#auth
|
56
|
+
np = Digest::MD5.new
|
57
|
+
np.update(@passwd.text)
|
58
|
+
if set_manqod_db_uri(@curcon['uri']) #"druby://#{@curcon['drb_host']}:#{@curcon['drb_port']}")
|
59
|
+
if @passwd.visible? then
|
60
|
+
if ManqodDB.instance.manqod_db.auth?(@nick_entry.text,np.hexdigest)
|
61
|
+
set_nick(@nick_entry.text)
|
62
|
+
else
|
63
|
+
errwin=Gtk::MessageDialog.new(nil,Gtk::Dialog::Flags::MODAL,Gtk::MessageDialog::ERROR,Gtk::MessageDialog::ButtonsType::CLOSE,"login failed!");errwin.run;errwin.destroy
|
64
|
+
end
|
65
|
+
else
|
66
|
+
set_nick(@nick_entry.text)
|
67
|
+
end
|
68
|
+
else
|
69
|
+
errwin=Gtk::MessageDialog.new(nil,Gtk::Dialog::Flags::MODAL,Gtk::MessageDialog::ERROR,Gtk::MessageDialog::ButtonsType::CLOSE,"connecting to server #{@curcon['name']} failed!");errwin.run;errwin.destroy
|
70
|
+
end
|
71
|
+
end
|
72
|
+
end
|
73
|
+
hide_all
|
74
|
+
nick
|
75
|
+
end
|
76
|
+
end
|
77
|
+
|
data/lib/MainRouter.rb
ADDED
@@ -0,0 +1,64 @@
|
|
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 MainRouter < Gtk::Frame
|
6
|
+
include ManqodCommon
|
7
|
+
def initialize(mainwindow)
|
8
|
+
@mainwindow=mainwindow
|
9
|
+
@last_notifier=nil
|
10
|
+
@mymodule=nil
|
11
|
+
super()
|
12
|
+
end
|
13
|
+
attr_accessor :mainwindow
|
14
|
+
attr_accessor :mymodule
|
15
|
+
attr_accessor :last_notifier,:notifier
|
16
|
+
|
17
|
+
def reset_child
|
18
|
+
#used by F5 refresh
|
19
|
+
unless mymodule.nil?
|
20
|
+
child.destroy unless child.destroyed?
|
21
|
+
@mymodule=nil
|
22
|
+
end
|
23
|
+
@last_notifier=nil
|
24
|
+
end
|
25
|
+
|
26
|
+
def update(notifier)
|
27
|
+
if ['help','quit'].include?(notifier.modname)
|
28
|
+
case notifier.modname
|
29
|
+
when "quit"
|
30
|
+
notifier=last_notifier
|
31
|
+
@mainwindow.destroy if @mainwindow.shut_down?
|
32
|
+
when "help" then
|
33
|
+
notifier=last_notifier
|
34
|
+
ManqodHelp.new.populate.show_all
|
35
|
+
end
|
36
|
+
else
|
37
|
+
mainwindow.window.set_cursor(Gdk::Cursor.new(Gdk::Cursor::WATCH))
|
38
|
+
child.destroy unless child.nil?
|
39
|
+
@mymodule=nil
|
40
|
+
@notifier=notifier
|
41
|
+
case notifier.modname
|
42
|
+
when "listing" then set_child(Mylist::MyListHolder.new(self))
|
43
|
+
when "about" then set_child(About.new())
|
44
|
+
when "config" then set_child(MyConfig.new())
|
45
|
+
when "relation_builder" then set_child(RelationBuilder.new())
|
46
|
+
when "form" then set_child(Myform::MyFormHolder.new("embedded",notifier,"dry",notifier.target))
|
47
|
+
end
|
48
|
+
@mymodule=child.destroyed? ? nil : child
|
49
|
+
Gtk.show_thread_changes
|
50
|
+
|
51
|
+
unless mymodule.nil? || @mainwindow.destroyed?
|
52
|
+
begin
|
53
|
+
mymodule.update(notifier)
|
54
|
+
rescue => err
|
55
|
+
tell_exception("internal error occured",backtrace_to_debug(err),"main","error")
|
56
|
+
end
|
57
|
+
@mainwindow.set_title(mymodule.title)
|
58
|
+
mymodule.show_all
|
59
|
+
@last_notifier=@notifier
|
60
|
+
end
|
61
|
+
mainwindow.window.set_cursor(nil) unless @mainwindow.destroyed?
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|