예제 #1
0
    def __init__(self, ellipsis):
        BrowserTreeView.__init__(self, ToCTreeModel())
        self.set_headers_visible(False)
        self.get_selection().set_mode(Gtk.SelectionMode.MULTIPLE)
        # Allow select multiple

        cell_renderer = Gtk.CellRendererText()

        page_cell_renderer = Gtk.CellRendererText()
        page_cell_renderer.set_property("size-points", 4)

        if ellipsis:
            cell_renderer.set_property('ellipsize', Pango.EllipsizeMode.END)

        column = Gtk.TreeViewColumn('_heading_', cell_renderer, text=TEXT_COL)
        column.set_sizing(Gtk.TreeViewColumnSizing.AUTOSIZE)
        # Without this sizing, column width only grows and never shrinks
        self.append_column(column)

        column2 = Gtk.TreeViewColumn('_page_',
                                     page_cell_renderer,
                                     text=PAGE_COL)
        column2.set_sizing(Gtk.TreeViewColumnSizing.AUTOSIZE)
        # Without this sizing, column width only grows and never shrinks
        self.append_column(column2)
예제 #2
0
	def __init__(self, notebook, navigation, model=None):
		BrowserTreeView.__init__(self)
		self.set_name('zim-pageindex')
		self.notebook = notebook
		self.navigation = navigation
		self._autoexpanded = None
		self._autoexpand = True
		self._autocollapse = True

		column = Gtk.TreeViewColumn('_pages_')
		column.set_expand(True)
		self.append_column(column)

		cr1 = Gtk.CellRendererText()
		self._cr1 = cr1
		column.pack_start(cr1, True)
		column.set_attributes(cr1, text=NAME_COL,
			style=STYLE_COL, sensitive=EXISTS_COL, weight=WEIGHT_COL)

		column = Gtk.TreeViewColumn('_n_items_')
		self.append_column(column)

		cr2 = self.get_cell_renderer_number_of_items()
		column.pack_start(cr2, False)
		column.set_attributes(cr2, text=N_CHILD_COL, weight=WEIGHT_COL)

		self.set_headers_visible(False)

		self.set_enable_search(True)
		self.set_search_column(0)

		if model:
			self.set_model(model)
예제 #3
0
    def set_model(self, model):
        '''Set a new model for the view.

		@param model: a new TreeModel object
		'''
        BrowserTreeView.set_model(self, model)
        model.connect('row-inserted', self.on_row_inserted)
예제 #4
0
    def __init__(self, ui):
        model = gtk.ListStore(str, int, object)
        # NAME_COL, SCORE_COL, PATH_COL
        BrowserTreeView.__init__(self, model)
        self.ui = ui
        self.query = None
        self.selection = SearchSelection(ui.notebook)
        self.cancelled = False

        cell_renderer = gtk.CellRendererText()
        for name, i in (
            (_('Page'), 0),  # T: Column header search dialog
            (_('Score'), 1),  # T: Column header search dialog
        ):
            column = gtk.TreeViewColumn(name, cell_renderer, text=i)
            column.set_sort_column_id(i)
            if i == 0:
                column.set_expand(True)
            self.append_column(column)

        model.set_sort_column_id(1, gtk.SORT_DESCENDING)
        # By default sort by score

        self.connect('row-activated', self._do_open_page)
        self.connect('destroy', self.__class__._cancel)
예제 #5
0
    def __init__(self, model, text_view):
        self.model = model

        self.completion_tree_view = BrowserTreeView(self.model)
        self.completion_tree_view.set_enable_search(False)
        # hide column
        self.completion_tree_view.set_headers_visible(False)

        box = Gtk.Box(orientation=Gtk.Orientation.VERTICAL)
        self.completion_scrolled_win = ScrolledWindow(
            self.completion_tree_view)
        self.label = Gtk.Label('Tags')
        box.add(self.label)
        box.add(self.completion_scrolled_win)
        box.show_all()

        self.column = Gtk.TreeViewColumn()
        self.completion_tree_view.append_column(self.column)

        self.renderer_text = Gtk.CellRendererText()
        self.column.pack_start(self.renderer_text, False)
        self.column.set_attributes(self.renderer_text, text=DATA_COL)

        self.completion_scrolled_win.set_policy(Gtk.PolicyType.NEVER,
                                                Gtk.PolicyType.AUTOMATIC)
        self.completion_scrolled_win.set_propagate_natural_height(True)
        self.completion_scrolled_win.set_max_content_height(WIN_HEIGHT)
        self.completion_scrolled_win.set_size_request(WIN_WIDTH, -1)
        self.column.set_min_width(50)

        # window to display results
        self.popover = Gtk.Popover()
        self.popover.set_relative_to(text_view)
        self.popover.add(box)
예제 #6
0
파일: searchdialog.py 프로젝트: gdw2/zim
	def __init__(self, ui):
		model = gtk.ListStore(str, int, object)
			# NAME_COL, SCORE_COL, PATH_COL
		BrowserTreeView.__init__(self, model)
		self.ui = ui
		self.query = None
		self.selection = SearchSelection(ui.notebook)
		self.cancelled = False

		cell_renderer = gtk.CellRendererText()
		for name, i in (
			(_('Page'), 0), # T: Column header search dialog
			(_('Score'), 1), # T: Column header search dialog
		):
			column = gtk.TreeViewColumn(name, cell_renderer, text=i)
			column.set_sort_column_id(i)
			if i == 0:
				column.set_expand(True)
			self.append_column(column)

		model.set_sort_column_id(1, gtk.SORT_DESCENDING)
			# By default sort by score

		self.connect('row-activated', self._do_open_page)
		self.connect('destroy', self.__class__._cancel)
