Class: GanttScaler

Inherits:
Gtk::Viewport
  • Object
show all
Includes:
Conf
Defined in:
lib/ListHolder/GanttHolder/GanttScaler.rb

Overview

this file is part of manqod manqod is distributed under the CDDL licence the author of manqod is Dobai-Pataky Balint([email protected])

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from Conf

#get_conf, #load_conf, #save_conf, #set_conf

Constructor Details

#initialize(gantt_holder) ⇒ GanttScaler

Returns a new instance of GanttScaler.



7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
# File 'lib/ListHolder/GanttHolder/GanttScaler.rb', line 7

def initialize(gantt_holder)
  @gantt_holder=gantt_holder
  super(gantt.hadjustment,Gtk::Adjustment.new(0,0,0,0,0,0))
#   set_policy(Gtk::POLICY_NEVER,Gtk::POLICY_NEVER)
#   add_with_viewport(Gtk::EventBox.new.add(@widget=Gtk::Fixed.new))
  add(@widget=Gtk::Fixed.new)
  @widget.set_height_request(gantt.list.columns_height)
  #set width the same as gantt's
  gantt.hadjustment.signal_connect("changed"){|vad|
    @widget.set_width_request(vad.upper)
    false
  }
  #font=get_conf(0,0,"list-cell-font")||"Sans 6"
  font="Sans 6"
  @widget.signal_connect("expose-event",font){|me,ev,font|
    cr=me.window.create_cairo_context
    pl=cr.create_pango_layout
    pl.set_font_description(Pango::FontDescription.new(font))
    pl.set_wrap(Pango::Layout::WRAP_WORD_CHAR).set_ellipsize(Pango::Layout::ELLIPSIZE_NONE)

    unless gantt.points.size == 0
      start=gantt.points.first/gantt.res
      
      gantt.points.each{|point|
        x=point/gantt.res-start
        cr.set_source_rgba(48.0/255,88.0/255,116.0/255,1).set_line_width(0.3)
        cr.move_to(x,3)
        cr.rel_line_to(0,@widget.allocation.height-6)
        cr.stroke

        cr.set_source_rgba(48.0/255,88.0/255,116.0/255,0.8)
        
        pl.set_text(Time.at(point).strftime_w(gantt.scaler_format))
        cr.move_to(x+2,1)
        cr.show_pango_layout(pl)
        
        cr.stroke
      }
    end
    }
end

Instance Attribute Details

#gantt_holderObject (readonly)

Returns the value of attribute gantt_holder.



48
49
50
# File 'lib/ListHolder/GanttHolder/GanttScaler.rb', line 48

def gantt_holder
  @gantt_holder
end

#widgetObject (readonly)

Returns the value of attribute widget.



48
49
50
# File 'lib/ListHolder/GanttHolder/GanttScaler.rb', line 48

def widget
  @widget
end

Instance Method Details

#clearObject



49
50
51
# File 'lib/ListHolder/GanttHolder/GanttScaler.rb', line 49

def clear
  @widget.queue_draw_area(0, 0, @widget.allocation.width, @widget.allocation.height)
end

#ganttObject



56
57
58
# File 'lib/ListHolder/GanttHolder/GanttScaler.rb', line 56

def gantt
  gantt_holder.gantt
end

#to_sObject



59
60
61
# File 'lib/ListHolder/GanttHolder/GanttScaler.rb', line 59

def to_s
  "Scaler of #{gantt}"
end

#update(notifier) ⇒ Object



52
53
54
55
# File 'lib/ListHolder/GanttHolder/GanttScaler.rb', line 52

def update(notifier)
  @widget.set_height_request(gantt.list.columns_height)
  clear
end