예제 #1
0
 def __init__(self, title, content):
     TreeItem.__init__(self)
     self.title = title
     self.entry = None
     self.entry_buffer = EntryBuffer(content)
     self.entry_buffer.set_property('cursor-visible', False)
     self.entry_buffer.connect("changed", self.entry_buffer_changed)
     self.entry_buffer.connect("insert-pos-changed",
                               self.entry_buffer_changed)
     self.entry_buffer.connect("selection-pos-changed",
                               self.entry_buffer_changed)
     self.child_items = []
     self.height = 24
     self.ENTRY_COLUMN = 1
     self.is_double_click = False
예제 #2
0
 def __init__(self, title, content):
     TreeItem.__init__(self)
     self.title = title
     self.entry = None
     self.entry_buffer = EntryBuffer(content)
     self.entry_buffer.set_property('cursor-visible', False)
     self.entry_buffer.connect("changed", self.entry_buffer_changed)
     self.entry_buffer.connect("insert-pos-changed", self.entry_buffer_changed)
     self.entry_buffer.connect("selection-pos-changed", self.entry_buffer_changed)
     self.child_items = []
     self.height = 24
     self.ENTRY_COLUMN = 1
     self.is_double_click = False
예제 #3
0
class EntryTreeItem(TreeItem):
    '''    
    EntryTreeItem class.
    
    @undocumented: entry_buffer_changed
    @undocumented: get_height
    @undocumented: get_column_widths
    @undocumented: get_column_renders
    @undocumented: render_title
    @undocumented: render_content
    @undocumented: unselect
    @undocumented: select
    @undocumented: hover
    @undocumented: unhover
    @undocumented: single_click
    @undocumented: double_click
    @undocumented: expand
    @undocumented: unexpand
    '''    
    
    def __init__(self, title, content):
        TreeItem.__init__(self)
        self.title = title
        self.entry = None
        self.entry_buffer = EntryBuffer(content)
        self.entry_buffer.set_property('cursor-visible', False)
        self.entry_buffer.connect("changed", self.entry_buffer_changed)
        self.entry_buffer.connect("insert-pos-changed", self.entry_buffer_changed)
        self.entry_buffer.connect("selection-pos-changed", self.entry_buffer_changed)
        self.child_items = []
        self.height = 24
        self.ENTRY_COLUMN = 1
        self.is_double_click = False
    
    def entry_buffer_changed(self, bf):
        if self.redraw_request_callback:
            self.redraw_request_callback(self)
    
    def get_height(self):
        return self.height
    
    def get_column_widths(self):
        return [-1, 200]
    
    def get_column_renders(self):
        return [self.render_title, self.render_content]
    
    def render_title(self, cr, rect):
        if self.is_select:
            text_color = "#FFFFFF"
            bg_color = "#3399FF"
            cr.set_source_rgb(*color_hex_to_cairo(bg_color))
            cr.rectangle(rect.x, rect.y, rect.width, rect.height)
            cr.paint()
        else:
            text_color = "#000000"
        draw_text(cr, self.title, rect.x, rect.y, rect.width, rect.height, text_color=text_color)
    
    def render_content(self, cr, rect):
        if self.is_select:
            text_color = "#FFFFFF"
            bg_color = "#3399FF"
            if not self.is_double_click:
                cr.set_source_rgb(*color_hex_to_cairo(bg_color))
                cr.rectangle(rect.x, rect.y, rect.width, rect.height)
                cr.paint()
        else:
            text_color = "#000000"
            self.entry_buffer.move_to_start()
        self.entry_buffer.set_text_color(text_color)
        height = self.entry_buffer.get_pixel_size()[1]
        offset = (self.height - height)/2
        if offset < 0 :
            offset = 0
        rect.y += offset
        if self.entry and self.entry.allocation.width == self.get_column_widths()[1]-4:
            self.entry.calculate()
            rect.x += 2
            rect.width -= 4
            self.entry_buffer.set_text_color("#000000")
            self.entry_buffer.render(cr, rect, self.entry.im, self.entry.offset_x)
        else:
            self.entry_buffer.render(cr, rect)
    
    def unselect(self):
        self.is_select = False
        if self.redraw_request_callback:
            self.redraw_request_callback(self)
    
    def select(self):
        self.is_select = True
        if self.redraw_request_callback:
            self.redraw_request_callback(self)
    
    def hover(self, column, offset_x, offset_y):
        pass

    def unhover(self, column, offset_x, offset_y):
        pass
    
    def single_click(self, column, offset_x, offset_y):
        self.is_double_click = False
        if self.redraw_request_callback:
            self.redraw_request_callback(self)
    
    def double_click(self, column, offset_x, offset_y):
        self.is_double_click = True

    def expand(self):
        if self.is_expand:
            return
        self.is_expand = True
        self.add_items_callback(self.child_items, self.row_index+1)
        if self.redraw_request_callback:
            self.redraw_request_callback(self)
    
    def unexpand(self):
        self.is_expand = False
        self.delete_items_callback(self.child_items)