예제 #7
0
    def __init__(self, model):
        self.model = model

        self.completion_win = Window()
        self.completion_win.set_modal(True)
        self.completion_win.set_keep_above(True)

        self.completion_tree_view = BrowserTreeView(self.model)
        self.completion_tree_view.set_enable_search(False)

        self.completion_scrolled_win = ScrolledWindow(
            self.completion_tree_view)
        self.completion_win.add(self.completion_scrolled_win)

        self.column = Gtk.TreeViewColumn()
        self.completion_tree_view.append_column(self.column)

        self.renderer_text = Gtk.CellRendererText()
        self.column.pack_start(self.renderer_text, False)
        self.column.set_attributes(self.renderer_text, text=DATA_COL)

        # display an undecorated window with a grey border
        self.completion_scrolled_win.set_size_request(WIN_WIDTH, WIN_HEIGHT)
        self.completion_scrolled_win.set_policy(Gtk.PolicyType.NEVER,
                                                Gtk.PolicyType.AUTOMATIC)
        self.completion_win.set_decorated(False)
        self.completion_scrolled_win.set_border_width(2)
        # self.completion_scrolled_win.modify_bg(Gtk.StateType.NORMAL, Gdk.Color(GREY))
        self.column.set_min_width(50)

        # hide column
        self.completion_tree_view.set_headers_visible(False)
예제 #8
0
    def __init__(self, ui, plugin):

        # Visible, MCOL_CODE, MCOL_CITA, MCOL_PAGE, MCOL_NCIT, MCOL_RGID, MCOL_TAGS
        self.real_model = gtk.TreeStore(bool, str, str, str, str, int, object)
        model = self.real_model.filter_new()
        model.set_visible_column(self.MCOL_VISI)
        model = gtk.TreeModelSort(model)

        BrowserTreeView.__init__(self, model)
        self.ui = ui
        self.plugin = plugin
        self.filter = None
        self.tag_filter = None
        self.label_filter = None
        self._tags = {}
        self._labels = {}


# Description column
        cell_renderer = gtk.CellRendererText()
        cell_renderer.set_property('ellipsize', pango.ELLIPSIZE_END)

        column = gtk.TreeViewColumn(_('QdaCode'), cell_renderer, markup=self.MCOL_CODE)
        column.set_resizable(True)
        column.set_sort_column_id(self.MCOL_CODE)
        column.set_expand(True)
        column.set_min_width(200)
        self.append_column(column)
        self.set_expander_column(column)

# Citation  column
        cell_renderer = gtk.CellRendererText()
        column = gtk.TreeViewColumn(_('Text'), cell_renderer, text=self.MCOL_CITA)

        column.set_resizable(True)
        column.set_sort_column_id(self.MCOL_CITA)
        column.set_min_width(200)
        column.set_max_width(300)

        self.append_column(column)

# Rendering for page name column
        cell_renderer = gtk.CellRendererText()
        column = gtk.TreeViewColumn(_('Page'), cell_renderer, text=self.MCOL_PAGE)
        column.set_sort_column_id(self.MCOL_PAGE)
        self.append_column(column)


# Nro Citation in the page
        cell_renderer = gtk.CellRendererText()
        column = gtk.TreeViewColumn(_(' # '), cell_renderer, text=self.MCOL_NCIT)
        column.set_sort_column_id(self.MCOL_NCIT)
        self.append_column(column)


# Finalize
        self.refresh()

        # HACK because we can not register ourselves :S
        self.connect('row_activated', self.__class__.do_row_activated)
예제 #9
0
    def set_model(self, model):
        '''Set a new model for the view.

		@param model: a new TreeModel object
		'''
        self._cleanup = None  # else it might be pointing to old model
        BrowserTreeView.set_model(self, model)
        model.connect('row-inserted', self.on_row_inserted)
예제 #10
0
	def set_model(self, model):
		'''Set a new model for the view.

		@param model: a new TreeModel object
		'''
		self._cleanup = None # else it might be pointing to old model
		BrowserTreeView.set_model(self, model)
		model.connect('row-inserted', self.on_row_inserted)
예제 #11
0
    def __init__(self):
        BrowserTreeView.__init__(self, LinksTreeModel())
        self.set_headers_visible(False)

        cell_renderer = Gtk.CellRendererText()
        cell_renderer.set_property('ellipsize', Pango.EllipsizeMode.END)
        column = Gtk.TreeViewColumn('_page_', cell_renderer, text=TEXT_COL)
        self.append_column(column)
        self.set_tooltip_column(TEXT_COL)
예제 #12
0
	def __init__(self):
		BrowserTreeView.__init__(self, ToCTreeModel())
		self.set_headers_visible(False)
		self.get_selection().set_mode(gtk.SELECTION_MULTIPLE)
			# Allow select multiple

		cell_renderer = gtk.CellRendererText()
		cell_renderer.set_property('ellipsize', pango.ELLIPSIZE_END)
		column = gtk.TreeViewColumn('_heading_', cell_renderer, text=TEXT_COL)
		self.append_column(column)
예제 #13
0
    def __init__(self):
        BrowserTreeView.__init__(self, LinksTreeModel())
        self.set_headers_visible(False)

        cell_renderer = gtk.CellRendererText()
        cell_renderer.set_property('ellipsize', pango.ELLIPSIZE_END)
        column = gtk.TreeViewColumn('_page_', cell_renderer, text=TEXT_COL)
        self.append_column(column)

        if gtk.gtk_version >= (2, 12, 0):
            self.set_tooltip_column(TEXT_COL)
