manqod 1.1532.0 → 1.1556.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/bin/manqod CHANGED
@@ -109,6 +109,7 @@ erequire "PrintEditor/ItemInfo/ItemTextAlignment.rb"
109
109
 
110
110
  erequire 'ListHolder/ListButtonHolder/FilterButton'
111
111
  erequire 'ListHolder/ListButtonHolder/ArchiveButton'
112
+ erequire 'ListHolder/ListButtonHolder/LegendsButton'
112
113
  erequire 'ListHolder/ListButtonHolder/OrderingButton'
113
114
  erequire 'ListHolder/ListButtonHolder/SumPanelButton'
114
115
  erequire 'ListHolder/ListButtonHolder/ButtonGroup'
@@ -16,3 +16,34 @@ class Fixnum
16
16
  ret
17
17
  end
18
18
  end
19
+
20
+ class Time
21
+ def wday_non_gb
22
+ wday==0 ? 6 : wday-1
23
+ end
24
+ def strftime_w(str)
25
+ s=str.clone
26
+ s.sub!("%W",(strftime("%W").to_i+1).to_s) if str.include?("%W")
27
+ strftime(s)
28
+ end
29
+ def round(res='d')
30
+ #res can be H=hour,d=day,W=week
31
+ #Time.gm(0,0,res=="H" ? hour : 0,day,month,year)#,yday - (res=="W" ? wday_non_gb : 0),false)
32
+ m=month
33
+ y=year
34
+ if res=="W"
35
+ if day <= wday_non_gb
36
+ t=Time.at(self-7*24*60*60)
37
+ d=t.day
38
+ m=t.month
39
+ y=t.year
40
+ else
41
+ d=day - wday_non_gb
42
+ end
43
+ else
44
+ d=day
45
+ end
46
+ Time.mktime(y, m, d, res=="H" ? hour : 0)
47
+ end
48
+
49
+ end
@@ -29,7 +29,6 @@ class Nick
29
29
  end
30
30
  def ingroup_id?(group_id)
31
31
  @mygroups=ManqodDB.instance.manqod_db.mygroups(@nick).clone if @mygroups.nil?
32
- ecode(@mygroups.inspect)
33
32
  @mygroups.has_key?(group_id.to_i)
34
33
  end
35
34
  end
@@ -97,7 +97,7 @@ class MyInputHolder
97
97
  end
98
98
 
99
99
  #Button in info mode is editable
100
- item["editable"]="false" if item['gtktype']!='gtk_button' if caller.runmode == 'info'
100
+ item['editable']=(item['gtktype']=='gtk_button').to_s if caller.runmode == 'info'
101
101
  @widget.set_border_width(1)
102
102
 
103
103
  @widget.add(@eventbox=Gtk::EventBox.new)
@@ -225,6 +225,7 @@ class MyInputHolder
225
225
  item['querysql']="#{item['querysql']} #{(gtk_attribute("tree_key").nil? ? "order by":",")} #{s[2..s.length]}" if s.length>0
226
226
  edebug("generated query:#{querySQL}","sql")
227
227
  end
228
+ item['querysql']=add_where(item['querysql'],"#{guess_base(item['querysql'])}.id = '" + "#" +"{default}'") if caller.runmode == 'info' && item['querysql'].length>0
228
229
  self
229
230
  end
230
231
 
@@ -314,7 +315,7 @@ class MyInputHolder
314
315
  end
315
316
 
316
317
  def editable
317
- item['editable'].to_s=='true'
318
+ editable?
318
319
  end
319
320
 
320
321
  def editable?
@@ -96,7 +96,7 @@ class MyRendererButton < Gtk::Button
96
96
  s="#{s}#{@pc.query_result[key]}" if @pc.query_result.has_key?(key)
97
97
  }
98
98
  set_label(s)
99
- set_image(Gtk::Image.new((text=="-1" || text=="0" ? Gtk::Stock::ADD : Gtk::Stock::EDIT ),Gtk::IconSize.from_name(get_conf(0,0,"button-size"))))
99
+ set_image(Gtk::Image.new((parentM.runmode=='info' ? Gtk::Stock::INFO : (text=="-1" || text=="0" ? Gtk::Stock::ADD : Gtk::Stock::EDIT )),Gtk::IconSize.from_name(get_conf(0,0,"button-size"))))
100
100
  notify_changes
101
101
  end
102
102
  edebug("#{text} updated","gtk_button","info")
