manqod 1.1505.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (142) hide show
  1. data/bin/manqod +309 -0
  2. data/doc/HOWTOS +11 -0
  3. data/doc/INSTALL +6 -0
  4. data/doc/LICENCE +450 -0
  5. data/doc/README +33 -0
  6. data/doc/benchmarkings/ListLoader.rb +177 -0
  7. data/doc/manqod.png +0 -0
  8. data/doc/manqod.svg +99 -0
  9. data/doc/server.conf.example +24 -0
  10. data/lib/About.rb +93 -0
  11. data/lib/BarMenu/BarMenuItem.rb +46 -0
  12. data/lib/BarMenu.rb +76 -0
  13. data/lib/ButtonMenu/ButtonMenuItem.rb +82 -0
  14. data/lib/ButtonMenu/EndSeparator.rb +14 -0
  15. data/lib/ButtonMenu/StartSeparator.rb +14 -0
  16. data/lib/ButtonMenu.rb +154 -0
  17. data/lib/Common/Conf.rb +119 -0
  18. data/lib/Common/Eprint.rb +180 -0
  19. data/lib/Common/EventCache.rb +41 -0
  20. data/lib/Common/Fixnum.rb +18 -0
  21. data/lib/Common/Images.rb +41 -0
  22. data/lib/Common/ManqodDB.rb +40 -0
  23. data/lib/Common/MyExec.rb +77 -0
  24. data/lib/Common/MyImage.rb +47 -0
  25. data/lib/Common/Nick.rb +25 -0
  26. data/lib/Common/String.rb +15 -0
  27. data/lib/FormHolder/Form/InputHolder/Button.rb +133 -0
  28. data/lib/FormHolder/Form/InputHolder/Calendar.rb +101 -0
  29. data/lib/FormHolder/Form/InputHolder/CalendarButton.rb +117 -0
  30. data/lib/FormHolder/Form/InputHolder/ColorButton.rb +54 -0
  31. data/lib/FormHolder/Form/InputHolder/Combo.rb +82 -0
  32. data/lib/FormHolder/Form/InputHolder/ComboWithNew.rb +103 -0
  33. data/lib/FormHolder/Form/InputHolder/Common/Model.rb +337 -0
  34. data/lib/FormHolder/Form/InputHolder/ConstCombo.rb +18 -0
  35. data/lib/FormHolder/Form/InputHolder/ConstText.rb +17 -0
  36. data/lib/FormHolder/Form/InputHolder/Duration.rb +73 -0
  37. data/lib/FormHolder/Form/InputHolder/EditableList.rb +57 -0
  38. data/lib/FormHolder/Form/InputHolder/FieldCombo.rb +40 -0
  39. data/lib/FormHolder/Form/InputHolder/FieldList.rb +40 -0
  40. data/lib/FormHolder/Form/InputHolder/FileChooser.rb +131 -0
  41. data/lib/FormHolder/Form/InputHolder/FontButton.rb +37 -0
  42. data/lib/FormHolder/Form/InputHolder/FormImage.rb +74 -0
  43. data/lib/FormHolder/Form/InputHolder/HScale.rb +44 -0
  44. data/lib/FormHolder/Form/InputHolder/Hidden.rb +41 -0
  45. data/lib/FormHolder/Form/InputHolder/Label.rb +40 -0
  46. data/lib/FormHolder/Form/InputHolder/List.rb +176 -0
  47. data/lib/FormHolder/Form/InputHolder/MultiLine.rb +63 -0
  48. data/lib/FormHolder/Form/InputHolder/Password.rb +41 -0
  49. data/lib/FormHolder/Form/InputHolder/QBuilder/QObject.rb +269 -0
  50. data/lib/FormHolder/Form/InputHolder/QBuilder.rb +333 -0
  51. data/lib/FormHolder/Form/InputHolder/RadioGroup.rb +82 -0
  52. data/lib/FormHolder/Form/InputHolder/SourceView.rb +100 -0
  53. data/lib/FormHolder/Form/InputHolder/Spin.rb +49 -0
  54. data/lib/FormHolder/Form/InputHolder/Text.rb +55 -0
  55. data/lib/FormHolder/Form/InputHolder/TimeStamp.rb +82 -0
  56. data/lib/FormHolder/Form/InputHolder/TimeStampButton.rb +93 -0
  57. data/lib/FormHolder/Form/InputHolder/Toggle.rb +43 -0
  58. data/lib/FormHolder/Form/InputHolder.rb +458 -0
  59. data/lib/FormHolder/Form.rb +529 -0
  60. data/lib/FormHolder.rb +203 -0
  61. data/lib/Gtk.rb +101 -0
  62. data/lib/GtkAttributes.rb +76 -0
  63. data/lib/Kernel.rb +48 -0
  64. data/lib/ListHolder/EditableList/CellRenderers/Combo.rb +91 -0
  65. data/lib/ListHolder/EditableList/CellRenderers/ComboText.rb +22 -0
  66. data/lib/ListHolder/EditableList/CellRenderers/ConstCombo.rb +12 -0
  67. data/lib/ListHolder/EditableList/CellRenderers/ConstText.rb +23 -0
  68. data/lib/ListHolder/EditableList/CellRenderers/Pixbuf.rb +18 -0
  69. data/lib/ListHolder/EditableList/CellRenderers/Progress.rb +36 -0
  70. data/lib/ListHolder/EditableList/CellRenderers/Text.rb +51 -0
  71. data/lib/ListHolder/EditableList/CellRenderers/Toggle.rb +35 -0
  72. data/lib/ListHolder/EditableList/Column.rb +223 -0
  73. data/lib/ListHolder/EditableList/DrbListModel.rb +809 -0
  74. data/lib/ListHolder/EditableList/ListPrintOperation/ColumnsHeaderLayout.rb +56 -0
  75. data/lib/ListHolder/EditableList/ListPrintOperation/CustomPageSetup.rb +100 -0
  76. data/lib/ListHolder/EditableList/ListPrintOperation/FooterLayout.rb +26 -0
  77. data/lib/ListHolder/EditableList/ListPrintOperation/HeaderLayout.rb +35 -0
  78. data/lib/ListHolder/EditableList/ListPrintOperation/IterLayout.rb +89 -0
  79. data/lib/ListHolder/EditableList/ListPrintOperation.rb +365 -0
  80. data/lib/ListHolder/EditableList.rb +309 -0
  81. data/lib/ListHolder/GanttHolder/Gantt/Rectangle.rb +290 -0
  82. data/lib/ListHolder/GanttHolder/Gantt.rb +317 -0
  83. data/lib/ListHolder/GanttHolder/GanttFooter.rb +27 -0
  84. data/lib/ListHolder/GanttHolder/GanttScaler.rb +60 -0
  85. data/lib/ListHolder/GanttHolder.rb +31 -0
  86. data/lib/ListHolder/HistoryWindow.rb +63 -0
  87. data/lib/ListHolder/ListButtonHolder/ArchiveButton.rb +37 -0
  88. data/lib/ListHolder/ListButtonHolder/ButtonGroup.rb +32 -0
  89. data/lib/ListHolder/ListButtonHolder/FilterButton.rb +28 -0
  90. data/lib/ListHolder/ListButtonHolder/ListButton.rb +305 -0
  91. data/lib/ListHolder/ListButtonHolder/OrderingButton.rb +26 -0
  92. data/lib/ListHolder/ListButtonHolder/SumPanelButton.rb +23 -0
  93. data/lib/ListHolder/ListButtonHolder.rb +94 -0
  94. data/lib/ListHolder/ListPanel/ListFilter/FRenderer/Combo.rb +94 -0
  95. data/lib/ListHolder/ListPanel/ListFilter/FRenderer/ConstCombo.rb +11 -0
  96. data/lib/ListHolder/ListPanel/ListFilter/FRenderer/Text.rb +26 -0
  97. data/lib/ListHolder/ListPanel/ListFilter/FRenderer/Toggle.rb +41 -0
  98. data/lib/ListHolder/ListPanel/ListFilter/FRenderer.rb +58 -0
  99. data/lib/ListHolder/ListPanel/ListFilter.rb +42 -0
  100. data/lib/ListHolder/ListPanel/ListSum/Text.rb +32 -0
  101. data/lib/ListHolder/ListPanel/ListSum.rb +72 -0
  102. data/lib/ListHolder/ListPanel.rb +60 -0
  103. data/lib/ListHolder.rb +241 -0
  104. data/lib/LoginWindow.rb +77 -0
  105. data/lib/MainRouter.rb +64 -0
  106. data/lib/ManqodCommon.rb +295 -0
  107. data/lib/ManqodHelp/FormatEditor/FormatJustificationWidget.rb +76 -0
  108. data/lib/ManqodHelp/FormatsEditor.rb +139 -0
  109. data/lib/ManqodHelp/HelpBrowser/FormatTagTable/FormatTag.rb +84 -0
  110. data/lib/ManqodHelp/HelpBrowser/FormatTagTable.rb +39 -0
  111. data/lib/ManqodHelp/HelpBrowser.rb +135 -0
  112. data/lib/ManqodHelp/HelpIndex.rb +62 -0
  113. data/lib/ManqodHelp/HelpToolbar.rb +16 -0
  114. data/lib/ManqodHelp.rb +120 -0
  115. data/lib/ManqodRPC.rb +37 -0
  116. data/lib/Memcache.rb +82 -0
  117. data/lib/MyConfig.rb +93 -0
  118. data/lib/Print/PrintItem/TextLayout.rb +47 -0
  119. data/lib/Print/PrintItem.rb +240 -0
  120. data/lib/Print.rb +199 -0
  121. data/lib/PrintEditor/ItemInfo/ItemImage.rb +30 -0
  122. data/lib/PrintEditor/ItemInfo/ItemList.rb +44 -0
  123. data/lib/PrintEditor/ItemInfo/ItemTextAlignment.rb +27 -0
  124. data/lib/PrintEditor/ItemInfo.rb +129 -0
  125. data/lib/PrintEditor/PageLayout.rb +91 -0
  126. data/lib/PrintEditor/PrintEditorItem.rb +310 -0
  127. data/lib/PrintEditor.rb +195 -0
  128. data/lib/RelationBuilder/RTable/RField.rb +91 -0
  129. data/lib/RelationBuilder/RTable.rb +293 -0
  130. data/lib/RelationBuilder/Relation/RelationHandle.rb +70 -0
  131. data/lib/RelationBuilder/Relation.rb +161 -0
  132. data/lib/RelationBuilder/RunQuery.rb +55 -0
  133. data/lib/RelationBuilder/SearchWindow.rb +72 -0
  134. data/lib/RelationBuilder.rb +468 -0
  135. data/lib/SB/ListProgress.rb +150 -0
  136. data/lib/SB/Messaging.rb +77 -0
  137. data/lib/SB.rb +29 -0
  138. data/lib/mynotebook.rb +131 -0
  139. data/lib/mytouchwindow.rb +162 -0
  140. data/lib/mywindow.rb +134 -0
  141. data/lib/wysiwyg-print-label.rb +57 -0
  142. metadata +231 -0
@@ -0,0 +1,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
@@ -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