예제 #14
0
    def __init__(self):
        BrowserTreeView.__init__(self, LinksTreeModel())
        self.set_headers_visible(False)

        cell_renderer = gtk.CellRendererText()
        cell_renderer.set_property('ellipsize', pango.ELLIPSIZE_END)
        column = gtk.TreeViewColumn('_page_', cell_renderer, text=TEXT_COL)
        self.append_column(column)

        if gtk.gtk_version >= (2, 12, 0):
            self.set_tooltip_column(TEXT_COL)
	def __init__(self):
		BrowserTreeView.__init__(self)
		model = gtk.TreeStore(str, object, object)
			# BASENAME_COL, FILE_COL, DEFAULT_COL
		self.set_model(model)
		self.set_headers_visible(False)

		cell_renderer = gtk.CellRendererText()
		column = gtk.TreeViewColumn('_template_', cell_renderer, text=self.BASENAME_COL)
		self.append_column(column)

		self.refresh()
	def __init__(self):
		BrowserTreeView.__init__(self)
		model = Gtk.TreeStore(str, object, object)
			# BASENAME_COL, FILE_COL, DEFAULT_COL
		self.set_model(model)
		self.set_headers_visible(False)

		cell_renderer = Gtk.CellRendererText()
		column = Gtk.TreeViewColumn('_template_', cell_renderer, text=self.BASENAME_COL)
		self.append_column(column)

		self.refresh()
	def __init__(self, plugins):
		BrowserTreeView.__init__(self)

		model = PluginsTreeModel(plugins)
		self.set_model(model)

		cellrenderer = Gtk.CellRendererToggle()
		cellrenderer.connect('toggled', lambda o, p: model.do_toggle_path(p))
		self.append_column(
			Gtk.TreeViewColumn(_('Enabled'), cellrenderer, active=1, activatable=2))
			# T: Column in plugin tab
		self.append_column(
			Gtk.TreeViewColumn(_('Plugin'), Gtk.CellRendererText(), text=3))
예제 #18
0
	def __init__(self, ui):
		BrowserTreeView.__init__(self)

		model = PluginsTreeModel(ui)
		self.set_model(model)

		cellrenderer = gtk.CellRendererToggle()
		cellrenderer.connect('toggled', lambda o, p: model.do_toggle_path(p))
		self.append_column(
			gtk.TreeViewColumn(_('Enabled'), cellrenderer, active=0))
			# T: Column in plugin tab
		self.append_column(
			gtk.TreeViewColumn(_('Plugin'), gtk.CellRendererText(), text=1))
예제 #19
0
	def __init__(self, ellipsis):
		BrowserTreeView.__init__(self, ToCTreeModel())
		self.set_headers_visible(False)
		self.get_selection().set_mode(gtk.SELECTION_MULTIPLE)
			# Allow select multiple

		cell_renderer = gtk.CellRendererText()
		if ellipsis:
			cell_renderer.set_property('ellipsize', pango.ELLIPSIZE_END)
		column = gtk.TreeViewColumn('_heading_', cell_renderer, text=TEXT_COL)
		column.set_sizing(gtk.TREE_VIEW_COLUMN_AUTOSIZE)
			# Without this sizing, column width only grows and never shrinks
		self.append_column(column)
예제 #20
0
	def __init__(self, ellipsis):
		BrowserTreeView.__init__(self, ToCTreeModel())
		self.set_headers_visible(False)
		self.get_selection().set_mode(gtk.SELECTION_MULTIPLE)
			# Allow select multiple

		cell_renderer = gtk.CellRendererText()
		if ellipsis:
			cell_renderer.set_property('ellipsize', pango.ELLIPSIZE_END)
		column = gtk.TreeViewColumn('_heading_', cell_renderer, text=TEXT_COL)
		column.set_sizing(gtk.TREE_VIEW_COLUMN_AUTOSIZE)
			# Without this sizing, column width only grows and never shrinks
		self.append_column(column)
예제 #21
0
    def __init__(self, ui):
        model = gtk.ListStore(str, str)
        # NAME_COL, MODIFIED_COL
        BrowserTreeView.__init__(self, model)
        self.ui = ui

        cell_renderer = gtk.CellRendererText()

        column = gtk.TreeViewColumn(_('Page'),
                                    cell_renderer,
                                    text=self.NAME_COL)  # T: Column header
        column.set_sort_column_id(self.NAME_COL)
        column.set_expand(True)
        self.append_column(column)

        today = datetime.date.today()
        yesterday = today - datetime.timedelta(days=1)

        def render_date(col, cell, model, i):
            mtime = model.get_value(i, self.MODIFIED_COL)
            if mtime:
                dt = datetime.datetime.fromtimestamp(float(mtime))
                date = dt.date()
                if date == today:
                    text = _('Today') + datetime.strftime(' %H:%M', dt)
                    # T: label for modified time
                elif date == yesterday:
                    text = _('Yesterday') + datetime.strftime(' %H:%M', dt)
                    # T: label for modified time
                elif date.year == today.year:
                    text = datetime.strftime(
                        '%a %d %b %H:%M', dt)  # TODO allow config for format ?
                else:
                    text = datetime.strftime(
                        '%a %d %b %Y %H:%M',
                        dt)  # TODO allow config for format ?
            else:
                text = ''

            cell.set_property('text', text)

        cell_renderer = gtk.CellRendererText()
        #cell_renderer.set_property('font', 'mono')
        column = gtk.TreeViewColumn(_('Last Modified'),
                                    cell_renderer,
                                    text=self.MODIFIED_COL)  # T: Column header
        column.set_cell_data_func(cell_renderer, render_date)
        column.set_sort_column_id(self.MODIFIED_COL)
        self.append_column(column)

        self.connect('row-activated', self._do_open_page)
예제 #22
0
    def __init__(self, ui, model=None):
        '''Constructor

		@param ui: the L{GtkInterface} object
		@param model: a L{PageTreeStore} object
		'''
        BrowserTreeView.__init__(self)
        self.set_name('zim-pageindex')
        self.ui = ui
        self._cleanup = None  # temporary created path that needs to be removed later

        column = gtk.TreeViewColumn('_pages_')
        self.append_column(column)

        cr1 = gtk.CellRendererText()
        cr1.set_property('ellipsize', pango.ELLIPSIZE_END)
        column.pack_start(cr1, True)
        column.set_attributes(cr1,
                              text=NAME_COL,
                              style=STYLE_COL,
                              foreground=FGCOLOR_COL,
                              weight=WEIGHT_COL)

        cr2 = self.get_cell_renderer_number_of_items()
        column.pack_start(cr2, False)
        column.set_attributes(cr2, text=N_CHILD_COL, weight=WEIGHT_COL)

        if gtk.gtk_version >= (2, 12) \
        and gtk.pygtk_version >= (2, 12):
            self.set_tooltip_column(TIP_COL)

        self.set_headers_visible(False)

        self.set_enable_search(True)
        self.set_search_column(0)

        self.enable_model_drag_source(
            gtk.gdk.BUTTON1_MASK, (INTERNAL_PAGELIST_TARGET, ),
            gtk.gdk.ACTION_LINK | gtk.gdk.ACTION_MOVE)
        self.enable_model_drag_dest((INTERNAL_PAGELIST_TARGET, ),
                                    gtk.gdk.ACTION_MOVE)

        if ui_environment['platform'] == 'maemo':
            # Maemo gtk UI bugfix: expanders are hidden by default
            self.set_property('level-indentation', 0)
            self.set_property('show-expanders', 1)

        if model:
            self.set_model(model)