@@ -80,10 +80,10 @@ class MyFileChooserButton < Gtk::FileChooserWidget
80
80
  ftp=Net::FTP.new(@ftp[0],@ftp[1],@ftp[2])
81
81
  @ftp[3].each("/"){|s|
82
82
  begin
83
- ecode("changing ftp dir: #{s}")
83
+ einfo("changing ftp dir: #{s}","form")
84
84
  ftp.chdir(s)
85
85
  rescue =>err
86
- ecode("creating ftp dir: #{s}")
86
+ einfo("creating ftp dir: #{s}","form")
87
87
  ftp.mkdir(s)
88
88
  retry
89
89
  end
@@ -105,11 +105,11 @@ class MyFileChooserButton < Gtk::FileChooserWidget
105
105
  set_conf(0,item['id'],"path",current_folder)
106
106
  ftp=Net::FTP.new(@ftp[0],@ftp[1],@ftp[2])
107
107
  @ftp[3].each("/"){|s|
108
- ecode("changing ftp dir: #{s}")
108
+ einfo("changing ftp dir: #{s}","form")
109
109
  ftp.chdir(s)
110
110
  } if @ftp[3]
111
111
  perc=0
112
- ecode(item["initial"])
112
+ einfo(item["initial"],"form")
113
113
  ftp.getbinaryfile(item["initial"],filename,ftp.size(item["initial"])/100){
114
114
  progress.set_fraction(perc/100.0)
115
115
  Gtk.show_thread_changes
@@ -121,7 +121,7 @@ class QBuilder < Gtk::HPaned
121
121
  }
122
122
  begin
123
123
  i=model.append
124
- row.each{|k,v| i[headers.index(k)]=v}
124
+ row.each{|k,v| i[headers.key(k)]=v}
125
125
  end while (row=res.fetch_hash(true))
126
126
  sview.set_model(model)
127
127
  w.vbox.add(Gtk::ScrolledWindow.new.add(sview).set_policy(Gtk::POLICY_AUTOMATIC,Gtk::POLICY_AUTOMATIC)).set_size_request(600,400)
@@ -189,7 +189,7 @@ class QBuilder < Gtk::HPaned
189
189
  when "QBuilder"
190
190
  #we update ourself
191
191
  else
192
- edebug("notifier: #{new_value.class.name}","relation-builder",WARNING)
192
+ ewarn("notifier: #{new_value.class.name}","relation-builder")
193
193
  end
194
194
  @qobjects.each{|qobject| qobject.update}
195
195
  test_query if @autotest.active?
@@ -109,7 +109,7 @@ class QObject < Gtk::HBox
109
109
  ret=rel.rfield1 if rel.rfield1.table.table_id.to_i == @q.base_object.obj_id.to_i
110
110
  ret=rel.rfield2 if rel.rfield2.table.table_id.to_i == @q.base_object.obj_id.to_i
111
111
  unless ret
112
- @q.rb.relations.each{|r|
112
+ @q.rb.relations.each_pair{|rel_id,r|
113
113
  unless been_there.include?(r.relation_id)
114
114
  if r.rfield1.table.table_id == rel.rfield1.table.table_id or r.rfield2.table.table_id == rel.rfield1.table.table_id
115
115
  if other_dir=find_base_dir(r,been_there)
@@ -172,7 +172,7 @@ class QObject < Gtk::HBox
172
172
  @link=case @obj_type
173
173
  when "b" then @q.rb.table_by_id(@obj_id)
174
174
  when "f" then if table=@q.rb.table_by_id(@obj_id) then table.fields[@field]; end
175
- when "r" then @q.rb.relation_by_id(@obj_id)
175
+ when "r" then @q.rb.relations[@obj_id]
176
176
  else
177
177
  edebug("unknown type: #{@obj_type}","relation-builder",WARNING)
178
178
  nil
data/lib/Gtk.rb CHANGED
@@ -69,6 +69,28 @@ module Gtk
69
69
  self
70
70
  end
71
71
  end
72
+
73
+ class TreeIter
74
+ def next_with_children
75
+ ret=nil
76
+ if self.has_child?
77
+ ret=self.first_child
78
+ else
79
+ if clone.next!
80
+ self.next!
81
+ ret=self
82
+ else
83
+ if par=self.parent
84
+ if par.clone.next!
85
+ par.next!
86
+ ret=par
87
+ end
88
+ end
89
+ end
90
+ end
91
+ ret
92
+ end
93
+ end
72
94
 
73
95
  def self.is_windows?
74
96
  RUBY_PLATFORM.downcase.include?("mswin") || RUBY_PLATFORM.downcase.include?("mingw")
@@ -103,7 +103,7 @@ module Mylist
103
103
  end
104
104
  attr_accessor :list, :list_scroller, :list_panel, :list_id
105
105
  attr_accessor :notebook, :child_placement
106
- attr_reader :caller, :parentM, :widget, :info
106
+ attr_reader :caller, :parentM, :widget, :info, :gantt
107
107
  attr_accessor :buttonholder, :placeholder_button
108
108
 
109
109
  def embedd?
@@ -55,6 +55,11 @@ class MyEditableList < Gtk::TreeView
55
55
  }
56
56
  @tmp=Hash.new
57
57
  @is_embedded=nil
58
+ @keep_expanded=false
59
+
60
+ signal_connect("row-collapsed"){|me, iter, path|
61
+ me.expand_all if @keep_expanded
62
+ }
58
63
  end
59
64
  attr_accessor :caller, :selected, :list_id, :list_model, :parentM, :headertypes, :headers, :info, :title, :tip, :pop, :tmp, :is_embedded
60
65
 
@@ -157,6 +162,7 @@ class MyEditableList < Gtk::TreeView
157
162
  set_cursor_id(id_to_scroll,scroll)
158
163
  changed
159
164
  notify_observers(self)
165
+ expand_all if @keep_expanded
160
166
  get_cursor_id
161
167
  end
162
168
 
@@ -168,13 +174,12 @@ class MyEditableList < Gtk::TreeView
168
174
  case get_conf(0,0,"list-tooltip")
169
175
  when "filters" then
170
176
  t="filters:"
171
- @caller.list_filter_panel.list_filter.columns.each_key{|key|
172
- h=@caller.list_filter_panel.list_filter.columns[key].header
173
- fl=get_conf(get_id,h['id'],"filter")
174
- case h['type']
177
+ @caller.list_panel.list_filter.columns.each_value{|frenderer|
178
+ fl=get_conf(get_id,frenderer.header['id'],"filter")
179
+ case frenderer.header['type']
175
180
  when 'gtk_combo', 'gtk_const_combo' then fl = (fl=="-1" or fl=="") ? "" : "=#{fl}"
176
181
  end
177
- t+="\n#{h['header']}: #{fl}" if !fl.nil? and fl.length>0
182
+ t+="\n#{frenderer.header['header']}: #{fl}" if !fl.nil? and fl.length>0
178
183
  }
179
184
  t="#{t}\nnone" if t=="filters:"
180
185
  @tip.set_tip(self,t,'extra hint')
@@ -187,6 +192,7 @@ class MyEditableList < Gtk::TreeView
187
192
  edebug(" can't update","list","error")
188
193
  return
189
194
  end
195
+ @keep_expanded=(gtk_attribute("keep_expanded") || "false") == "true"
190
196
  set_model(nil)
191
197
  @list_model.create_skeleton
192
198
  set_info("initializing")
@@ -283,6 +289,25 @@ class MyEditableList < Gtk::TreeView
283
289
  next_col
284
290
  end
285
291
 
292
+ def column_by_id(column_id)
293
+ ret=nil
294
+ columns.each{|col|
295
+ if col.header['id'].to_i == column_id.to_i
296
+ ret=col
297
+ break
298
+ end
299
+ }
300
+ ret
301
+ end
302
+
303
+ def columns_height
304
+ colh=0
305
+ columns.each{|col|
306
+ colh=col.header_widget.allocation.height if col.header_widget.allocation.height > colh
307
+ }
308
+ colh
309
+ end
310
+
286
311
  def wipe
287
312
  save_config
288
313
  set_model(nil)
@@ -34,8 +34,10 @@ class MyColumn < Gtk::TreeViewColumn
34
34
  end
35
35
 
36
36
  super(header['header'],@renderer,attributes)
37
- set_widget(header_widget=Gtk::Label.new(header['header']).set_visible(true))
37
+ set_widget(@header_widget=Gtk::Label.new(header['header']).set_visible(true))
38
38
  header_widget.set_angle(gtk_attribute("header_angle").to_f) if gtk_attribute("header_angle")
39
+ @list.tip.set_tip(header_widget,header['header'],'extra hint')
40
+ @list.tip.enable
39
41
  #set color
40
42
  # header_widget.modify_fg(Gtk::STATE_NORMAL,Gdk::Color.new(0,35000, 0))
41
43
  # header_widget.modify_fg(Gtk::STATE_PRELIGHT,Gdk::Color.new(0,35000, 0))
@@ -122,7 +124,7 @@ class MyColumn < Gtk::TreeViewColumn
122
124
  =end
123
125
  end
124
126
  attr_accessor :list
125
- attr_accessor :header
127
+ attr_accessor :header, :header_widget
126
128
  attr_accessor :renderer
127
129
  attr_reader :decimals_attribute, :duration_format, :timestamp_format
128
130
 
@@ -39,6 +39,7 @@ class ListModel
39
39
  attr_reader :column_of_gantt_start, :column_of_gantt_duration, :column_of_gantt_successors, :column_of_gantt_group, :column_of_gantt_group_color, :column_of_gantt_partial, :column_of_gantt_percentage
40
40
  attr_reader :show_archive, :archive_key
41
41
  attr_reader :headers, :headertypes
42
+ attr_reader :foreground_legend, :background_legend
42
43
 
43
44
 
44
45
  def drbmodel
@@ -57,7 +58,7 @@ class ListModel
57
58
  def resubscribe
58
59
  begin
59
60
  @remote_model=manqod_db.moditem(get_id)
60
- drbmodel.subscribe(self)
61
+ drbmodel.subscribe(ManqodRPC.instance.to_s,self)
61
62
  rescue =>err
62
63
  retry if warn("can't reconnect to server",err.to_s,"list",ERROR,false,true)
63
64
  end
@@ -72,7 +73,7 @@ class ListModel
72
73
 
73
74
  def wipe
74
75
  begin
75
- drbmodel.unsubscribe(self) if @remote_model && @remote_model.alive?
76
+ drbmodel.unsubscribe(ManqodRPC.instance.to_s) if @remote_model && @remote_model.alive?
76
77
  rescue =>err
77
78
  eerror("unsubscribing: #{err}","main")
78
79
  end
@@ -174,7 +175,7 @@ class ListModel
174
175
  # list.progress.pulse(list.get_id)
175
176
  # @thread=Thread.new{
176
177
  begin
177
- drbmodel.unsubscribe(self) unless @remote_model.nil?
178
+ drbmodel.unsubscribe(ManqodRPC.instance.to_s) unless @remote_model.nil?
178
179
  rescue => err
179
180
  ewarn("server model is gone")
180
181
  end
@@ -215,7 +216,7 @@ class ListModel
215
216
  @column_of_fetch_filter=moditem_attributes[:column_of_fetch_filter]
216
217
  @archive_key=moditem_attributes[:archive_key]
217
218
 
218
- drbmodel.subscribe(self)
219
+ drbmodel.subscribe(ManqodRPC.instance.to_s,self)
219
220
 
220
221
 
221
222
  @parentM=list.parentM.get_model if list.parentM
@@ -287,6 +288,9 @@ class ListModel
287
288
  if gantt_percentage=list.gtk_attribute('gantt_percentage')
288
289
  @column_of_gantt_percentage=headers[gantt_percentage]
289
290
  end
291
+
292
+ @foreground_legend=cache.get("#{get_id}foreground")
293
+ @background_legend=cache.get("#{get_id}background")
290
294
 
291
295
  list.set_info("created")
292
296
  # }
@@ -356,7 +360,7 @@ class ListModel
356
360
  edebug("refiltering #{one}")
357
361
  if one.nil?
358
362
  list.set_model(nil)
359
- list.progress.zero(list.object_id,@rowcount,@moditem["display"])
363
+ list.progress.zero(list.object_id,@rows_loaded,@moditem["display"])
360
364
  @thread=Thread.new{
361
365
  r=0
362
366
  @data.each{|model, path, iter|
@@ -382,7 +386,7 @@ class ListModel
382
386
 
383
387
  @filtered_rowcount=0
384
388
  @data.each{|model, path, iter| @filtered_rowcount+=1 if iter[column_of_visible]}
385
- list.set_info("#{@filtered_rowcount}/#{@rowcount}")
389
+ list.set_info("#{@filtered_rowcount}/#{@rows_loaded}")
386
390
  self
387
391
  end
388
392
 
@@ -8,21 +8,22 @@ class ListPrintOperation < Gtk::PrintOperation
8
8
 
9
9
  def initialize(list)
10
10
  @list=list
11
- @print_sums=list.gtk_attribute("print_sums") || "true" =="true"
11
+ @print_sums=(list.gtk_attribute("print_sums") || "true") =="true"
12
12
  @sum_font=list.gtk_attribute("sum_font") || "verdana bold 6"
13
13
  @cell_font=list.gtk_attribute("cell_font") || "verdana 6"
14
14
  @columns_header_font=list.gtk_attribute("columns_header_font") || "verdana bold 6"
15
15
  @header_font=list.gtk_attribute("header_font") || "verdana bold 10"
16
16
  @footer_font=list.gtk_attribute("footer_font") || "verdana 6"
17
17
  @date_font=list.gtk_attribute("date_font") || "verdana 5"
18
- @print_date=list.gtk_attribute("print_date") || "true" == "true"
18
+ @print_date=(list.gtk_attribute("print_date") || "true") == "true"
19
19
  @row_spacing=(list.gtk_attribute("row_spacing") || 1.0).to_f
20
20
  @column_spacing=(list.gtk_attribute("column_spacing") || 1.0).to_f
21
- @draw_footer_line=list.gtk_attribute("draw_footer_line") || "true" == "true"
22
- @line_above_parent=list.gtk_attribute("line_above_parent") || "true" == "true"
23
- @draw_header_line=list.gtk_attribute("draw_header_line") || "true" == "true"
24
- @draw_header_cell_borders=list.gtk_attribute("draw_header_cell_borders") || "true" == "true"
25
- @fill_header_background=list.gtk_attribute("fill_header_background") || "true" == "true"
21
+ @draw_footer_line=(list.gtk_attribute("draw_footer_line") || "true") == "true"
22
+ @line_above_parent=(list.gtk_attribute("line_above_parent") || "true") == "true"
23
+ @draw_header_line=(list.gtk_attribute("draw_header_line") || "true") == "true"
24
+ @print_title=(list.gtk_attribute("print_title") || "true") == "true"
25
+ @draw_header_cell_borders=(list.gtk_attribute("draw_header_cell_borders") || "true") == "true"
26
+ @fill_header_background=(list.gtk_attribute("fill_header_background") || "true") == "true"
26
27
  @row_underline=(list.gtk_attribute("row_underline") || 0.0).to_f
27
28
 
28
29
  if @print_with_child=list.gtk_attribute("print_with_child")
@@ -30,7 +31,7 @@ class ListPrintOperation < Gtk::PrintOperation
30
31
  @child_model=Gtk::TreeModelSort.new(@child_list.list_model.data)
31
32
  @child_model.set_sort_column_id(@child_list.list_model.sorter.sort_column_id[0],@child_list.list_model.sorter.sort_column_id[1]) unless @child_list.list_model.sorter.sort_column_id.nil?
32
33
  end
33
- @print_sub_sums=list.gtk_attribute("print_sub_sums") || "true" == "true"
34
+ @print_sub_sums=(list.gtk_attribute("print_sub_sums") || "true") == "true"
34
35
  @child_indent=(list.gtk_attribute("child_indent") || 100).to_f
35
36
  @child_cell_font=list.gtk_attribute("child_cell_font") || "verdana 5"
36
37
  @child_sum_font=list.gtk_attribute("child_sum_font") || "verdana bold 5"
@@ -40,6 +41,9 @@ class ListPrintOperation < Gtk::PrintOperation
40
41
  @footer_line_width=(list.gtk_attribute("footer_line_width") || 1.0).to_f
41
42
  @cell_line_width=(list.gtk_attribute("cell_line_width") || 0.3).to_f
42
43
  @sum_line_width=(list.gtk_attribute("sum_line_width") || 0.6).to_f
44
+
45
+ @print_with_gantt=(list.gtk_attribute("print_with_gantt") || "false") == "true"
46
+ @gantt_cell_font=list.gtk_attribute("gantt_cell_font") || "verdana 5"
43
47
 
44
48
  @line_width=1
45
49
 
@@ -66,8 +70,9 @@ class ListPrintOperation < Gtk::PrintOperation
66
70
  col_cnt+=1
67
71
  end
68
72
  } #summ the width of all columns
73
+ columns_width_sum+=list.holder.widget.allocation.width - list.allocation.width if @print_with_gantt
69
74
  coef=(width-col_cnt*@column_spacing)/columns_width_sum
70
- edebug("colums width sum: #{columns_width_sum}","printing","info")
75
+ einfo("colums width sum: #{columns_width_sum}","printing")
71
76
 
72
77
  #@column_width will store the column positions on the context
73
78
  @column_width=Hash.new
@@ -80,6 +85,10 @@ class ListPrintOperation < Gtk::PrintOperation
80
85
  col_cur_pos+=@column_width[col.data]+@column_spacing
81
86
  end
82
87
  }
88
+ if @print_with_gantt
89
+ @column_pos[:gantt]=col_cur_pos
90
+ @column_width[:gantt]=(list.holder.widget.allocation.width - list.allocation.width).to_f*coef
91
+ end
83
92
  if child_list
84
93
  columns_width_sum=@child_indent.to_f
85
94
  col_cnt=0
@@ -90,7 +99,7 @@ class ListPrintOperation < Gtk::PrintOperation
90
99
  end
91
100
  } #summ the width of all columns
92
101
  coef=(width-col_cnt*@column_spacing)/columns_width_sum
93
- edebug("child colums width sum: #{columns_width_sum}","printing","info")
102
+ einfo("child colums width sum: #{columns_width_sum}","printing")
94
103
 
95
104
  #@column_width will store the column positions on the context
96
105
  col_cur_pos=@child_indent.to_f*coef
@@ -109,11 +118,11 @@ class ListPrintOperation < Gtk::PrintOperation
109
118
  @header=HeaderLayout.new(cr,self)
110
119
  @current_height=@current_height+@header.height
111
120
  @columns_header=ColumnsHeaderLayout.new(self,cr,list.columns,@columns_header_font)
112
- @columns_header.y=@current_height
121
+ @columns_header.set_y(@current_height)
113
122
  @current_height=@current_height+@columns_header.height+@row_spacing
114
123
  if child_list
115
124
  @child_columns_header=ColumnsHeaderLayout.new(self,cr,child_list.columns,@child_columns_header_font) if child_list
116
- @child_columns_header.y=@current_height
125
+ @child_columns_header.set_y(@current_height)
117
126
  @current_height=@current_height+@child_columns_header.height+@row_spacing
118
127
  end
119
128
  @headers_height=@current_height
@@ -211,7 +220,7 @@ class ListPrintOperation < Gtk::PrintOperation
211
220
  if @piter.nil?
212
221
  break if past_last=!@piter=list.model.iter_first
213
222
  else
214
- break if past_last=!@piter.next!
223
+ break if past_last=!@piter.next_with_children
215
224
  end
216
225
  @sums.each_key{|key| @sums[key]=@sums[key]+@piter[key].to_f}
217
226
  il=IterLayout.new(cr,@piter,list.columns, self,cell_font)
@@ -237,10 +246,10 @@ class ListPrintOperation < Gtk::PrintOperation
237
246
  il=IterLayout.new(cr,@piter,list.columns, self,cell_font)
238
247
  if lay_it(il)
239
248
  #do not print it twice
240
- past_last=!@piter.next!
249
+ past_last=!@piter.next_with_children
241
250
  break
242
251
  end
243
- break if past_last=!@piter.next!
252
+ break if past_last=!@piter=@piter.next_with_children
244
253
  edebug("piter: #{@piter[list.list_model.column_of_id]} #{@past_last}","printing","debug")
245
254
  end
246
255
  end
@@ -299,7 +308,7 @@ class ListPrintOperation < Gtk::PrintOperation
299
308
  attr_accessor :fill_header_background, :header_line_width
300
309
  attr_accessor :row_spacing
301
310
  attr_accessor :column_spacing
302
- attr_reader :cell_line_width, :sum_line_width, :row_underline
311
+ attr_reader :cell_line_width, :sum_line_width, :row_underline, :print_title, :print_with_gantt, :gantt_cell_font
303
312
  def lay_it(il)
304
313
  if @current_height + il.row_height > @footer.y
305
314
  #page full
@@ -309,8 +318,8 @@ class ListPrintOperation < Gtk::PrintOperation
309
318
  @current_height=@headers_height
310
319
  @page_n=@page_n+1
311
320
  end
312
- il.page=@page_n
313
- il.y=@current_height
321
+ il.set_page(@page_n)
322
+ il.set_y(@current_height)
314
323
  @current_height=@current_height+il.row_height+@row_spacing
315
324
  @iter_layouts.push(il)
316
325
  edebug(il.inspect,"printing")