예제 #4
0
class EntryTreeItem(TreeItem):
    '''
    EntryTreeItem class.

    @undocumented: entry_buffer_changed
    @undocumented: get_height
    @undocumented: get_column_widths
    @undocumented: get_column_renders
    @undocumented: render_title
    @undocumented: render_content
    @undocumented: unselect
    @undocumented: select
    @undocumented: hover
    @undocumented: unhover
    @undocumented: single_click
    @undocumented: double_click
    @undocumented: expand
    @undocumented: unexpand
    '''
    def __init__(self, title, content):
        TreeItem.__init__(self)
        self.title = title
        self.entry = None
        self.entry_buffer = EntryBuffer(content)
        self.entry_buffer.set_property('cursor-visible', False)
        self.entry_buffer.connect("changed", self.entry_buffer_changed)
        self.entry_buffer.connect("insert-pos-changed",
                                  self.entry_buffer_changed)
        self.entry_buffer.connect("selection-pos-changed",
                                  self.entry_buffer_changed)
        self.child_items = []
        self.height = 24
        self.ENTRY_COLUMN = 1
        self.is_double_click = False

    def entry_buffer_changed(self, bf):
        if self.redraw_request_callback:
            self.redraw_request_callback(self)

    def get_height(self):
        return self.height

    def get_column_widths(self):
        return [-1, 200]

    def get_column_renders(self):
        return [self.render_title, self.render_content]

    def render_title(self, cr, rect):
        if self.is_select:
            text_color = "#FFFFFF"
            bg_color = "#3399FF"
            cr.set_source_rgb(*color_hex_to_cairo(bg_color))
            cr.rectangle(rect.x, rect.y, rect.width, rect.height)
            cr.paint()
        else:
            text_color = "#000000"
        draw_text(cr,
                  self.title,
                  rect.x,
                  rect.y,
                  rect.width,
                  rect.height,
                  text_color=text_color)

    def render_content(self, cr, rect):
        if self.is_select:
            text_color = "#FFFFFF"
            bg_color = "#3399FF"
            if not self.is_double_click:
                cr.set_source_rgb(*color_hex_to_cairo(bg_color))
                cr.rectangle(rect.x, rect.y, rect.width, rect.height)
                cr.paint()
        else:
            text_color = "#000000"
            self.entry_buffer.move_to_start()
        self.entry_buffer.set_text_color(text_color)
        height = self.entry_buffer.get_pixel_size()[1]
        offset = (self.height - height) / 2
        if offset < 0:
            offset = 0
        rect.y += offset
        if self.entry and self.entry.allocation.width == self.get_column_widths(
        )[1] - 4:
            self.entry.calculate()
            rect.x += 2
            rect.width -= 4
            self.entry_buffer.set_text_color("#000000")
            self.entry_buffer.render(cr, rect, self.entry.im,
                                     self.entry.offset_x)
        else:
            self.entry_buffer.render(cr, rect)

    def unselect(self):
        self.is_select = False
        if self.redraw_request_callback:
            self.redraw_request_callback(self)

    def select(self):
        self.is_select = True
        if self.redraw_request_callback:
            self.redraw_request_callback(self)

    def hover(self, column, offset_x, offset_y):
        pass

    def unhover(self, column, offset_x, offset_y):
        pass

    def single_click(self, column, offset_x, offset_y):
        self.is_double_click = False
        if self.redraw_request_callback:
            self.redraw_request_callback(self)

    def double_click(self, column, offset_x, offset_y):
        self.is_double_click = True

    def expand(self):
        if self.is_expand:
            return
        self.is_expand = True
        self.add_items_callback(self.child_items, self.row_index + 1)
        if self.redraw_request_callback:
            self.redraw_request_callback(self)

    def unexpand(self):
        self.is_expand = False
        self.delete_items_callback(self.child_items)