예제 #23
0
	def __init__(self, ui, model=None):
		'''Constructor

		@param ui: the L{GtkInterface} object
		@param model: a L{PageTreeStore} object
		'''
		BrowserTreeView.__init__(self)
		self.set_name('zim-pageindex')
		self.ui = ui
		self._cleanup = None # temporary created path that needs to be removed later

		column = gtk.TreeViewColumn('_pages_')
		self.append_column(column)

		cr1 = gtk.CellRendererText()
		cr1.set_property('ellipsize', pango.ELLIPSIZE_END)
		column.pack_start(cr1, True)
		column.set_attributes(cr1, text=NAME_COL,
			style=STYLE_COL, foreground=FGCOLOR_COL, weight=WEIGHT_COL)

		cr2 = self.get_cell_renderer_number_of_items()
		column.pack_start(cr2, False)
		column.set_attributes(cr2, text=N_CHILD_COL, weight=WEIGHT_COL)

		if gtk.gtk_version >= (2, 12) \
		and gtk.pygtk_version >= (2, 12):
			self.set_tooltip_column(TIP_COL)

		self.set_headers_visible(False)

		self.set_enable_search(True)
		self.set_search_column(0)

		self.enable_model_drag_source(
			gtk.gdk.BUTTON1_MASK, (INTERNAL_PAGELIST_TARGET,),
			gtk.gdk.ACTION_LINK | gtk.gdk.ACTION_MOVE )
		self.enable_model_drag_dest(
			(INTERNAL_PAGELIST_TARGET,),
			gtk.gdk.ACTION_MOVE )

		if ui_environment['platform'] == 'maemo':
			# Maemo gtk UI bugfix: expanders are hidden by default
			self.set_property('level-indentation', 0)
			self.set_property('show-expanders', 1)

		if model:
			self.set_model(model)
예제 #24
0
    def __init__(self, ui):
        model = gtk.ListStore(str, str)
            # NAME_COL, MODIFIED_COL
        BrowserTreeView.__init__(self, model)
        self.ui = ui

        cell_renderer = gtk.CellRendererText()

        column = gtk.TreeViewColumn(_('Page'), cell_renderer, text=self.NAME_COL) # T: Column header
        column.set_sort_column_id(self.NAME_COL)
        column.set_expand(True)
        self.append_column(column)

        today = datetime.date.today()
        yesterday = today - datetime.timedelta(days=1)
        def render_date(col, cell, model, i):
            utime = model.get_value(i, self.MODIFIED_COL)
            if utime:
                utime = float(utime)
                dt = datetime.datetime.fromtimestamp(utime)
                date = dt.date()
                if date == today:
                    text = _('Today') + dt.strftime(' %H:%M')
                    # T: label for modified time
                elif date == yesterday:
                    text = _('Yesterday') + dt.strftime(' %H:%M')
                    # T: label for modified time
                elif date.year == today.year:
                    text = dt.strftime('%a %d %b %H:%M') # TODO allow config for format ?
                else:
                    text = dt.strftime('%a %d %b, %Y %H:%M') # TODO allow config for format ?
            else:
                text = ''

            cell.set_property('text', text)

        cell_renderer = gtk.CellRendererText()
        #cell_renderer.set_property('font', 'mono')
        column = gtk.TreeViewColumn(_('Last Modified'), cell_renderer, text=self.MODIFIED_COL) # T: Column header
        column.set_cell_data_func(cell_renderer, render_date)
        column.set_sort_column_id(self.MODIFIED_COL)
        self.append_column(column)


        self.connect('row-activated', self._do_open_page)
예제 #25
0
    def _PageTreeView_init_(self, ui):
        '''
        This is a slightly modified copy of PageTreeView constructor 
        with one additional column for icons.
        '''
        BrowserTreeView.__init__(self)
        self.set_name('zim-pageindex')
        self.ui = ui
        self._cleanup = None  # temporary created path that needs to be removed later

        column = gtk.TreeViewColumn('_pages_')
        self.append_column(column)

        # Added Icon column.
        cr0 = gtk.CellRendererPixbuf()
        column.pack_start(cr0, expand=False)
        column.set_attributes(cr0, pixbuf=ICON_COL)

        cr1 = gtk.CellRendererText()
        cr1.set_property('ellipsize', pango.ELLIPSIZE_END)
        column.pack_start(cr1, True)
        column.set_attributes(cr1,
                              text=NAME_COL,
                              style=STYLE_COL,
                              foreground=FGCOLOR_COL,
                              weight=WEIGHT_COL)

        cr2 = self.get_cell_renderer_number_of_items()
        column.pack_start(cr2, False)
        column.set_attributes(cr2, text=N_CHILD_COL, weight=WEIGHT_COL)

        if gtk.gtk_version >= (2, 12) \
           and gtk.pygtk_version >= (2, 12):
            self.set_tooltip_column(TIP_COL)

        self.set_headers_visible(False)

        self.set_enable_search(True)
        self.set_search_column(0)

        self.enable_model_drag_source(
            gtk.gdk.BUTTON1_MASK, (INTERNAL_PAGELIST_TARGET, ),
            gtk.gdk.ACTION_LINK | gtk.gdk.ACTION_MOVE)
        self.enable_model_drag_dest((INTERNAL_PAGELIST_TARGET, ),
                                    gtk.gdk.ACTION_MOVE)
