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
data/lib/SB.rb ADDED
@@ -0,0 +1,29 @@
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 SB <Gtk::Statusbar
6
+ include Singleton
7
+ include Eprint
8
+ def initialize
9
+ super
10
+ set_homogeneous(false)
11
+ pack_start(@messaging=Messaging.instance,false,false)
12
+ pack_start(Gtk::Label.new,true,true)
13
+ pack_start(@progress=MultiProgress.new,false,false)
14
+ end
15
+ attr_reader :progress, :parent_window, :messaging
16
+
17
+ def set_parent_window(parent_window)
18
+ @parent_window=parent_window
19
+ end
20
+
21
+ def show
22
+ super unless visible?
23
+ end
24
+
25
+ def to_s
26
+ "SB"
27
+ end
28
+ end
29
+
data/lib/mynotebook.rb ADDED
@@ -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 MyNotebook < Gtk::Notebook
6
+ include Observable
7
+ include Conf
8
+ include ManqodCommon
9
+ def initialize(parentM)
10
+ @parentM=parentM
11
+ @list_id=nil
12
+ @mypages=Array.new
13
+ @list_count=0
14
+ super()
15
+ set_enable_popup(false)
16
+ set_scrollable(true)
17
+ # set_show_border(false)
18
+ # set_tab_border(0)
19
+ parentM.list.add_observer(self)
20
+ end
21
+ attr_accessor :notifier, :parentM, :list_id
22
+ attr_reader :list_count
23
+
24
+ def update(notifier)
25
+ set_conf(notifier.list_id,0,"page",self.page) if self.page>-1
26
+ =begin
27
+ # set_conf(list_id,0,"position",@parentM.widget.position) if @parentM.widget.position > 0
28
+ if (position=get_conf(notifier.list_id,0,"position")||0) !=0
29
+ ecode("#{position}=>#{parentM.widget.position}")
30
+ parentM.widget.set_position(position.to_i)
31
+ parentM.widget.set_position_set(true)
32
+ end
33
+ =end
34
+ if @list_id != notifier.list_id
35
+ wipe
36
+ @mypages=Array.new
37
+ @list_count=0
38
+ case (notifier.class.name)
39
+ when 'MyEditableList'
40
+ parentid=notifier.get_id
41
+ edebug("notifier changed: #{notifier}, repacking","sub-list","debug")
42
+ else
43
+ edebug("unknown routing: "+notifier.class.name,"sub-list","warning")
44
+ end
45
+ if parentid
46
+ notifier.list_model.drbmodel.childs.each{|moditem|
47
+ case moditem['modname']
48
+ when 'listing'
49
+ submoditem_holder=Mylist::MyListHolder.new(self)
50
+ submoditem_holder.set_parentM(notifier)
51
+ submoditem=submoditem_holder.list
52
+ submoditem.set_id(moditem['id'])
53
+ submoditem_holder.update(notifier)
54
+ @list_count+=1
55
+ when 'form'
56
+ submoditem_holder=Myform::MyFormHolder.new("embedded",self,"modify",moditem['id']).holder
57
+ submoditem_holder.holder.set_parentM(notifier)
58
+ submoditem=submoditem_holder.form
59
+ # submoditem.title=moditem['display']
60
+ # submoditem.set_id(moditem['id'])
61
+ submoditem.update(notifier,parentid)
62
+ end
63
+ @mypages.push(submoditem_holder)
64
+ submoditem.is_embedded=submoditem.embedd?
65
+ if submoditem.is_embedded
66
+ insert_page(submoditem.moditem["oid"].to_i,submoditem_holder,Gtk::Label.new(submoditem.title))
67
+ end
68
+ }
69
+ end
70
+ show_all if n_pages > 0
71
+ set_page(get_conf(notifier.list_id,0,"page").to_i) if get_conf(notifier.list_id,0,"page")
72
+ @list_id=notifier.list_id
73
+ else
74
+ edebug("notifier: #{notifier}, calling update in childs","sub-list","info")
75
+ @mypages.each{|submoditem_holder|
76
+ case submoditem_holder.class.name
77
+ when "Mylist::MyListHolder" then
78
+ submoditem=submoditem_holder.list
79
+ submoditem.update(notifier)
80
+ when "Myform::MyFormHolder::EmbeddedFormHolder" then
81
+ submoditem=submoditem_holder.form
82
+ submoditem_holder.update(notifier,notifier.get_cursor_id)
83
+ else edebug("unknown subitem: "+submoditem_holder.class.name,"sub-list","warning")
84
+ end
85
+ if submoditem
86
+ if submoditem.embedd? != submoditem.is_embedded
87
+ if submoditem.embedd?
88
+ insert_page(submoditem.moditem["oid"].to_i,submoditem_holder,Gtk::Label.new(submoditem.title))
89
+ else
90
+ remove_page(page_num(submoditem_holder))
91
+ end
92
+ submoditem.is_embedded=submoditem.embedd?
93
+ end
94
+ end
95
+ }
96
+ show_all
97
+ end
98
+ end#update
99
+
100
+ def moditem_by_id(mid)
101
+ found_item=nil
102
+ each{|submoditem|
103
+ case submoditem.class.name
104
+ when "Mylist::MyListHolder" then found_item=submoditem.list if submoditem.list.get_id.to_i == mid.to_i
105
+ when "MyFormHolder" then found_item=submoditem.form if submoditem.form.get_id.to_i == mid.to_i
106
+ else edebug("unknown submoditem: #{submoditem.class.name}","notebook","warning")
107
+ end
108
+ }
109
+ found_item
110
+ end
111
+
112
+ #yield child ListHolders
113
+ def lists
114
+ each{|submoditem|
115
+ yield submoditem if submoditem.class.name == "Mylist::MyListHolder"
116
+ }
117
+ end
118
+
119
+ def wipe
120
+ @mypages.each{|sublist| sublist.destroy}
121
+ while n_pages>0 do remove_page(-1) end
122
+ end
123
+
124
+ def my
125
+ @@my
126
+ end
127
+ def to_s
128
+ "Notebook of #{@parentM}"
129
+ end
130
+ end
131
+
@@ -0,0 +1,162 @@
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
+ require('mymysql')
6
+ require('gtk2')
7
+ require('observer')
8
+ require('myform')
9
+
10
+
11
+ class MyTouchWindow < Gtk::Window
12
+ class TouchButton < Gtk::Button
13
+ def initialize(label,left,right,top,bottom,parent)
14
+ super(label)
15
+ parent.attach(self,left,right,top,bottom,Gtk::FILL|Gtk::EXPAND,Gtk::FILL|Gtk::EXPAND,1,1)
16
+ set_name("TouchButton")
17
+ set_focus_on_click(false).set_can_focus(false)
18
+ signal_connect('clicked'){|me|
19
+ focused=me.get_ancestor(MyTouchWindow).focus
20
+ if focused.class.name=="MyRendererText"
21
+ case label
22
+ when "<-"
23
+ focused.text=focused.text.chop
24
+ else
25
+ focused.text=focused.text+label
26
+ end
27
+ end
28
+ }
29
+ end
30
+ end
31
+ def initialize
32
+ super()
33
+ fullscreen
34
+ # set_icon('e.png')
35
+ # set_window_position(Gtk::Window::POS_CENTER_ALWAYS)
36
+ self.title='manqod Touch'
37
+
38
+ agg=Gtk::AccelGroup.new
39
+ agg.connect(Gdk::Keyval.to_upper(81),nil,Gtk::ACCEL_VISIBLE){
40
+ Gtk.main_quit
41
+ }
42
+ add_accel_group(agg)
43
+
44
+ rc="
45
+ style 'keypadbutton'
46
+ {
47
+ bg[NORMAL]='#e09028'
48
+ bg[PRELIGHT]='#eed60b'
49
+ bg[ACTIVE]='#c1ee0b'
50
+ xthickness=10
51
+ ythickness=10
52
+ font='Helvetica'
53
+ }
54
+
55
+ style 'button'
56
+ {
57
+ bg[NORMAL]='#0c6db1'
58
+ bg[PRELIGHT]='#0cb1ab'
59
+ bg[ACTIVE]='#0b41db'
60
+ xthickness=10
61
+ ythickness=10
62
+ }
63
+
64
+ style 'all'
65
+ {
66
+ bg[NORMAL] = '#fff3a4'
67
+ bg[PRELIGHT] = '#ebff62'
68
+ bg[ACTIVE] = '#dcfb08'
69
+ xthickness = 10
70
+ ythickness = 10
71
+ GtkRange::stepper-size = 100
72
+ GtkRange::slider-width = 100
73
+ font_name = 'Serif 30'
74
+ }
75
+
76
+ widget '*' style 'all'
77
+ widget '*Button*' style 'button'
78
+ widget '*TouchButton*' style 'keypadbutton'
79
+ "
80
+ Gtk::RC.parse_string(rc)
81
+
82
+
83
+ signal_connect("destroy") {|me|
84
+ edebug("normal shutdown\n","touch","normal")
85
+ Gtk.main_quit
86
+ }
87
+
88
+ signal_connect('key-press-event') {|me,key|
89
+ edebug("key: "+key.to_s,"touch","info")
90
+ }
91
+
92
+
93
+ @holder=Gtk::Table.new(1,2,false)
94
+ add(Gtk::Frame.new.add(@holder))
95
+ @touchcontrol=Gtk::Table.new(5,3,true)
96
+ @touchcontrol.set_column_spacings(10).set_row_spacings(10)
97
+
98
+ @b1=TouchButton.new('1',0,1,0,1,@touchcontrol)#.set_size_request(100, 100)
99
+ @b2=TouchButton.new('2',1,2,0,1,@touchcontrol)
100
+ @b3=TouchButton.new('3',2,3,0,1,@touchcontrol)
101
+
102
+ @b4=TouchButton.new('4',0,1,1,2,@touchcontrol)
103
+ @b5=TouchButton.new('5',1,2,1,2,@touchcontrol)
104
+ @b6=TouchButton.new('6',2,3,1,2,@touchcontrol)
105
+
106
+ @b7=TouchButton.new('7',0,1,2,3,@touchcontrol)
107
+ @b8=TouchButton.new('8',1,2,2,3,@touchcontrol)
108
+ @b9=TouchButton.new('9',2,3,2,3,@touchcontrol)
109
+
110
+ @b0=TouchButton.new('0',0,1,3,4,@touchcontrol)
111
+ @b000=TouchButton.new('000',1,2,3,4,@touchcontrol).modify_font(Pango::FontDescription.new.set_size(24).set_family('Helvetica').set_weight(30))
112
+
113
+ @bp=TouchButton.new('.',2,3,3,4,@touchcontrol)
114
+ @back=TouchButton.new('<-',0,1,4,5,@touchcontrol)
115
+
116
+
117
+ @touchcontrol.resize(5,3)
118
+ @keypad=Gtk::Frame.new.add(@touchcontrol)
119
+ @keypad_is_visible=false
120
+ # @touchcontrol.set_no_show_all(true)
121
+ end
122
+
123
+ attr_accessor :keypad_is_visible
124
+
125
+ def run
126
+ @formholder=Myform::MyFormHolder.new("touchscreen",self)
127
+ @holder.attach(@formholder.holder,0,1,0,1,Gtk::EXPAND|Gtk::FILL, Gtk::EXPAND|Gtk::FILL, 0, 0)
128
+ show_all
129
+ @formholder.form.set_id("59")
130
+ @formholder.form.update(self)
131
+ end
132
+
133
+ def keypad(vis)
134
+ if vis
135
+ if !keypad_is_visible
136
+ @holder.attach(@keypad,1,2,0,1,Gtk::EXPAND|Gtk::FILL, Gtk::EXPAND|Gtk::FILL, 0, 0)
137
+ @keypad.show_all
138
+ keypad_is_visible=true
139
+ edebug("keypad visible set: "+vis.to_s,"touch","debug")
140
+ else
141
+ edebug("keypad allready visible","touch","debug")
142
+ end
143
+ else
144
+ if keypad_is_visible
145
+ @holder.remove(@keypad)
146
+ keypad_is_visible=false
147
+ edebug("keypad visible set: "+vis.to_s,"touch","debug")
148
+ else
149
+ edebug("keypad allready hidden","touch","debug")
150
+ end
151
+ end
152
+ end
153
+
154
+ def show_keypad
155
+ keypad(true)
156
+ end
157
+ def hide_keypad
158
+ keypad(false)
159
+ end
160
+
161
+ end
162
+
data/lib/mywindow.rb ADDED
@@ -0,0 +1,134 @@
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
+ Thread.abort_on_exception = false
6
+
7
+ class MyWindow < Gtk::Window
8
+ include ManqodCommon
9
+ include Conf
10
+ def initialize
11
+ ManqodRPC.instance.register_client
12
+ super()
13
+
14
+ # set_auto_startup_notification(true)
15
+ # set_window_position(Gtk::Window::POS_CENTER_ALWAYS)
16
+ self.title='manqod login'
17
+ run
18
+
19
+ signal_connect("delete-event"){|me,ev|
20
+ !shut_down?
21
+ }
22
+ signal_connect("destroy") {|me,ev|
23
+ if mainrouter
24
+ mainrouter.destroy
25
+ save_conf
26
+ edebug("quit","main","normal",false)
27
+ end
28
+ Gtk.main_quit
29
+ ManqodRPC.instance.unregister_client
30
+ }
31
+ signal_connect("configure-event"){|me,event|
32
+ if nick
33
+ set_conf(0,0,"width",event.width.to_s)
34
+ set_conf(0,0,"height",event.height.to_s)
35
+ set_conf(0,0,"x",event.x.to_s)
36
+ set_conf(0,0,"y",event.y.to_s)
37
+ end
38
+ false
39
+ }
40
+ signal_connect("window-state-event"){|me,event|
41
+ if nick
42
+ set_conf(0,0,"maximized",(event.new_window_state & Gdk::EventWindowState::MAXIMIZED == Gdk::EventWindowState::MAXIMIZED).to_s)
43
+ set_conf(0,0,"minimized",(event.new_window_state & Gdk::EventWindowState::ICONIFIED == Gdk::EventWindowState::ICONIFIED).to_s)
44
+ set_conf(0,0,"minimized",(event.new_window_state & Gdk::EventWindowState::FULLSCREEN == Gdk::EventWindowState::FULLSCREEN).to_s)
45
+ end
46
+ false
47
+ }
48
+
49
+ @@ag = Gtk::AccelGroup.new
50
+ @@ag.connect(Gdk::Keyval::GDK_KEY_F5,nil ,Gtk::ACCEL_VISIBLE){
51
+ @mainrouter.reset_child
52
+ @mymenu.update(self)
53
+ }
54
+ @@ag.connect(Gdk::Keyval::GDK_KEY_F4,nil ,Gtk::ACCEL_VISIBLE){
55
+ gtk_set_edebug
56
+ }
57
+ add_accel_group(@@ag)
58
+
59
+
60
+ end
61
+ attr_accessor :mymenu
62
+ attr_accessor :holder
63
+ attr_accessor :mainrouter
64
+ attr_reader :sb
65
+
66
+ def run
67
+ SB.instance.set_parent_window(self)
68
+ load_conf
69
+ DrbImages.instance.load_images
70
+ begin
71
+ if main_image_id_row = admin.qrow("select imageid from gtkmenu order by id limit 1")
72
+ set_icon(DrbImages.instance.image_of_id(main_image_id_row["imageid"],"gtk-large-toolbar"))
73
+ end
74
+
75
+ if sw=get_conf(0,0,"width") and sh=get_conf(0,0,"height")
76
+ resize(sw.to_i,sh.to_i)# if sw.to_i * sh.to_i >0
77
+ else
78
+ resize(600,400)
79
+ end
80
+ sx=get_conf(0,0,"x") || 50
81
+ sy=get_conf(0,0,"y") || 60
82
+ move(sx.to_i,sy.to_i)
83
+
84
+ maximize if get_conf(0,0,"maximized") == "true"
85
+ iconify if get_conf(0,0,"iconified") == "true"
86
+ fullscreen if get_conf(0,0,"fullscreen") == "true"
87
+
88
+ #realize;window.set_functions(Gdk::Window::WMFunction::ALL | Gdk::Window::WMFunction::CLOSE)
89
+
90
+ @holder = Gtk::Table.new(2,4,false)
91
+ @mainrouter=MainRouter.new(self)
92
+ case get_conf(0,0,"menu-position")
93
+ when "top"
94
+ @mymenu = if get_conf(0,0,"menu-type")=="buttons" then MenuHolder.new(mainrouter);else BarMenu.new(mainrouter);end
95
+ holder.attach(mymenu ,0,1,0,1,Gtk::EXPAND|Gtk::FILL,Gtk::FILL)
96
+ holder.attach(mainrouter,0,1,1,2,Gtk::EXPAND|Gtk::FILL,Gtk::EXPAND|Gtk::FILL)
97
+ when "bottom"
98
+ @mymenu = if get_conf(0,0,"menu-type")=="buttons" then MenuHolder.new(mainrouter);else BarMenu.new(mainrouter);end
99
+ holder.attach(mainrouter,0,1,1,2,Gtk::EXPAND|Gtk::FILL,Gtk::EXPAND|Gtk::FILL)
100
+ holder.attach(mymenu ,0,1,2,3,Gtk::EXPAND|Gtk::FILL,Gtk::FILL)
101
+ when "left"
102
+ @mymenu = if get_conf(0,0,"menu-type")=="buttons" then MenuHolder.new(mainrouter,"vertical");else BarMenu.new(mainrouter,"vertical");end
103
+ holder.attach(mymenu ,0,1,0,2,Gtk::FILL,Gtk::EXPAND)
104
+ holder.attach(mainrouter,1,2,0,1,Gtk::EXPAND|Gtk::FILL,Gtk::EXPAND|Gtk::FILL)
105
+ when "right"
106
+ @mymenu = if get_conf(0,0,"menu-type")=="buttons" then MenuHolder.new(mainrouter,"vertical");else BarMenu.new(mainrouter,"vertical");end
107
+ holder.attach(mymenu ,1,2,0,2,Gtk::FILL,Gtk::EXPAND)
108
+ holder.attach(mainrouter,0,1,0,1,Gtk::EXPAND|Gtk::FILL,Gtk::EXPAND|Gtk::FILL)
109
+ end
110
+ @holder.attach(SB.instance,0,2,3,4,Gtk::FILL,Gtk::FILL)
111
+ add(holder)
112
+ show_all
113
+ Gtk.show_thread_changes
114
+ mymenu.update(mymenu.last)
115
+ Messaging.instance.check_messages
116
+ rescue => err
117
+ tell_exception("error occured",backtrace_to_debug(err),"main","warning")
118
+ end
119
+ end
120
+
121
+ def shut_down?
122
+ enormal("normal shutdown","main")
123
+ if get_conf(0,0,"confirm-exit") == "true"
124
+ warner=Gtk::MessageDialog.new(self,Gtk::Dialog::DESTROY_WITH_PARENT,Gtk::MessageDialog::QUESTION,Gtk::MessageDialog::BUTTONS_YES_NO,"quit")
125
+ warner.set_image(Gtk::Image.new(Gtk::Stock::QUIT,Gtk::IconSize::DIALOG))
126
+ ret=(warner.show_all.run == Gtk::Dialog::RESPONSE_YES)
127
+ warner.destroy
128
+ else
129
+ ret=true
130
+ end
131
+ ret
132
+ end
133
+ end
134
+
@@ -0,0 +1,57 @@
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 LayLabel < Gtk::EventBox
6
+ def initialize(text)
7
+ @x=0
8
+ @y=0
9
+ @text=text
10
+ @dragging=false
11
+ @myobject=Gtk::Label.new(@text)
12
+ super()
13
+ add(@myobject)
14
+
15
+ # set_events(Gdk::Event::MOTION_NOTIFY | Gdk::Event::BUTTON_MOTION_MASK)
16
+ # set_can_focus(true)
17
+ signal_connect('event'){|me,event|
18
+ case event.event_type
19
+ when Gdk::Event::BUTTON_PRESS
20
+ @xshift=event.x
21
+ @yshift=event.y
22
+ @dragging=true
23
+ get_ancestor(WysiwygPrintEditor).set_focused_item(self)
24
+ # set_visible_window(true)
25
+ # @myobject.style.base_gc(Gtk::STATE_NORMAL).background.set_red(65535)
26
+ when Gdk::Event::MOTION_NOTIFY
27
+ @x=@x+event.x-@xshift if (@x+event.x-@xshift).to_i.modulo(10)==0
28
+ @y=@y+event.y-@yshift if (@y+event.y-@yshift).to_i.modulo(10)==0
29
+ move_me
30
+ when Gdk::Event::BUTTON_RELEASE
31
+ @dragging=false
32
+ # set_state(Gtk::STATE_NORMAL)
33
+ else
34
+ # print "unhandled: ",event.inspect,"\n"
35
+ end
36
+ }
37
+ end
38
+ attr_accessor :x
39
+ attr_accessor :y
40
+ attr_accessor :text
41
+ def move_me(newx=@x,newy=@y)
42
+ @x=newx
43
+ @y=newy
44
+ parent.move(self)
45
+ end
46
+ def modify_font(new_font)
47
+ super(new_font)
48
+ @myobject.modify_font(new_font)
49
+ self
50
+ end
51
+ def set_text(newtext=@text)
52
+ @text=newtext
53
+ @myobject.text=@text
54
+ self
55
+ end
56
+ end
57
+