예제 #26
0
    def _PageTreeView_init_(self, ui):
        '''
        This is a slightly modified copy of PageTreeView constructor 
        with one additional column for icons.
        '''
        BrowserTreeView.__init__(self)
        self.set_name('zim-pageindex')
        self.ui = ui
        self._cleanup = None # temporary created path that needs to be removed later

        column = gtk.TreeViewColumn('_pages_')
        self.append_column(column)

        # Added Icon column.
        cr0 = gtk.CellRendererPixbuf()
        column.pack_start(cr0, expand = False)
        column.set_attributes(cr0, pixbuf = ICON_COL)

        cr1 = gtk.CellRendererText()
        cr1.set_property('ellipsize', pango.ELLIPSIZE_END)
        column.pack_start(cr1, True)
        column.set_attributes(cr1, text=NAME_COL,
                              style=STYLE_COL, foreground=FGCOLOR_COL, weight=WEIGHT_COL)

        cr2 = self.get_cell_renderer_number_of_items()
        column.pack_start(cr2, False)
        column.set_attributes(cr2, text=N_CHILD_COL, weight=WEIGHT_COL)

        if gtk.gtk_version >= (2, 12) \
           and gtk.pygtk_version >= (2, 12):
            self.set_tooltip_column(TIP_COL)

        self.set_headers_visible(False)

        self.set_enable_search(True)
        self.set_search_column(0)

        self.enable_model_drag_source(
            gtk.gdk.BUTTON1_MASK, (INTERNAL_PAGELIST_TARGET,),
            gtk.gdk.ACTION_LINK | gtk.gdk.ACTION_MOVE )
        self.enable_model_drag_dest(
            (INTERNAL_PAGELIST_TARGET,),
            gtk.gdk.ACTION_MOVE )
예제 #27
0
    def __init__(self, ui, model=None):
        '''Constructor

		@param ui: the L{GtkInterface} object
		@param model: a L{PageTreeStore} object
		'''
        BrowserTreeView.__init__(self)
        self.set_name('zim-pageindex')
        self.ui = ui

        column = gtk.TreeViewColumn('_pages_')
        self.append_column(column)

        cr1 = gtk.CellRendererText()
        cr1.set_property('ellipsize', pango.ELLIPSIZE_END)
        column.pack_start(cr1, True)
        column.set_attributes(cr1,
                              text=NAME_COL,
                              style=STYLE_COL,
                              foreground=FGCOLOR_COL,
                              weight=WEIGHT_COL)

        cr2 = self.get_cell_renderer_number_of_items()
        column.pack_start(cr2, False)
        column.set_attributes(cr2, text=N_CHILD_COL, weight=WEIGHT_COL)

        if gtk.gtk_version >= (2, 12) \
        and gtk.pygtk_version >= (2, 12):
            self.set_tooltip_column(TIP_COL)

        self.set_headers_visible(False)

        self.set_enable_search(True)
        self.set_search_column(0)

        self.enable_model_drag_source(
            gtk.gdk.BUTTON1_MASK, (INTERNAL_PAGELIST_TARGET, ),
            gtk.gdk.ACTION_LINK | gtk.gdk.ACTION_MOVE)
        self.enable_model_drag_dest((INTERNAL_PAGELIST_TARGET, ),
                                    gtk.gdk.ACTION_MOVE)

        if model:
            self.set_model(model)
예제 #28
0
    def __init__(self, notebook, navigation, model=None):
        BrowserTreeView.__init__(self)
        self.set_name('zim-pageindex')
        self.notebook = notebook
        self.navigation = navigation

        column = Gtk.TreeViewColumn('_pages_')
        column.set_expand(True)
        self.append_column(column)

        cr1 = Gtk.CellRendererText()
        cr1.set_property('ellipsize', Pango.EllipsizeMode.END)
        column.pack_start(cr1, True)
        column.set_attributes(cr1,
                              text=NAME_COL,
                              style=STYLE_COL,
                              sensitive=EXISTS_COL,
                              weight=WEIGHT_COL)

        column = Gtk.TreeViewColumn('_n_items_')
        self.append_column(column)

        cr2 = self.get_cell_renderer_number_of_items()
        column.pack_start(cr2, False)
        column.set_attributes(cr2, text=N_CHILD_COL, weight=WEIGHT_COL)

        self.set_tooltip_column(TIP_COL)

        self.set_headers_visible(False)

        self.set_enable_search(True)
        self.set_search_column(0)

        self.enable_model_drag_source(
            Gdk.ModifierType.BUTTON1_MASK, (INTERNAL_PAGELIST_TARGET, ),
            Gdk.DragAction.LINK | Gdk.DragAction.MOVE)
        self.enable_model_drag_dest((INTERNAL_PAGELIST_TARGET, ),
                                    Gdk.DragAction.MOVE)

        if model:
            self.set_model(model)
예제 #29
0
	def __init__(self, ui):
		model = gtk.ListStore(str, int) # page, rank
		BrowserTreeView.__init__(self, model)
		self.ui = ui
		self.searcher = Searcher(ui.notebook)

		cell_renderer = gtk.CellRendererText()
		for name, i in (
			(_('Page'), 0), # T: Column header search dialog
			(_('Score'), 1), # T: Column header search dialog
		):
			column = gtk.TreeViewColumn(name, cell_renderer, text=i)
			column.set_sort_column_id(i)
			if i == 0:
				column.set_expand(True)
			self.append_column(column)

		model.set_sort_column_id(1, gtk.SORT_DESCENDING)
			# By default sort by score

		self.connect('row-activated', self._do_open_page) # FIXME
예제 #30
0
	def do_key_press_event(self, event):
		# Keybindings for the treeview:
		#  Ctrl-C copy link to selected page
		#  Ctrl-L insert link to selected page in pageview
		# Keybindings for collapsing and expanding items are
		# implemented in the BrowserTreeView parent class
		# And MainWindow hooks Esc to close side pane
		handled = False
		#~ print 'KEY %s (%i)' % (gtk.gdk.keyval_name(event.keyval), event.keyval)

		if event.state & gtk.gdk.META_MASK:
			if event.keyval == KEYVAL_C:
				self.emit('copy')
				handled = True
			elif event.keyval == KEYVAL_L:
				path = self.get_selected_path()
				#~ print '!! insert-link', path
				self.emit('insert-link', path)
				handled = True

		return handled \
			or BrowserTreeView.do_key_press_event(self, event)
예제 #31
0
    def do_key_press_event(self, event):
        # Keybindings for the treeview:
        #  Ctrl-C copy link to selected page
        #  Ctrl-L insert link to selected page in pageview
        # Keybindings for collapsing and expanding items are
        # implemented in the BrowserTreeView parent class
        # And MainWindow hooks Esc to close side pane
        handled = False
        #~ print 'KEY %s (%i)' % (gtk.gdk.keyval_name(event.keyval), event.keyval)

        if event.state & gtk.gdk.META_MASK:
            if event.keyval == KEYVAL_C:
                self.emit('copy')
                handled = True
            elif event.keyval == KEYVAL_L:
                path = self.get_selected_path()
                #~ print '!! insert-link', path
                self.emit('insert-link', path)
                handled = True

        return handled \
         or BrowserTreeView.do_key_press_event(self, event)
예제 #32
0
파일: tasklist.py 프로젝트: DarioGT/Zim-QDA
    def __init__(self, ui, plugin, filter_actionable):
        self.real_model = gtk.TreeStore(bool, int, str, str, str, bool, bool, int, object)
            # VIS_COL, PRIO_COL, TASK_COL, DATE_COL, PAGE_COL, ACT_COL, OPEN_COL, TASKID_COL, TAGS_COL
        model = self.real_model.filter_new()
        model.set_visible_column(self.VIS_COL)
        model = gtk.TreeModelSort(model)
        model.set_sort_column_id(self.PRIO_COL, gtk.SORT_DESCENDING)
        BrowserTreeView.__init__(self, model)
        self.ui = ui
        self.plugin = plugin
        self.filter = None
        self.tag_filter = None
        self.label_filter = None
        self.filter_actionable = filter_actionable
        self._tags = {}
        self._labels = {}

        # Add some rendering for the Prio column
        def render_prio(col, cell, model, i):
            prio = model.get_value(i, self.PRIO_COL)
            cell.set_property('text', str(prio))
            if prio >= 3: color = HIGH_COLOR
            elif prio == 2: color = MEDIUM_COLOR
            elif prio == 1: color = ALERT_COLOR
            else: color = None
            cell.set_property('cell-background', color)

        cell_renderer = gtk.CellRendererText()
        # ~ column = gtk.TreeViewColumn(_('Prio'), cell_renderer)
            # T: Column header Task List dialog
        column = gtk.TreeViewColumn(' ! ', cell_renderer)
        column.set_cell_data_func(cell_renderer, render_prio)
        column.set_sort_column_id(self.PRIO_COL)
        self.append_column(column)

        # Rendering for task description column
        cell_renderer = gtk.CellRendererText()
        cell_renderer.set_property('ellipsize', pango.ELLIPSIZE_END)
        column = gtk.TreeViewColumn(_('Task'), cell_renderer, markup=self.TASK_COL)
                # T: Column header Task List dialog
        column.set_resizable(True)
        column.set_sort_column_id(self.TASK_COL)
        column.set_expand(True)
        if ui_environment['platform'] == 'maemo':
            column.set_min_width(250)  # don't let this column get too small
        else:
            column.set_min_width(300)  # don't let this column get too small
        self.append_column(column)
        self.set_expander_column(column)

        if gtk.gtk_version >= (2, 12, 0):
            self.set_tooltip_column(self.TASK_COL)

        # Rendering of the Date column
        use_workweek = plugin.preferences['use_workweek']
        day_of_week = datetime.date.today().isoweekday()
        if use_workweek and day_of_week == 4:
            # Today is Thursday - 2nd day ahead is after the weekend
            delta1, delta2 = 1, 3
        elif use_workweek and day_of_week == 5:
            # Today is Friday - next day ahead is after the weekend
            delta1, delta2 = 3, 4
        else:
            delta1, delta2 = 1, 2

        today = str(datetime.date.today())
        tomorrow = str(datetime.date.today() + datetime.timedelta(days=delta1))
        dayafter = str(datetime.date.today() + datetime.timedelta(days=delta2))
        def render_date(col, cell, model, i):
            date = model.get_value(i, self.DATE_COL)
            if date == _NO_DATE:
                cell.set_property('text', '')
            else:
                cell.set_property('text', date)
                # TODO allow strftime here

            if date <= today: color = HIGH_COLOR
            elif date <= tomorrow: color = MEDIUM_COLOR
            elif date <= dayafter: color = ALERT_COLOR
                # "<=" because tomorrow and/or dayafter can be after the weekend
            else: color = None
            cell.set_property('cell-background', color)

        cell_renderer = gtk.CellRendererText()
        column = gtk.TreeViewColumn(_('Date'), cell_renderer)
            # T: Column header Task List dialog
        column.set_cell_data_func(cell_renderer, render_date)
        column.set_sort_column_id(self.DATE_COL)
        self.append_column(column)

        # Rendering for page name column
        cell_renderer = gtk.CellRendererText()
        column = gtk.TreeViewColumn(_('Page'), cell_renderer, text=self.PAGE_COL)
                # T: Column header Task List dialog
        column.set_sort_column_id(self.PAGE_COL)
        self.append_column(column)

        # Finalize
        self.refresh()

        # HACK because we can not register ourselves :S
        self.connect('row_activated', self.__class__.do_row_activated)
예제 #33
0
    def __init__(self,
                 index_ext,
                 opener,
                 filter_actionable=False,
                 tag_by_page=False,
                 use_workweek=False):
        self.real_model = gtk.TreeStore(bool, int, str, str, str, bool, bool,
                                        int, object)
        # VIS_COL, PRIO_COL, TASK_COL, DATE_COL, PAGE_COL, ACT_COL, OPEN_COL, TASKID_COL, TAGS_COL
        model = self.real_model.filter_new()
        model.set_visible_column(self.VIS_COL)
        model = gtk.TreeModelSort(model)
        model.set_sort_column_id(self.PRIO_COL, gtk.SORT_DESCENDING)
        BrowserTreeView.__init__(self, model)

        self.index_ext = index_ext
        self.opener = opener
        self.filter = None
        self.tag_filter = None
        self.label_filter = None
        self.filter_actionable = filter_actionable
        self.tag_by_page = tag_by_page
        self._tags = {}
        self._labels = {}

        # Add some rendering for the Prio column
        def render_prio(col, cell, model, i):
            prio = model.get_value(i, self.PRIO_COL)
            cell.set_property('text', str(prio))
            if prio >= 3: color = HIGH_COLOR
            elif prio == 2: color = MEDIUM_COLOR
            elif prio == 1: color = ALERT_COLOR
            else: color = None
            cell.set_property('cell-background', color)

        cell_renderer = gtk.CellRendererText()
        #~ column = gtk.TreeViewColumn(_('Prio'), cell_renderer)
        # T: Column header Task List dialog
        column = gtk.TreeViewColumn(' ! ', cell_renderer)
        column.set_cell_data_func(cell_renderer, render_prio)
        column.set_sort_column_id(self.PRIO_COL)
        self.append_column(column)

        # Rendering for task description column
        cell_renderer = gtk.CellRendererText()
        cell_renderer.set_property('ellipsize', pango.ELLIPSIZE_END)
        column = gtk.TreeViewColumn(_('Task'),
                                    cell_renderer,
                                    markup=self.TASK_COL)
        # T: Column header Task List dialog
        column.set_resizable(True)
        column.set_sort_column_id(self.TASK_COL)
        column.set_expand(True)
        if ui_environment['platform'] == 'maemo':
            column.set_min_width(250)  # don't let this column get too small
        else:
            column.set_min_width(300)  # don't let this column get too small
        self.append_column(column)
        self.set_expander_column(column)

        if gtk.gtk_version >= (2, 12, 0):
            self.set_tooltip_column(self.TASK_COL)

        # Rendering of the Date column
        day_of_week = datetime.date.today().isoweekday()
        if use_workweek and day_of_week == 4:
            # Today is Thursday - 2nd day ahead is after the weekend
            delta1, delta2 = 1, 3
        elif use_workweek and day_of_week == 5:
            # Today is Friday - next day ahead is after the weekend
            delta1, delta2 = 3, 4
        else:
            delta1, delta2 = 1, 2

        today = str(datetime.date.today())
        tomorrow = str(datetime.date.today() + datetime.timedelta(days=delta1))
        dayafter = str(datetime.date.today() + datetime.timedelta(days=delta2))

        def render_date(col, cell, model, i):
            date = model.get_value(i, self.DATE_COL)
            if date == _NO_DATE:
                cell.set_property('text', '')
            else:
                cell.set_property('text', date)
                # TODO allow strftime here

            if date <= today: color = HIGH_COLOR
            elif date <= tomorrow: color = MEDIUM_COLOR
            elif date <= dayafter:
                color = ALERT_COLOR
                # "<=" because tomorrow and/or dayafter can be after the weekend
            else:
                color = None
            cell.set_property('cell-background', color)

        cell_renderer = gtk.CellRendererText()
        column = gtk.TreeViewColumn(_('Date'), cell_renderer)
        # T: Column header Task List dialog
        column.set_cell_data_func(cell_renderer, render_date)
        column.set_sort_column_id(self.DATE_COL)
        self.append_column(column)

        # Rendering for page name column
        cell_renderer = gtk.CellRendererText()
        column = gtk.TreeViewColumn(_('Page'),
                                    cell_renderer,
                                    text=self.PAGE_COL)
        # T: Column header Task List dialog
        column.set_sort_column_id(self.PAGE_COL)
        self.append_column(column)

        # Finalize
        self.refresh()

        # HACK because we can not register ourselves :S
        self.connect('row_activated', self.__class__.do_row_activated)
예제 #34
0
    def __init__(self,
                 tasksview,
                 opener,
                 task_labels,
                 nonactionable_tags=(),
                 filter_actionable=False,
                 tag_by_page=False,
                 use_workweek=False,
                 compact=False,
                 flatlist=False,
                 sort_column=PRIO_COL,
                 sort_order=Gtk.SortType.DESCENDING):
        self.real_model = Gtk.TreeStore(bool, bool, int, str, str, object, str,
                                        str, int, int, str)
        # VIS_COL, ACT_COL, PRIO_COL, START_COL, DUE_COL, TAGS_COL, DESC_COL, PAGE_COL, TASKID_COL, PRIO_SORT_COL, PRIO_SORT_LABEL_COL
        model = self.real_model.filter_new()
        model.set_visible_column(self.VIS_COL)
        model = Gtk.TreeModelSort(model)
        model.set_sort_column_id(sort_column, sort_order)
        BrowserTreeView.__init__(self, model)

        self.tasksview = tasksview
        self.opener = opener
        self.filter = None
        self.tag_filter = None
        self.label_filter = None
        self.filter_actionable = filter_actionable
        self.nonactionable_tags = tuple(
            t.strip('@').lower() for t in nonactionable_tags)
        self.tag_by_page = tag_by_page
        self.task_labels = task_labels
        self._tags = {}
        self._labels = {}
        self.flatlist = flatlist

        # Add some rendering for the Prio column
        def render_prio(col, cell, model, i, data):
            prio = model.get_value(i, self.PRIO_COL)
            text = model.get_value(i, self.PRIO_SORT_LABEL_COL)
            if text.startswith('>'):
                text = '<span color="darkgrey">%s</span>' % text
                bg = None
            else:
                bg = COLORS[min(prio, 3)]
            cell.set_property('markup', text)
            cell.set_property('cell-background', bg)

        cell_renderer = Gtk.CellRendererText()
        column = Gtk.TreeViewColumn('!', cell_renderer)
        column.set_cell_data_func(cell_renderer, render_prio)
        column.set_sort_column_id(self.PRIO_SORT_COL)
        self.append_column(column)

        # Rendering for task description column
        cell_renderer = Gtk.CellRendererText()
        cell_renderer.set_property('ellipsize', Pango.EllipsizeMode.END)
        column = Gtk.TreeViewColumn(_('Task'),
                                    cell_renderer,
                                    markup=self.DESC_COL)
        # T: Column header Task List dialog
        column.set_resizable(True)
        column.set_sort_column_id(self.DESC_COL)
        column.set_expand(True)
        if compact:
            column.set_min_width(100)
        else:
            column.set_min_width(300)  # don't let this column get too small
        self.append_column(column)
        self.set_expander_column(column)

        # custom tooltip
        self.props.has_tooltip = True
        self.connect("query-tooltip", self._query_tooltip_cb)

        # Rendering of the Date column
        day_of_week = datetime.date.today().isoweekday()
        if use_workweek and day_of_week == 4:
            # Today is Thursday - 2nd day ahead is after the weekend
            delta1, delta2 = 1, 3
        elif use_workweek and day_of_week == 5:
            # Today is Friday - next day ahead is after the weekend
            delta1, delta2 = 3, 4
        else:
            delta1, delta2 = 1, 2

        today = str(datetime.date.today())
        tomorrow = str(datetime.date.today() + datetime.timedelta(days=delta1))
        dayafter = str(datetime.date.today() + datetime.timedelta(days=delta2))

        def render_date(col, cell, model, i, data):
            date = model.get_value(i, self.DUE_COL)
            if date == _MAX_DUE_DATE:
                cell.set_property('text', '')
            else:
                cell.set_property('text', date)
                # TODO allow strftime here

            if date <= today:
                color = HIGH_COLOR
            elif date <= tomorrow:
                color = MEDIUM_COLOR
            elif date <= dayafter:
                color = ALERT_COLOR
            # "<=" because tomorrow and/or dayafter can be after the weekend
            else:
                color = None
            cell.set_property('cell-background', color)

        if not compact:
            cell_renderer = Gtk.CellRendererText()
            column = Gtk.TreeViewColumn(_('Date'), cell_renderer)
            # T: Column header Task List dialog
            column.set_cell_data_func(cell_renderer, render_date)
            column.set_sort_column_id(self.DUE_COL)
            self.append_column(column)

        # Rendering for page name column
        if not compact:
            cell_renderer = Gtk.CellRendererText()
            column = Gtk.TreeViewColumn(_('Page'),
                                        cell_renderer,
                                        text=self.PAGE_COL)
            # T: Column header Task List dialog
            column.set_sort_column_id(self.PAGE_COL)
            self.append_column(column)

        # Finalize
        self.refresh()

        # HACK because we can not register ourselves :S
        self.connect('row_activated', self.__class__.do_row_activated)
        self.connect('focus-in-event', self.__class__.do_focus_in_event)
예제 #35
0
	def __init__(self, index_ext, opener):
		self.real_model = gtk.TreeStore(bool, int, str, str, str, str)
			# VIS_COL, PRIO_COL, TASK_COL, DATE_COL, TASKID_COL, DESCR_COL
		model = self.real_model.filter_new()
		model.set_visible_column(self.VIS_COL)
		model = gtk.TreeModelSort(model)
		model.set_sort_column_id(self.PRIO_COL, gtk.SORT_DESCENDING)
		BrowserTreeView.__init__(self, model)

		self.index_ext = index_ext
		self.opener = opener
		self.filter = None

		# Add some rendering for the Prio column
		def render_prio(col, cell, model, i):
			prio = model.get_value(i, self.PRIO_COL)
			cell.set_property('text', str(prio))
			if prio >= 3: color = HIGH_COLOR
			elif prio == 2: color = MEDIUM_COLOR
			elif prio == 1: color = ALERT_COLOR
			else: color = None
			cell.set_property('cell-background', color)

		cell_renderer = gtk.CellRendererText()
		#~ column = gtk.TreeViewColumn(_('Prio'), cell_renderer)
			# T: Column header Task List dialog
		column = gtk.TreeViewColumn(' ! ', cell_renderer)
		column.set_cell_data_func(cell_renderer, render_prio)
		column.set_sort_column_id(self.PRIO_COL)
		self.append_column(column)

		# Rendering for task summary column
		cell_renderer = gtk.CellRendererText()
		cell_renderer.set_property('ellipsize', pango.ELLIPSIZE_END)
		column = gtk.TreeViewColumn(_('Task'), cell_renderer, markup=self.TASK_COL)
				# T: Column header Task List dialog
		column.set_resizable(True)
		column.set_sort_column_id(self.TASK_COL)
		column.set_expand(True)
		if ui_environment['platform'] == 'maemo':
			column.set_min_width(250) # don't let this column get too small
		else:
			column.set_min_width(300) # don't let this column get too small
		self.append_column(column)
		self.set_expander_column(column)

		if gtk.gtk_version >= (2, 12, 0):
			self.set_tooltip_column(self.TASK_COL)

		day_of_week = datetime.date.today().isoweekday()
                delta1, delta2 = 1, 2

		today    = str( datetime.date.today() )
		tomorrow = str( datetime.date.today() + datetime.timedelta(days=delta1))
		dayafter = str( datetime.date.today() + datetime.timedelta(days=delta2))
		def render_date(col, cell, model, i):
			date = model.get_value(i, self.DATE_COL)
			if date == _NO_DATE:
				cell.set_property('text', '')
			else:
				cell.set_property('text', date)
				# TODO allow strftime here

			if date <= today: color = HIGH_COLOR
			elif date <= tomorrow: color = MEDIUM_COLOR
			elif date <= dayafter: color = ALERT_COLOR
				# "<=" because tomorrow and/or dayafter can be after the weekend
			else: color = None
			cell.set_property('cell-background', color)

		cell_renderer = gtk.CellRendererText()
		column = gtk.TreeViewColumn(_('Date'), cell_renderer)
			# T: Column header Task List dialog
		column.set_cell_data_func(cell_renderer, render_date)
		column.set_sort_column_id(self.DATE_COL)
		self.append_column(column)

		# Finalize
		self.refresh()