Пример #1
0
    def __init__(self):
        gtk.TreeView.__init__(self)

        column = gtk.TreeViewColumn('Preview', 
                                     gtk.CellRendererPixbuf(),
                                    pixbuf=ImageStore.COL_THUMBNAIL)

        self.append_column(column)

        renderer =  gtk.CellRendererText()
        renderer.set_property('ellipsize', pango.ELLIPSIZE_END) 

        column = gtk.TreeViewColumn('Info', renderer)
        column.set_cell_data_func(renderer, self.data_func)
        self.append_column(column)

        self.set_headers_visible(False)
        self.set_enable_search(False)

        selection = self.get_selection()
        selection.set_mode(gtk.SELECTION_MULTIPLE)

        # Setup the drag and drop
        self.targets = self.drag_dest_get_target_list()
        self.targets = gtk.target_list_add_image_targets (self.targets, DRAG_IMAGE, False)
        self.targets = gtk.target_list_add_uri_targets (self.targets, DRAG_URI)
        self.drag_dest_set (gtk.DEST_DEFAULT_ALL, self.targets, gtk.gdk.ACTION_COPY)
Пример #2
0
    def __init__(self):
        gtk.TreeView.__init__(self)

        column = gtk.TreeViewColumn('Preview',
                                    gtk.CellRendererPixbuf(),
                                    pixbuf=ImageStore.COL_THUMBNAIL)

        self.append_column(column)

        renderer = gtk.CellRendererText()
        renderer.set_property('ellipsize', pango.ELLIPSIZE_END)

        column = gtk.TreeViewColumn('Info', renderer)
        column.set_cell_data_func(renderer, self.data_func)
        self.append_column(column)

        self.set_headers_visible(False)
        self.set_enable_search(False)

        selection = self.get_selection()
        selection.set_mode(gtk.SELECTION_MULTIPLE)

        # Setup the drag and drop
        self.targets = self.drag_dest_get_target_list()
        self.targets = gtk.target_list_add_image_targets(
            self.targets, DRAG_IMAGE, False)
        self.targets = gtk.target_list_add_uri_targets(self.targets, DRAG_URI)
        self.drag_dest_set(gtk.DEST_DEFAULT_ALL, self.targets,
                           gtk.gdk.ACTION_COPY)
	def __init__( self, snapshots, glade ):
		self.snapshots = snapshots
		self.config = snapshots.config
		self.glade = glade

		self.path = None
		self.icon_name = None

		self.dialog = self.glade.get_widget( 'SnapshotsDialog' )

		signals = { 
			'on_list_snapshots_cursor_changed' : self.on_list_snapshots_cursor_changed,
			'on_list_snapshots_row_activated' : self.on_list_snapshots_row_activated,
			'on_list_snapshots_popup_menu' : self.on_list_snapshots_popup_menu,
			'on_list_snapshots_button_press_event': self.on_list_snapshots_button_press_event,
			'on_list_snapshots_drag_data_get': self.on_list_snapshots_drag_data_get,
			'on_btn_diff_with_clicked' : self.on_btn_diff_with_clicked,
			'on_btn_copy_snapshot_clicked' : self.on_btn_copy_snapshot_clicked,
			'on_btn_restore_snapshot_clicked' : self.on_btn_restore_snapshot_clicked
			}

		#path
		self.edit_path = self.glade.get_widget( 'edit_path' )

		#diff
		self.edit_diff_cmd = self.glade.get_widget( 'edit_diff_cmd' )
		self.edit_diff_cmd_params = self.glade.get_widget( 'edit_diff_cmd_params' )

		diff_cmd = self.config.get_str_value( 'gnome.diff.cmd', 'meld' )
		diff_cmd_params = self.config.get_str_value( 'gnome.diff.params', '%1 %2' )

		self.edit_diff_cmd.set_text( diff_cmd )
		self.edit_diff_cmd_params.set_text( diff_cmd_params )

		#setup backup folders
		self.list_snapshots = self.glade.get_widget( 'list_snapshots' )
		self.list_snapshots.drag_source_set( gtk.gdk.BUTTON1_MASK | gtk.gdk.BUTTON3_MASK, gtk.target_list_add_uri_targets(), gtk.gdk.ACTION_COPY )

		self.glade.signal_autoconnect( signals )
		
		text_renderer = gtk.CellRendererText()
		column = gtk.TreeViewColumn( _('Snapshots') )
		column.pack_end( text_renderer, True )
		column.add_attribute( text_renderer, 'markup', 0 )
		column.set_sort_column_id( 0 )
		self.list_snapshots.append_column( column )

		#display name, snapshot_id
		self.store_snapshots = gtk.ListStore( str, str )
		self.list_snapshots.set_model( self.store_snapshots )

		self.store_snapshots.set_sort_column_id( 0, gtk.SORT_DESCENDING )

		#setup diff with combo
		self.combo_diff_with = self.glade.get_widget( 'combo_diff_with' )
		text_renderer = gtk.CellRendererText()
		self.combo_diff_with.pack_start( text_renderer, True )
		self.combo_diff_with.add_attribute( text_renderer, 'markup', 0 )
		self.combo_diff_with.set_model( self.store_snapshots ) #use the same store
def clipboard_copy_path(path):
    targets = gtk.target_list_add_uri_targets()
    targets = gtk.target_list_add_text_targets(targets)
    targets.append(("x-special/gnome-copied-files", 0, 0))

    clipboard = gtk.clipboard_get()
    clipboard.set_with_data(targets, __clipboard_copy_path_get, __clipboard_copy_path_clear, path)
    clipboard.store()
def clipboard_copy_path(path):
    targets = gtk.target_list_add_uri_targets()
    targets = gtk.target_list_add_text_targets(targets)
    targets.append(('x-special/gnome-copied-files', 0, 0))

    clipboard = gtk.clipboard_get()
    clipboard.set_with_data(targets, __clipboard_copy_path_get,
                            __clipboard_copy_path_clear, path)
    clipboard.store()
Пример #6
0
    def __copy_activate_cb(self, menu_item):
        clipboard = gtk.Clipboard()
        targets = gtk.target_list_add_uri_targets()
        targets = gtk.target_list_add_text_targets(targets)
        targets.append(('text/x-moz-url', 0, 0))

        clipboard.set_with_data(targets,
                                self.__clipboard_get_func_cb,
                                self.__clipboard_clear_func_cb)
Пример #7
0
	def update_dnd_targets (self):
		targets = None
		if self.current_entry:
			targets = gtk.target_list_add_image_targets (targets)
			targets = gtk.target_list_add_uri_targets (targets)
			targets = gtk.target_list_add_text_targets (targets)
		if targets:
			self.drag_dest_set (gtk.DEST_DEFAULT_ALL, targets, gtk.gdk.ACTION_COPY)
		else:
			self.drag_dest_unset ()

		targets = None
		if self.current_pixbuf:
			targets = gtk.target_list_add_image_targets (targets, writable=True)
		if self.current_uri:
			targets = gtk.target_list_add_uri_targets (targets)
		if targets:
			self.drag_source_set (gtk.gdk.BUTTON1_MASK, targets, gtk.gdk.ACTION_COPY)
		else:
			self.drag_source_unset ()
Пример #8
0
    def __clipboard_get_func_cb(self, clipboard, selection_data, info, data):
        uri_targets = \
            [target[0] for target in gtk.target_list_add_uri_targets()]
        text_targets = \
            [target[0] for target in gtk.target_list_add_text_targets()]

        if selection_data.target in uri_targets:
            selection_data.set_uris([self._url])
        elif selection_data.target in text_targets:
            selection_data.set_text(self._url)
        elif selection_data.target == 'text/x-moz-url':
            selection_data.set('text/x-moz-url', 8, self._url)
Пример #9
0
        def build(self):
                self.builder = gtk.Builder()
                self.builder.add_from_file(os.path.join(self.datadir, 'ui', 'snippets.ui'))
                
                handlers_dic = {
                        'on_dialog_snippets_response': self.on_dialog_snippets_response,
                        'on_dialog_snippets_destroy': self.on_dialog_snippets_destroy,
                        'on_button_new_snippet_clicked': self.on_button_new_snippet_clicked,
                        'on_button_import_snippets_clicked': self.on_button_import_snippets_clicked,
                        'on_button_export_snippets_clicked': self.on_button_export_snippets_clicked,
                        'on_button_remove_snippet_clicked': self.on_button_remove_snippet_clicked,
                        'on_entry_tab_trigger_focus_out': self.on_entry_tab_trigger_focus_out,
                        'on_entry_tab_trigger_changed': self.on_entry_tab_trigger_changed,
                        'on_entry_accelerator_focus_out': self.on_entry_accelerator_focus_out,
                        'on_entry_accelerator_focus_in': self.on_entry_accelerator_focus_in,
                        'on_entry_accelerator_key_press': self.on_entry_accelerator_key_press,
                        'on_source_view_snippet_focus_out': self.on_source_view_snippet_focus_out,
                        'on_tree_view_snippets_row_expanded': self.on_tree_view_snippets_row_expanded,
                        'on_tree_view_snippets_key_press': self.on_tree_view_snippets_key_press}

                self.builder.connect_signals(handlers_dic)
                
                self.build_tree_view()
                self.build_model()

                image = self['image_remove']
                image.set_from_stock(gtk.STOCK_REMOVE, gtk.ICON_SIZE_SMALL_TOOLBAR)

                source_view = self['source_view_snippet']
                manager = get_language_manager()
                lang = manager.get_language('snippets')

                if lang:
                        source_view.get_buffer().set_highlight_syntax(True)
                        source_view.get_buffer().set_language(lang)
                        self.snippets_doc = Document(None, source_view)

                combo = self['combo_drop_targets']
                combo.set_text_column(0)

                entry = combo.child
                entry.connect('focus-out-event', self.on_entry_drop_targets_focus_out)
                entry.connect('drag-data-received', self.on_entry_drop_targets_drag_data_received)
                
                lst = entry.drag_dest_get_target_list()
                lst = gtk.target_list_add_uri_targets(entry.drag_dest_get_target_list(), self.TARGET_URI)
                entry.drag_dest_set_target_list(lst)
                
                self.dlg = self['dialog_snippets']
                
                if self.default_size:
                        self.dlg.set_default_size(*self.default_size)
Пример #10
0
def copy_to_clipboard(obj, clipboard):
    """
	Copy @obj to @clipboard, a gtk.Clipboard

	Return True if successful
	"""
    ## support copying text to clipboard
    ## as well as files in both the general uri-list representation
    ## and in nautilus' file copy clipboard type
    target_ids = (uri_id, text_id, nautilus_id) = (80, 81, 82)
    nautilus_target = 'x-special/gnome-copied-files'

    # udata is the data dict
    def store(clipboard, sdata, info, udata):
        if info == uri_id:
            sdata.set_uris(udata[uri_id])
        if info == text_id:
            sdata.set_text(udata[text_id])
        if info == nautilus_id:
            str_data_format = 8
            sdata.set(nautilus_target, str_data_format, udata[nautilus_id])

    def clear(clipboard, udata):
        pass

    targets = []
    data = {}
    try:
        urilist = obj.get_urilist_representation()
    except AttributeError:
        pass
    else:
        if urilist:
            targets = gtk.target_list_add_uri_targets(targets, uri_id)
            targets.append((nautilus_target, 0, nautilus_id))
            data[uri_id] = urilist
            data[nautilus_id] = 'copy\n' + '\n'.join(urilist)

    try:
        text = obj.get_text_representation()
    except AttributeError:
        pass
    else:
        targets = gtk.target_list_add_text_targets(targets, text_id)
        data[text_id] = text
    if data:
        clipboard.set_with_data(targets, store, clear, data)
        # store all targets
        clipboard.set_can_store(None)
        clipboard.store()
        return True
    return False
Пример #11
0
        def build(self):
                self.builder = gtk.Builder()
                self.builder.add_from_file(os.path.join(self.datadir, 'ui', 'snippets.ui'))
                
                handlers_dic = {
                        'on_dialog_snippets_response': self.on_dialog_snippets_response,
                        'on_dialog_snippets_destroy': self.on_dialog_snippets_destroy,
                        'on_button_new_snippet_clicked': self.on_button_new_snippet_clicked,
                        'on_button_import_snippets_clicked': self.on_button_import_snippets_clicked,
                        'on_button_export_snippets_clicked': self.on_button_export_snippets_clicked,
                        'on_button_remove_snippet_clicked': self.on_button_remove_snippet_clicked,
                        'on_entry_tab_trigger_focus_out': self.on_entry_tab_trigger_focus_out,
                        'on_entry_tab_trigger_changed': self.on_entry_tab_trigger_changed,
                        'on_entry_accelerator_focus_out': self.on_entry_accelerator_focus_out,
                        'on_entry_accelerator_focus_in': self.on_entry_accelerator_focus_in,
                        'on_entry_accelerator_key_press': self.on_entry_accelerator_key_press,
                        'on_source_view_snippet_focus_out': self.on_source_view_snippet_focus_out,
                        'on_tree_view_snippets_row_expanded': self.on_tree_view_snippets_row_expanded,
                        'on_tree_view_snippets_key_press': self.on_tree_view_snippets_key_press}

                self.builder.connect_signals(handlers_dic)
                
                self.build_tree_view()
                self.build_model()

                image = self['image_remove']
                image.set_from_stock(gtk.STOCK_REMOVE, gtk.ICON_SIZE_SMALL_TOOLBAR)

                source_view = self['source_view_snippet']
                manager = get_language_manager()
                lang = manager.get_language('snippets')

                if lang:
                        source_view.get_buffer().set_highlight_syntax(True)
                        source_view.get_buffer().set_language(lang)
                        self.snippets_doc = Document(None, source_view)

                combo = self['combo_drop_targets']
                combo.set_text_column(0)

                entry = combo.child
                entry.connect('focus-out-event', self.on_entry_drop_targets_focus_out)
                entry.connect('drag-data-received', self.on_entry_drop_targets_drag_data_received)
                
                lst = entry.drag_dest_get_target_list()
                lst = gtk.target_list_add_uri_targets(entry.drag_dest_get_target_list(), self.TARGET_URI)
                entry.drag_dest_set_target_list(lst)
                
                self.dlg = self['dialog_snippets']
                
                if self.default_size:
                        self.dlg.set_default_size(*self.default_size)
Пример #12
0
    def update_dnd_targets(self):
        targets = None
        if self.current_entry:
            targets = gtk.target_list_add_image_targets(targets)
            targets = gtk.target_list_add_uri_targets(targets)
            targets = gtk.target_list_add_text_targets(targets)
        if targets:
            self.drag_dest_set(gtk.DEST_DEFAULT_ALL, targets,
                               gtk.gdk.ACTION_COPY)
        else:
            self.drag_dest_unset()

        targets = None
        if self.current_pixbuf:
            targets = gtk.target_list_add_image_targets(targets, writable=True)
        if self.current_uri:
            targets = gtk.target_list_add_uri_targets(targets)
        if targets:
            self.drag_source_set(gtk.gdk.BUTTON1_MASK, targets,
                                 gtk.gdk.ACTION_COPY)
        else:
            self.drag_source_unset()
Пример #13
0
def copy_to_clipboard(obj, clipboard):
    """
    Copy @obj to @clipboard, a gtk.Clipboard

    Return True if successful
    """
    ## support copying text to clipboard
    ## as well as files in both the general uri-list representation
    ## and in nautilus' file copy clipboard type
    target_ids = (uri_id, text_id, nautilus_id) = (80, 81, 82)
    nautilus_target = 'x-special/gnome-copied-files'

    # udata is the data dict
    def store(clipboard, sdata, info, udata):
        if info == uri_id:
            sdata.set_uris(udata[uri_id])
        if info == text_id:
            sdata.set_text(udata[text_id])
        if info == nautilus_id:
            str_data_format = 8
            sdata.set(nautilus_target, str_data_format, udata[nautilus_id])

    def clear(clipboard, udata):
        pass

    targets = []
    data = {}
    try:
        urilist = obj.get_urilist_representation()
    except AttributeError:
        pass
    else:
        if urilist:
            targets = gtk.target_list_add_uri_targets(targets, uri_id)
            targets.append((nautilus_target, 0, nautilus_id))
            data[uri_id] = urilist
            data[nautilus_id] = 'copy\n' + '\n'.join(urilist)

    try:
        text = obj.get_text_representation()
    except AttributeError:
        pass
    else:
        targets = gtk.target_list_add_text_targets(targets, text_id)
        data[text_id] = text
    if data:
        clipboard.set_with_data(targets, store, clear, data)
        # store all targets
        clipboard.set_can_store(targets)
        return True
    return False
Пример #14
0
 def on_motion_notify_event(self, widget, hippo_event, url):
     if self.__drag_start_pos != None and self.__drag_window == None:
         start_x, start_y = self.__drag_start_pos
         canvas_window = hippo.get_canvas_for_item(self._box)
         if canvas_window.drag_check_threshold(int(start_x), int(start_y), int(hippo_event.x), int(hippo_event.y)):
             self.__drag_window = gtk.Invisible()
             self.__drag_window.connect("drag-data-get", self.on_drag_data_get, url)
             self.__drag_window.connect("drag-end", self.on_drag_end)
             
             event = gtk.gdk.Event(gtk.gdk.MOTION_NOTIFY)
             x, y, s = gtk.gdk.get_default_root_window().get_pointer()
             event.x_root = float(x)
             event.y_root = float(y)
             event.state = s
             event.window = gtk.gdk.get_default_root_window()
             self.__drag_window.drag_begin(gtk.target_list_add_uri_targets(), gtk.gdk.ACTION_COPY, 1, event)
             return True
     return False
Пример #15
0
    def __init__(self, worker, service_col_types, default_service_cols_cb):
        gtk.HBox.__init__(self)
        self.worker = worker
        self.default_service_cols_cb = default_service_cols_cb
        self.active_row = None
        self.active_item = None
        self.model = gtk.ListStore(gtk.gdk.Pixbuf, str, gobject.TYPE_DOUBLE,
                                   gobject.TYPE_INT, gobject.TYPE_PYOBJECT,
                                   str, gobject.TYPE_BOOLEAN, str,
                                   *service_col_types)
        self.upload_collection = baseobjects.SimpleCollection()
        self.tv = gtk.TreeView(self.model)
        self.tv.set_reorderable(True)
        self.tv.set_headers_visible(False)
        self.tv.get_selection().set_mode(gtk.SELECTION_MULTIPLE)
        ##self.tv.connect("row-activated",self.tag_activate)
        tvc_bitmap = gtk.TreeViewColumn(None,
                                        gtk.CellRendererPixbuf(),
                                        pixbuf=MODEL_COL_PIXBUF)
        tvc_text = gtk.TreeViewColumn(None,
                                      gtk.CellRendererText(),
                                      markup=MODEL_COL_NAME)
        prog = gtk.CellRendererProgress()
        tvc_progress = gtk.TreeViewColumn(None, prog, value=MODEL_COL_PROGRESS)
        ##gtk.CellRendererText
        self.tv.append_column(tvc_bitmap)
        self.tv.append_column(tvc_text)
        self.tv.append_column(tvc_progress)

        target_list = self.tv.drag_dest_get_target_list()
        target_list = gtk.target_list_add_uri_targets(target_list, 0)
        self.tv.enable_model_drag_dest(
            target_list, gtk.gdk.ACTION_DEFAULT | gtk.gdk.ACTION_COPY)
        #        self.tv.drag_dest_set(gtk.DEST_DEFAULT_ALL,
        #                target_list,
        #                gtk.gdk.ACTION_DEFAULT | gtk.gdk.ACTION_COPY | gtk.gdk.ACTION_MOVE)
        self.tv.connect("drag-data-received", self.drag_receive_signal)
        self.tv.add_events(gtk.gdk.BUTTON_MOTION_MASK)
        self.tv.connect("button-release-event", self.context_menu)

        scrolled_window = gtk.ScrolledWindow()
        scrolled_window.add(self.tv)
        scrolled_window.set_policy(gtk.POLICY_NEVER, gtk.POLICY_AUTOMATIC)
        self.pack_start(scrolled_window)
Пример #16
0
	def set_as_current(self, event=None):
		def path_get(clipboard, selectiondata, info, path):
			selectiondata.set_text(path)
			files = path.split("\n")
			file_paths = []
			for copied_file in files:
				gfile = gio.File(copied_file)
				file_paths.append(gfile.get_uri())
			selectiondata.set_uris(file_paths)
			selectiondata.set('x-special/gnome-copied-files', 8, 'copy\n' + '\n'.join(file_paths))

		def path_clear(self, path):
			return

		HistoryMenuItem.set_as_current(self, event)
		targets = gtk.target_list_add_uri_targets()
		targets = gtk.target_list_add_text_targets(targets)
		targets.append(('x-special/gnome-copied-files', 0, 0))

		gtk.clipboard_get().set_with_data(targets, path_get, path_clear, self.payload)
		gtk.clipboard_get().store()
Пример #17
0
    def set_as_current(self, event=None):
        def path_get(clipboard, selectiondata, info, path):
            selectiondata.set_text(path)
            files = path.split("\n")
            file_paths = []
            for copied_file in files:
                file_path = gnomevfs.escape_path_string(copied_file)
                file_paths.append("file://" + file_path)
            selectiondata.set_uris(file_paths)
            selectiondata.set("x-special/gnome-copied-files", 8, "copy\n" + "\n".join(file_paths))

        def path_clear(self, path):
            return

        HistoryMenuItem.set_as_current(self, event)
        targets = gtk.target_list_add_uri_targets()
        targets = gtk.target_list_add_text_targets(targets)
        targets.append(("x-special/gnome-copied-files", 0, 0))

        gtk.clipboard_get().set_with_data(targets, path_get, path_clear, self.payload)
        gtk.clipboard_get().store()
Пример #18
0
    def set_as_current(self, event=None):
        def path_get(clipboard, selectiondata, info, path):
            selectiondata.set_text(path)
            files = path.split("\n")
            file_paths = []
            for copied_file in files:
                gfile = gio.File(copied_file)
                file_paths.append(gfile.get_uri())
            selectiondata.set_uris(file_paths)
            selectiondata.set('x-special/gnome-copied-files', 8,
                              'copy\n' + '\n'.join(file_paths))

        def path_clear(self, path):
            return

        HistoryMenuItem.set_as_current(self, event)
        targets = gtk.target_list_add_uri_targets()
        targets = gtk.target_list_add_text_targets(targets)
        targets.append(('x-special/gnome-copied-files', 0, 0))

        gtk.clipboard_get().set_with_data(targets, path_get, path_clear,
                                          self.payload)
        gtk.clipboard_get().store()
Пример #19
0
    def __init__(self,worker,service_col_types,default_service_cols_cb):
        gtk.HBox.__init__(self)
        self.worker=worker
        self.default_service_cols_cb=default_service_cols_cb
        self.active_row=None
        self.active_item=None
        self.model=gtk.ListStore(gtk.gdk.Pixbuf,str,gobject.TYPE_DOUBLE,gobject.TYPE_INT,gobject.TYPE_PYOBJECT,str,gobject.TYPE_BOOLEAN,str,*service_col_types)
        self.upload_collection=baseobjects.SimpleCollection()
        self.tv=gtk.TreeView(self.model)
        self.tv.set_reorderable(True)
        self.tv.set_headers_visible(False)
        self.tv.get_selection().set_mode(gtk.SELECTION_MULTIPLE)
        ##self.tv.connect("row-activated",self.tag_activate)
        tvc_bitmap=gtk.TreeViewColumn(None,gtk.CellRendererPixbuf(),pixbuf=MODEL_COL_PIXBUF)
        tvc_text=gtk.TreeViewColumn(None,gtk.CellRendererText(),markup=MODEL_COL_NAME)
        prog=gtk.CellRendererProgress()
        tvc_progress=gtk.TreeViewColumn(None,prog,value=MODEL_COL_PROGRESS)
        ##gtk.CellRendererText
        self.tv.append_column(tvc_bitmap)
        self.tv.append_column(tvc_text)
        self.tv.append_column(tvc_progress)

        target_list=self.tv.drag_dest_get_target_list()
        target_list=gtk.target_list_add_uri_targets(target_list,0)
        self.tv.enable_model_drag_dest(target_list,
                                    gtk.gdk.ACTION_DEFAULT | gtk.gdk.ACTION_COPY)
#        self.tv.drag_dest_set(gtk.DEST_DEFAULT_ALL,
#                target_list,
#                gtk.gdk.ACTION_DEFAULT | gtk.gdk.ACTION_COPY | gtk.gdk.ACTION_MOVE)
        self.tv.connect("drag-data-received",self.drag_receive_signal)
        self.tv.add_events(gtk.gdk.BUTTON_MOTION_MASK)
        self.tv.connect("button-release-event",self.context_menu)

        scrolled_window = gtk.ScrolledWindow()
        scrolled_window.add(self.tv)
        scrolled_window.set_policy(gtk.POLICY_NEVER,gtk.POLICY_AUTOMATIC)
        self.pack_start(scrolled_window)
Пример #20
0
    def __init__(self, hover_cmds=()):
        '''
        init takes an optional list or tuple describing onmouseover shortcuts buttons
        '''
        gtk.HBox.__init__(self)
        self.hover_cmds = hover_cmds
        self.configure_geometry()
        self.lock = threading.Lock()

        #        self.active_view=active_view
        #        self.active_collection=active_collection

        self.neededitem = None

        self.mode = self.MODE_NORMAL

        self.pressed_ind = -1
        self.pressed_item = None
        self.last_selected_ind = -1
        self.last_selected = None
        self.button_press_block = False

        self.focal_item = None

        self.shift_state = False

        self.pixbuf_thumb_fail = gtk.gdk.Pixbuf(gtk.gdk.COLORSPACE_RGB, True,
                                                8, 128, 128)
        self.pixbuf_thumb_load = gtk.gdk.Pixbuf(gtk.gdk.COLORSPACE_RGB, True,
                                                8, 128, 128)
        self.pixbuf_thumb_fail.fill(0xC0000080)
        self.pixbuf_thumb_load.fill(0xFFFFFF20)

        self.geo_view_offset = 0
        self.offsetx = 0
        self.geo_ind_view_first = 0
        self.geo_ind_view_last = 1
        self.hover_ind = -1
        self.command_highlight_ind = -1
        self.command_highlight_bd = False

        self.imarea = gtk.DrawingArea()
        self.imarea.set_property("can-focus", True)
        self.imarea.set_size_request(160, 160)
        self.imarea.set_property("has-tooltip", True)
        self.imarea.connect("query-tooltip", self.drawable_tooltip_query)

        self.scrolladj = gtk.Adjustment()
        self.vscroll = gtk.VScrollbar(self.scrolladj)
        #        self.vscroll.set_property("has-tooltip",True)
        #        self.vscroll.connect("query-tooltip",self.scroll_tooltip_query)

        self.vbox = gtk.VBox()
        self.vbox.pack_start(self.imarea)
        self.vbox.show()

        self.bbox = gtk.HBox()
        self.bbox.pack_start(self.vbox)
        self.bbox.pack_start(self.vscroll, False)
        self.bbox.show()

        self.hpane = gtk.HPaned()
        self.hpane.add1(self.bbox)
        self.hpane.show()
        self.pack_start(self.hpane)

        self.imarea.connect("realize", self.realize_signal)
        self.imarea.connect("configure_event", self.configure_signal)
        self.imarea.connect("expose_event", self.expose_signal)

        self.mouse_hover = False
        self.imarea.add_events(gtk.gdk.POINTER_MOTION_MASK)
        self.imarea.connect("motion-notify-event", self.mouse_motion_signal)
        self.imarea.add_events(gtk.gdk.LEAVE_NOTIFY_MASK)
        self.imarea.connect("leave-notify-event", self.mouse_leave_signal)
        self.imarea.add_events(gtk.gdk.ENTER_NOTIFY_MASK)
        self.imarea.connect("enter-notify-event", self.mouse_enter_signal)

        self.scrolladj.connect("value-changed", self.scroll_signal)
        self.imarea.add_events(gtk.gdk.SCROLL_MASK)
        self.imarea.connect("scroll-event", self.scroll_signal_pane)
        self.imarea.add_events(gtk.gdk.BUTTON_PRESS_MASK)
        self.imarea.add_events(gtk.gdk.BUTTON_RELEASE_MASK)
        self.imarea.connect("button-press-event", self.button_press)
        self.imarea.connect("button-release-event", self.button_press)

        self.imarea.add_events(gtk.gdk.KEY_PRESS_MASK)
        self.imarea.add_events(gtk.gdk.KEY_RELEASE_MASK)
        self.imarea.connect("key-press-event", self.key_press_signal)
        self.imarea.connect("key-release-event", self.key_press_signal)

        target_list = [
            ('image-filename', gtk.TARGET_SAME_APP, self.TARGET_TYPE_IMAGE)
        ]  #("XdndDirectSave0", 0, self.TARGET_TYPE_XDS),
        target_list = gtk.target_list_add_uri_targets(
            target_list, self.TARGET_TYPE_URI_LIST)
        #        target_list=gtk.target_list_add_text_targets(target_list,self.TARGET_TYPE_URI_LIST)
        self.imarea.drag_source_set(gtk.gdk.BUTTON1_MASK, target_list,
                                    gtk.gdk.ACTION_COPY | gtk.gdk.ACTION_MOVE)

        target_list = [('tag-tree-row', gtk.TARGET_SAME_APP, 0)]
        target_list = gtk.target_list_add_uri_targets(target_list, 1)
        self.imarea.drag_dest_set(gtk.DEST_DEFAULT_ALL, target_list,
                                  gtk.gdk.ACTION_DEFAULT | gtk.gdk.ACTION_COPY)

        self.imarea.connect("drag-data-get", self.drag_get_signal)
        self.imarea.connect("drag-begin", self.drag_begin_signal)
        self.imarea.connect("drag-end", self.drag_end_signal)
        self.imarea.connect("drag-data-received", self.drag_receive_signal)
        self.imarea.connect("drag-motion", self.drag_motion_signal)
        self.imarea.connect("drag-leave", self.drag_leave_signal)
        #self.imarea.drag_source_set_icon_stock('browser-drag-icon')

        self.imarea.show()
        self.vscroll.show()
        self.imarea.grab_focus()
Пример #21
0
    def __init__(self,worker,toolbar,viewer_window,click_callback=None,key_press_callback=None):
        gtk.VBox.__init__(self)
        self.toolbar=toolbar
        self.viewer_window = viewer_window
        self.il=ImageLoader(self)
        self.imarea=overlay_widgets.DrawableOverlayHover()
        self.imarea.add_with_bg(toolbar,0,1,0,None)
        self.imarea.connect("draw",self.draw)

        self.imarea.set_property("can-focus",True)
        self.worker=worker
        self.plugin_controller=None
        self.mouse_hover=False
        self.mouse_hover_pos=None
        self.command_highlight_ind=-1
        self.command_highlight_bd=False
        self.zoom_level='fit'
        self.zoom_position=(0,0) #either center or a tuple of left/top coordinates
        self.zoom_position_request=None

        self.freeze_image_refresh=False
        self.change_block=False

        self.vscrolladj=gtk.Adjustment()
        self.hscrolladj=gtk.Adjustment()
        self.vscroll=gtk.VScrollbar(self.vscrolladj)
        self.hscroll=gtk.HScrollbar(self.hscrolladj)
        self.vscrolladj.connect("value-changed",self.scroll_signal,True)
        self.hscrolladj.connect("value-changed",self.scroll_signal,False)
        self.imarea.add_events(gtk.gdk.SCROLL_MASK)
        self.imarea.connect("scroll-event",self.scroll_signal_pane)
        self.scroll_inc = 15

        self.imarea.show_all()

        self.image_box = gtk.VBox()
        self.image_box.pack_start(self.imarea)
        self.image_box.show()

        #Add scrollbars
        self.image_table=gtk.Table(rows=2,columns=2,homogeneous=False) ##plugins can add widgets to the box
        self.image_table.attach(self.image_box, 0, 1, 0, 1,
                       xoptions=gtk.EXPAND|gtk.FILL, yoptions=gtk.EXPAND|gtk.FILL, xpadding=0, ypadding=0)
        self.image_table.attach(self.vscroll, 1, 2, 0, 1,
                       xoptions=0, yoptions=gtk.EXPAND|gtk.FILL, xpadding=0, ypadding=0)
        self.image_table.attach(self.hscroll, 0, 1, 1, 2,
                       xoptions=gtk.EXPAND|gtk.FILL, yoptions=0, xpadding=0, ypadding=0)
        self.image_table.show()


        self.vpane=gtk.VPaned()
        self.vpane.add1(self.image_table) ##plugins can add widgets with add2
        self.pack_start(self.vpane)
        self.vpane.show()

        #self.imarea.add_events(gtk.gdk.EXPOSURE_MASK)
        self.conf_id=self.imarea.connect("size-allocate",self.size_signal)
        #self.imarea.connect("realize",self.realize_signal)
        self.connect("destroy", self._destroy)
        #self.imarea.add_events(gtk.gdk.SCROLL_MASK)
        #self.imarea.add_events(gtk.gdk.BUTTON_MOTION_MASK)
        self.imarea.add_events(gtk.gdk.BUTTON_PRESS_MASK)
        self.imarea.add_events(gtk.gdk.BUTTON_RELEASE_MASK)
        self.imarea.connect("button-press-event",self.button_press)
        self.imarea.connect("button-release-event",self.button_press)

        self.imarea.add_events(gtk.gdk.KEY_PRESS_MASK)
        self.imarea.add_events(gtk.gdk.KEY_RELEASE_MASK)

        self.imarea.add_events(gtk.gdk.POINTER_MOTION_MASK)
        self.imarea.connect("motion-notify-event",self.mouse_motion_signal)
        #self.imarea.add_events(gtk.gdk.ENTER_NOTIFY_MASK)
        #self.imarea.connect("enter-notify-event",self.mouse_enter_signal)
        self.imarea.add_events(gtk.gdk.LEAVE_NOTIFY_MASK)
        self.imarea.connect("leave-notify-event",self.mouse_leave_signal)

        self.target_list=[('image-filename', gtk.TARGET_SAME_APP, self.TARGET_TYPE_IMAGE)] #("XdndDirectSave0", 0, self.TARGET_TYPE_XDS),
        self.target_list=gtk.target_list_add_uri_targets(self.target_list,self.TARGET_TYPE_URI_LIST)
        #target_list=gtk.target_list_add_text_targets(target_list,self.TARGET_TYPE_URI_LIST)
        self.imarea.drag_source_set(gtk.gdk.BUTTON1_MASK,
                  self.target_list,gtk.gdk.ACTION_COPY)#| gtk.gdk.ACTION_MOVE)

##        target_list=[('tag-tree-row', gtk.TARGET_SAME_APP, 0)]
##        target_list=gtk.target_list_add_uri_targets(target_list,1)
##        self.imarea.drag_dest_set(gtk.DEST_DEFAULT_ALL,
##                target_list,
##                gtk.gdk.ACTION_DEFAULT | gtk.gdk.ACTION_COPY)

        self.imarea.connect("drag-data-get",self.drag_get_signal)
##        self.imarea.connect("drag-begin", self.drag_begin_signal) ##not needed when using drag_source_set
##        self.imarea.connect("drag-end",self.drag_end_signal)
##        self.imarea.connect("drag-data-received",self.drag_receive_signal)
        self.imarea.connect("drag-motion",self.drag_motion_signal)
        self.imarea.connect("drag-leave",self.drag_leave_signal)
        #self.imarea.drag_source_set_icon_stock('browser-drag-icon')


        if click_callback:
            self.imarea.connect_after("button-press-event",click_callback)
        if key_press_callback:
            self.imarea.connect("key-press-event",key_press_callback)
            self.imarea.connect("key-release-event",key_press_callback)

        pluginmanager.mgr.register_callback('t_collection_item_metadata_changed',self.meta_changed)

#        self.imarea.set_size_request(128,96)
        self.item=None
        self.browser=None
        self.last_sizing = None
        self.freeze_image_refresh = False
        self.freeze_image_resize = False
        self.fullscreen = False
Пример #22
0
	# According to docs we should provide list as arg to this function,
	# but seems docs are not correct
IMAGE_TARGET_NAMES = tuple([target[0] for target in IMAGE_TARGETS])

# Add image format names as well, seen these being used by MS Office
for format in gtk.gdk.pixbuf_get_formats():
	if format['mime_types'][0] in IMAGE_TARGET_NAMES:
		for n in (format['name'], format['name'].upper()):
			IMAGE_TARGET_NAMES += (n,)
			IMAGE_TARGETS += ((n, 0, IMAGE_TARGET_ID),)

#~ print IMAGE_TARGETS
#~ print IMAGE_TARGET_NAMES

URI_TARGET_ID = 7
URI_TARGETS = tuple(gtk.target_list_add_uri_targets(info=URI_TARGET_ID))
	# According to docs we should provide list as arg to this function,
	# but seems docs are not correct
URI_TARGET_NAMES = tuple([target[0] for target in URI_TARGETS])

HTML_TARGET_ID = 8
HTML_TARGET_NAMES = ('text/html', 'HTML Format')
	# "HTML Format" is from MS Word
HTML_TARGETS = tuple([(name, 0, HTML_TARGET_ID) for name in HTML_TARGET_NAMES])

TEXT_TARGET_ID = 9
TEXT_TARGETS = tuple(gtk.target_list_add_text_targets(info=TEXT_TARGET_ID))
	# According to docs we should provide list as arg to this function,
	# but seems docs are not correct
TEXT_TARGET_NAMES = tuple([target[0] for target in TEXT_TARGETS])
Пример #23
0
 def find_uri_target(self, context):
         lst = gtk.target_list_add_uri_targets((), 0)
         
         return self.view.drag_dest_find_target(context, lst)
    def find_uri_target(self, context):
        lst = gtk.target_list_add_uri_targets((), 0)

        return self.view.drag_dest_find_target(context, lst)
Пример #25
0
        i.connect('activate', lambda m, v, *a, **k: v.zoom_in(), view)
        menu.append(i)
        i = gtk.ImageMenuItem(gtk.STOCK_ZOOM_OUT)
        i.connect('activate', lambda m, v, **k: v.zoom_out(), view)
        menu.append(i)
        i = gtk.ImageMenuItem(gtk.STOCK_ZOOM_100)
        i.connect(
            'activate', lambda m, v, *a, **k: v.get_zoom_level() == 1.0 or v.
            set_zoom_level(1.0), view)
        menu.append(i)

        menu.show_all()
        return False


targets_l = gtk.target_list_add_uri_targets()


class ThImportWindow(gtk.Window):
    def __init__(self, main):
        gtk.Window.__init__(self)
        self.progress_dict = {}
        self.progress_phase = 0
        self.progress_books_in_file = 0
        self.progress_element = 0
        self.add_dlg = None
        self.drag_dest_set(gtk.DEST_DEFAULT_ALL, targets_l, (1 << 5) - 1)
        self.connect('drag-data-received', self.drop_data_cb)
        self.set_title(_('Import Shamela .bok files'))
        self.set_type_hint(gtk.gdk.WINDOW_TYPE_HINT_DIALOG)
        self.set_modal(True)
Пример #26
0
  def populate_popup(self, view, menu):
    menu.append(gtk.SeparatorMenuItem())
    i = gtk.ImageMenuItem(gtk.STOCK_ZOOM_IN)
    i.connect('activate', lambda m,v,*a,**k: v.zoom_in(), view)
    menu.append(i)
    i = gtk.ImageMenuItem(gtk.STOCK_ZOOM_OUT)
    i.connect('activate', lambda m,v,**k: v.zoom_out(), view)
    menu.append(i)
    i = gtk.ImageMenuItem(gtk.STOCK_ZOOM_100)
    i.connect('activate', lambda m,v,*a,**k: v.get_zoom_level() == 1.0 or v.set_zoom_level(1.0), view)
    menu.append(i)

    menu.show_all()
    return False

targets_l=gtk.target_list_add_uri_targets()

class ThImportWindow(gtk.Window):
  def __init__(self, main):
    gtk.Window.__init__(self)
    self.progress_dict = { }
    self.progress_phase = 0
    self.progress_books_in_file = 0
    self.progress_element = 0
    self.add_dlg = None
    self.drag_dest_set(gtk.DEST_DEFAULT_ALL,targets_l,(1<<5)-1)
    self.connect('drag-data-received', self.drop_data_cb)
    self.set_title(_('Import Shamela .bok files'))
    self.set_type_hint(gtk.gdk.WINDOW_TYPE_HINT_DIALOG)
    self.set_modal(True)
    self.set_transient_for(main)
Пример #27
0
	# According to docs we should provide list as arg to this function,
	# but seems docs are not correct
IMAGE_TARGET_NAMES = tuple([target[0] for target in IMAGE_TARGETS])

# Add image format names as well, seen these being used by MS Office
for format in gtk.gdk.pixbuf_get_formats():
	if format['mime_types'][0] in IMAGE_TARGET_NAMES:
		for n in (format['name'], format['name'].upper()):
			IMAGE_TARGET_NAMES += (n,)
			IMAGE_TARGETS += ((n, 0, IMAGE_TARGET_ID),)

#~ print IMAGE_TARGETS
#~ print IMAGE_TARGET_NAMES

URI_TARGET_ID = 7
URI_TARGETS = tuple(gtk.target_list_add_uri_targets(info=URI_TARGET_ID))
	# According to docs we should provide list as arg to this function,
	# but seems docs are not correct
URI_TARGET_NAMES = tuple([target[0] for target in URI_TARGETS])

HTML_TARGET_ID = 8
HTML_TARGET_NAMES = ('text/html', 'HTML Format')
	# "HTML Format" is from MS Word
HTML_TARGETS = tuple([(name, 0, HTML_TARGET_ID) for name in HTML_TARGET_NAMES])

TEXT_TARGET_ID = 9
TEXT_TARGETS = tuple(gtk.target_list_add_text_targets(info=TEXT_TARGET_ID))
	# According to docs we should provide list as arg to this function,
	# but seems docs are not correct
TEXT_TARGET_NAMES = tuple([target[0] for target in TEXT_TARGETS])
Пример #28
0
    def __init__(self,
                 worker,
                 toolbar,
                 viewer_window,
                 click_callback=None,
                 key_press_callback=None):
        gtk.VBox.__init__(self)
        self.toolbar = toolbar
        self.viewer_window = viewer_window
        self.il = ImageLoader(self)
        self.imarea = overlay_widgets.DrawableOverlayHover()
        self.imarea.add_with_bg(toolbar, 0, 1, 0, None)
        self.imarea.connect("draw", self.draw)

        self.imarea.set_property("can-focus", True)
        self.worker = worker
        self.plugin_controller = None
        self.mouse_hover = False
        self.mouse_hover_pos = None
        self.command_highlight_ind = -1
        self.command_highlight_bd = False
        self.zoom_level = 'fit'
        self.zoom_position = (
            0, 0)  #either center or a tuple of left/top coordinates
        self.zoom_position_request = None

        self.freeze_image_refresh = False
        self.change_block = False

        self.vscrolladj = gtk.Adjustment()
        self.hscrolladj = gtk.Adjustment()
        self.vscroll = gtk.VScrollbar(self.vscrolladj)
        self.hscroll = gtk.HScrollbar(self.hscrolladj)
        self.vscrolladj.connect("value-changed", self.scroll_signal, True)
        self.hscrolladj.connect("value-changed", self.scroll_signal, False)
        self.imarea.add_events(gtk.gdk.SCROLL_MASK)
        self.imarea.connect("scroll-event", self.scroll_signal_pane)
        self.scroll_inc = 15

        self.imarea.show_all()

        self.image_box = gtk.VBox()
        self.image_box.pack_start(self.imarea)
        self.image_box.show()

        #Add scrollbars
        self.image_table = gtk.Table(
            rows=2, columns=2,
            homogeneous=False)  ##plugins can add widgets to the box
        self.image_table.attach(self.image_box,
                                0,
                                1,
                                0,
                                1,
                                xoptions=gtk.EXPAND | gtk.FILL,
                                yoptions=gtk.EXPAND | gtk.FILL,
                                xpadding=0,
                                ypadding=0)
        self.image_table.attach(self.vscroll,
                                1,
                                2,
                                0,
                                1,
                                xoptions=0,
                                yoptions=gtk.EXPAND | gtk.FILL,
                                xpadding=0,
                                ypadding=0)
        self.image_table.attach(self.hscroll,
                                0,
                                1,
                                1,
                                2,
                                xoptions=gtk.EXPAND | gtk.FILL,
                                yoptions=0,
                                xpadding=0,
                                ypadding=0)
        self.image_table.show()

        self.vpane = gtk.VPaned()
        self.vpane.add1(self.image_table)  ##plugins can add widgets with add2
        self.pack_start(self.vpane)
        self.vpane.show()

        #self.imarea.add_events(gtk.gdk.EXPOSURE_MASK)
        self.conf_id = self.imarea.connect("size-allocate", self.size_signal)
        #self.imarea.connect("realize",self.realize_signal)
        self.connect("destroy", self._destroy)
        #self.imarea.add_events(gtk.gdk.SCROLL_MASK)
        #self.imarea.add_events(gtk.gdk.BUTTON_MOTION_MASK)
        self.imarea.add_events(gtk.gdk.BUTTON_PRESS_MASK)
        self.imarea.add_events(gtk.gdk.BUTTON_RELEASE_MASK)
        self.imarea.connect("button-press-event", self.button_press)
        self.imarea.connect("button-release-event", self.button_press)

        self.imarea.add_events(gtk.gdk.KEY_PRESS_MASK)
        self.imarea.add_events(gtk.gdk.KEY_RELEASE_MASK)

        self.imarea.add_events(gtk.gdk.POINTER_MOTION_MASK)
        self.imarea.connect("motion-notify-event", self.mouse_motion_signal)
        #self.imarea.add_events(gtk.gdk.ENTER_NOTIFY_MASK)
        #self.imarea.connect("enter-notify-event",self.mouse_enter_signal)
        self.imarea.add_events(gtk.gdk.LEAVE_NOTIFY_MASK)
        self.imarea.connect("leave-notify-event", self.mouse_leave_signal)

        self.target_list = [
            ('image-filename', gtk.TARGET_SAME_APP, self.TARGET_TYPE_IMAGE)
        ]  #("XdndDirectSave0", 0, self.TARGET_TYPE_XDS),
        self.target_list = gtk.target_list_add_uri_targets(
            self.target_list, self.TARGET_TYPE_URI_LIST)
        #target_list=gtk.target_list_add_text_targets(target_list,self.TARGET_TYPE_URI_LIST)
        self.imarea.drag_source_set(
            gtk.gdk.BUTTON1_MASK, self.target_list,
            gtk.gdk.ACTION_COPY)  #| gtk.gdk.ACTION_MOVE)

        ##        target_list=[('tag-tree-row', gtk.TARGET_SAME_APP, 0)]
        ##        target_list=gtk.target_list_add_uri_targets(target_list,1)
        ##        self.imarea.drag_dest_set(gtk.DEST_DEFAULT_ALL,
        ##                target_list,
        ##                gtk.gdk.ACTION_DEFAULT | gtk.gdk.ACTION_COPY)

        self.imarea.connect("drag-data-get", self.drag_get_signal)
        ##        self.imarea.connect("drag-begin", self.drag_begin_signal) ##not needed when using drag_source_set
        ##        self.imarea.connect("drag-end",self.drag_end_signal)
        ##        self.imarea.connect("drag-data-received",self.drag_receive_signal)
        self.imarea.connect("drag-motion", self.drag_motion_signal)
        self.imarea.connect("drag-leave", self.drag_leave_signal)
        #self.imarea.drag_source_set_icon_stock('browser-drag-icon')

        if click_callback:
            self.imarea.connect_after("button-press-event", click_callback)
        if key_press_callback:
            self.imarea.connect("key-press-event", key_press_callback)
            self.imarea.connect("key-release-event", key_press_callback)

        pluginmanager.mgr.register_callback(
            't_collection_item_metadata_changed', self.meta_changed)

        #        self.imarea.set_size_request(128,96)
        self.item = None
        self.browser = None
        self.last_sizing = None
        self.freeze_image_refresh = False
        self.freeze_image_resize = False
        self.fullscreen = False
Пример #29
0
    def __init__(self, snapshots, glade):
        self.snapshots = snapshots
        self.config = snapshots.config
        self.glade = glade

        self.path = None
        self.icon_name = None

        self.dialog = self.glade.get_widget('SnapshotsDialog')

        signals = {
            'on_list_snapshots_cursor_changed':
            self.on_list_snapshots_cursor_changed,
            'on_list_snapshots_row_activated':
            self.on_list_snapshots_row_activated,
            'on_list_snapshots_popup_menu': self.on_list_snapshots_popup_menu,
            'on_list_snapshots_button_press_event':
            self.on_list_snapshots_button_press_event,
            'on_list_snapshots_drag_data_get':
            self.on_list_snapshots_drag_data_get,
            'on_btn_diff_with_clicked': self.on_btn_diff_with_clicked,
            'on_btn_copy_snapshot_clicked': self.on_btn_copy_snapshot_clicked,
            'on_btn_restore_snapshot_clicked':
            self.on_btn_restore_snapshot_clicked
        }

        #path
        self.edit_path = self.glade.get_widget('edit_path')

        #diff
        self.edit_diff_cmd = self.glade.get_widget('edit_diff_cmd')
        self.edit_diff_cmd_params = self.glade.get_widget(
            'edit_diff_cmd_params')

        diff_cmd = self.config.get_str_value('gnome.diff.cmd', 'meld')
        diff_cmd_params = self.config.get_str_value('gnome.diff.params',
                                                    '%1 %2')

        self.edit_diff_cmd.set_text(diff_cmd)
        self.edit_diff_cmd_params.set_text(diff_cmd_params)

        #setup backup folders
        self.list_snapshots = self.glade.get_widget('list_snapshots')
        self.list_snapshots.drag_source_set(
            gtk.gdk.BUTTON1_MASK | gtk.gdk.BUTTON3_MASK,
            gtk.target_list_add_uri_targets(), gtk.gdk.ACTION_COPY)

        self.glade.signal_autoconnect(signals)

        text_renderer = gtk.CellRendererText()
        column = gtk.TreeViewColumn(_('Snapshots'))
        column.pack_end(text_renderer, True)
        column.add_attribute(text_renderer, 'markup', 0)
        column.set_sort_column_id(0)
        self.list_snapshots.append_column(column)

        #display name, snapshot_id
        self.store_snapshots = gtk.ListStore(str, str)
        self.list_snapshots.set_model(self.store_snapshots)

        self.store_snapshots.set_sort_column_id(0, gtk.SORT_DESCENDING)

        #setup diff with combo
        self.combo_diff_with = self.glade.get_widget('combo_diff_with')
        text_renderer = gtk.CellRendererText()
        self.combo_diff_with.pack_start(text_renderer, True)
        self.combo_diff_with.add_attribute(text_renderer, 'markup', 0)
        self.combo_diff_with.set_model(
            self.store_snapshots)  #use the same store
Пример #30
0
    def __init__(self,hover_cmds=()):
        '''
        init takes an optional list or tuple describing onmouseover shortcuts buttons
        '''
        gtk.HBox.__init__(self)
        self.hover_cmds=hover_cmds
        self.configure_geometry()
        self.lock=threading.Lock()

#        self.active_view=active_view
#        self.active_collection=active_collection

        self.neededitem=None

        self.mode=self.MODE_NORMAL

        self.pressed_ind=-1
        self.pressed_item=None
        self.last_selected_ind=-1
        self.last_selected=None
        self.button_press_block=False

        self.focal_item=None

        self.shift_state=False

        self.pixbuf_thumb_fail=gtk.gdk.Pixbuf(gtk.gdk.COLORSPACE_RGB,True,8,128,128)
        self.pixbuf_thumb_load=gtk.gdk.Pixbuf(gtk.gdk.COLORSPACE_RGB,True,8,128,128)
        self.pixbuf_thumb_fail.fill(0xC0000080)
        self.pixbuf_thumb_load.fill(0xFFFFFF20)

        self.geo_view_offset=0
        self.offsetx=0
        self.geo_ind_view_first=0
        self.geo_ind_view_last=1
        self.hover_ind=-1
        self.command_highlight_ind=-1
        self.command_highlight_bd=False

        self.imarea=gtk.DrawingArea()
        self.imarea.set_property("can-focus",True)
        self.imarea.set_size_request(160,160)
        self.imarea.set_property("has-tooltip",True)
        self.imarea.connect("query-tooltip",self.drawable_tooltip_query)

        self.scrolladj=gtk.Adjustment()
        self.vscroll=gtk.VScrollbar(self.scrolladj)
#        self.vscroll.set_property("has-tooltip",True)
#        self.vscroll.connect("query-tooltip",self.scroll_tooltip_query)

        self.vbox=gtk.VBox()
        self.vbox.pack_start(self.imarea)
        self.vbox.show()

        self.bbox=gtk.HBox()
        self.bbox.pack_start(self.vbox)
        self.bbox.pack_start(self.vscroll,False)
        self.bbox.show()

        self.hpane=gtk.HPaned()
        self.hpane.add1(self.bbox)
        self.hpane.show()
        self.pack_start(self.hpane)

        self.imarea.connect("realize",self.realize_signal)
        self.imarea.connect("configure_event",self.configure_signal)
        self.imarea.connect("expose_event",self.expose_signal)

        self.mouse_hover=False
        self.imarea.add_events(gtk.gdk.POINTER_MOTION_MASK)
        self.imarea.connect("motion-notify-event",self.mouse_motion_signal)
        self.imarea.add_events(gtk.gdk.LEAVE_NOTIFY_MASK)
        self.imarea.connect("leave-notify-event",self.mouse_leave_signal)
        self.imarea.add_events(gtk.gdk.ENTER_NOTIFY_MASK)
        self.imarea.connect("enter-notify-event",self.mouse_enter_signal)

        self.scrolladj.connect("value-changed",self.scroll_signal)
        self.imarea.add_events(gtk.gdk.SCROLL_MASK)
        self.imarea.connect("scroll-event",self.scroll_signal_pane)
        self.imarea.add_events(gtk.gdk.BUTTON_PRESS_MASK)
        self.imarea.add_events(gtk.gdk.BUTTON_RELEASE_MASK)
        self.imarea.connect("button-press-event",self.button_press)
        self.imarea.connect("button-release-event",self.button_press)

        self.imarea.add_events(gtk.gdk.KEY_PRESS_MASK)
        self.imarea.add_events(gtk.gdk.KEY_RELEASE_MASK)
        self.imarea.connect("key-press-event",self.key_press_signal)
        self.imarea.connect("key-release-event",self.key_press_signal)

        target_list=[('image-filename', gtk.TARGET_SAME_APP, self.TARGET_TYPE_IMAGE)] #("XdndDirectSave0", 0, self.TARGET_TYPE_XDS),
        target_list=gtk.target_list_add_uri_targets(target_list,self.TARGET_TYPE_URI_LIST)
#        target_list=gtk.target_list_add_text_targets(target_list,self.TARGET_TYPE_URI_LIST)
        self.imarea.drag_source_set(gtk.gdk.BUTTON1_MASK,
                  target_list,gtk.gdk.ACTION_COPY| gtk.gdk.ACTION_MOVE)

        target_list=[('tag-tree-row', gtk.TARGET_SAME_APP, 0)]
        target_list=gtk.target_list_add_uri_targets(target_list,1)
        self.imarea.drag_dest_set(gtk.DEST_DEFAULT_ALL,
                target_list,
                gtk.gdk.ACTION_DEFAULT | gtk.gdk.ACTION_COPY)

        self.imarea.connect("drag-data-get",self.drag_get_signal)
        self.imarea.connect("drag-begin", self.drag_begin_signal)
        self.imarea.connect("drag-end",self.drag_end_signal)
        self.imarea.connect("drag-data-received",self.drag_receive_signal)
        self.imarea.connect("drag-motion",self.drag_motion_signal)
        self.imarea.connect("drag-leave",self.drag_leave_signal)
        #self.imarea.drag_source_set_icon_stock('browser-drag-icon')

        self.imarea.show()
        self.vscroll.show()
        self.imarea.grab_focus()
Пример #31
0
    def update_folder_view(
            self,
            changed_from,
            selected_file=None,
            show_snapshots=False):  #0 - places, 1 - folder view, 2 - time_line
        #update backup time
        if 2 == changed_from:
            iter = self.list_time_line.get_selection().get_selected()[1]
            self.snapshot_id = self.store_time_line.get_value(iter, 1)
            #self.lblTime.set_markup( "<b>%s</b>" % backupTime )

        tooltip = ''
        text = ''
        if len(self.snapshot_id) > 1:
            name = self.snapshots.get_snapshot_display_id(self.snapshot_id)
            text = _('Snapshot: %s') % name
            tooltip = _('View the snapshot made at %s') % name
        else:
            tooltip = _('View the current disk content')
            text = _('Now')

        self.lbl_snapshot.set_markup(' <b>' + text + '</b> ')
        self.lbl_snapshot.set_tooltip_text(tooltip)

        #update selected places item
        if 1 == changed_from:
            iter = self.store_places.get_iter_first()
            while not iter is None:
                place_path = self.store_places.get_value(iter, 1)
                if place_path == self.folder_path:
                    break
                iter = self.store_places.iter_next(iter)

            if iter is None:
                self.list_places.get_selection().unselect_all()
            else:
                self.list_places.get_selection().select_iter(iter)

        #update folder view

        full_path = self.snapshots.get_snapshot_path_to(
            self.snapshot_id, self.folder_path)
        all_files = []
        files = []
        folder_exists = os.path.isdir(full_path)

        if folder_exists:
            try:
                all_files = os.listdir(full_path)
                all_files.sort()
            except:
                pass

            files = []
            for file in all_files:
                if len(file) == 0:
                    continue

                if not self.show_hidden_files:
                    if file[0] == '.':
                        continue
                    if file[-1] == '~':
                        continue

                path = os.path.join(full_path, file)

                file_size = -1
                file_date = -1

                try:
                    file_stat = os.stat(path)
                    file_size = file_stat[stat.ST_SIZE]
                    file_date = file_stat[stat.ST_MTIME]
                except:
                    pass

                #format size
                file_size_int = file_size
                if file_size_int < 0:
                    file_size_int = 0

                if file_size < 0:
                    file_size = 'unknown'
                elif file_size < 1024:
                    file_size = str(file_size) + ' bytes'
                elif file_size < 1024 * 1024:
                    file_size = file_size / 1024
                    file_size = str(file_size) + ' KB'
                elif file_size < 1024 * 1024 * 1024:
                    file_size = file_size / (1024 * 1024)
                    file_size = str(file_size) + ' MB'
                else:
                    file_size = file_size / (1024 * 1024 * 1024)
                    file_size = str(file_size) + ' GB'

                #format date
                if file_date < 0:
                    file_date = 'unknown'
                else:
                    file_date = datetime.datetime.fromtimestamp(
                        file_date).isoformat(' ')

                if os.path.isdir(path):
                    files.append([
                        file, file_size, file_date,
                        self.icon_names.get_icon(path), file_size_int, 0
                    ])
                else:
                    files.append([
                        file, file_size, file_date,
                        self.icon_names.get_icon(path), file_size_int, 1
                    ])

            #try to keep old selected file
            if selected_file is None:
                selected_file = ''
                iter = self.list_folder_view.get_selection().get_selected()[1]
                if not iter is None:
                    selected_file = self.store_folder_view.get_value(iter, 1)

            self.list_folder_view_widget.show()
            self.list_folder_view_shadow.hide()
        else:
            self.list_folder_view_widget.hide()
            self.list_folder_view_shadow.show()

        #populate the list
        self.store_folder_view.clear()

        selected_iter = None
        for item in files:
            rel_path = os.path.join(self.folder_path, item[0])
            new_iter = self.store_folder_view.append([
                item[0], rel_path, item[3], item[5], item[1], item[2], item[4]
            ])
            if selected_file == rel_path:
                selected_iter = new_iter

        #select old item or the first item
        if len(files) > 0:
            if selected_iter is None:
                selected_iter = self.store_folder_view.get_iter_first()
            self.list_folder_view.get_selection().select_iter(selected_iter)
            self.list_folder_view.drag_source_set(
                gtk.gdk.BUTTON1_MASK | gtk.gdk.BUTTON3_MASK,
                gtk.target_list_add_uri_targets(), gtk.gdk.ACTION_COPY)
        else:
            self.list_folder_view.drag_source_unset()

        #update folderup button state
        self.glade.get_widget('btn_folder_up').set_sensitive(
            len(self.folder_path) > 1)

        #update restore button state
        self.glade.get_widget('btn_restore').set_sensitive(
            len(self.snapshot_id) > 1 and len(self.store_folder_view) > 0)

        #update remove/name snapshot buttons
        self.glade.get_widget('btn_snapshot_name').set_sensitive(
            len(self.snapshot_id) > 1)
        self.glade.get_widget('btn_remove_snapshot').set_sensitive(
            len(self.snapshot_id) > 1)

        #update copy button state
        self.glade.get_widget('btn_copy').set_sensitive(
            len(self.store_folder_view) > 0)

        #update snapshots button state
        self.glade.get_widget('btn_snapshots').set_sensitive(
            len(self.store_folder_view) > 0)

        #display current folder
        self.glade.get_widget('edit_current_path').set_text(self.folder_path)

        #show snapshots
        if show_snapshots:
            self.on_btn_snapshots_clicked(None)
Пример #32
0
"""
Defines the data item FileItem, TextItem; each representing
one piece of shelf data.
"""

FILE_TYPE = "file"
TEXT_TYPE = "text"
DATA_TYPE = "data"

TARGET_TYPE_TEXT = 80
TARGET_TYPE_URI_LIST = 81

from gtk import target_list_add_text_targets, target_list_add_uri_targets
text_targets = target_list_add_text_targets([], TARGET_TYPE_TEXT)
file_targets = target_list_add_uri_targets([], TARGET_TYPE_URI_LIST)

def make_item(obj, type):
	if type == FILE_TYPE:
		item = FileItem(obj)
	else:
		item = TextItem(obj)
	return item

class Item (object):
	maxtiplen = 512
	def __init__(self, obj, type):
		self.object = obj
		self.type = type
	
	def get_type(self):
	def update_folder_view( self, changed_from, selected_file = None, show_snapshots = False ): #0 - places, 1 - folder view, 2 - time_line
		#update backup time
		if 2 == changed_from:
			iter = self.list_time_line.get_selection().get_selected()[1]
			self.snapshot_id = self.store_time_line.get_value( iter, 1 )
			#self.lblTime.set_markup( "<b>%s</b>" % backupTime )

		tooltip = ''
		text = ''
		if len( self.snapshot_id ) > 1:
			name = self.snapshots.get_snapshot_display_id( self.snapshot_id )
			text = _('Snapshot: %s') % name
			tooltip = _('View the snapshot made at %s') % name
		else:
			tooltip = _('View the current disk content')
			text = _('Now')

		self.lbl_snapshot.set_markup( ' <b>' + text + '</b> ' )
		self.lbl_snapshot.set_tooltip_text( tooltip )

		#update selected places item
		if 1 == changed_from:
			iter = self.store_places.get_iter_first()
			while not iter is None:
				place_path = self.store_places.get_value( iter, 1 )
				if place_path == self.folder_path:
					break
				iter = self.store_places.iter_next( iter )

			if iter is None:
				self.list_places.get_selection().unselect_all()
			else:
				self.list_places.get_selection().select_iter( iter )

		#update folder view
		
		full_path = self.snapshots.get_snapshot_path_to( self.snapshot_id, self.folder_path )
		all_files = []
		files = []
		folder_exists = os.path.isdir( full_path )

		if folder_exists:
			try:
				all_files = os.listdir( full_path )
				all_files.sort()
			except:
				pass

			files = []
			for file in all_files:
				if len( file ) == 0:
					continue

				if not self.show_hidden_files:
					if file[ 0 ] == '.':
						continue
					if file[ -1 ] == '~':
						continue

				path = os.path.join( full_path, file )

				file_size = -1
				file_date = -1

				try:
					file_stat = os.stat( path )
					file_size = file_stat[stat.ST_SIZE]
					file_date = file_stat[stat.ST_MTIME]
				except:
					pass

				#format size
				file_size_int = file_size
				if file_size_int < 0:
					file_size_int = 0

				if file_size < 0:
					file_size = 'unknown'
				elif file_size < 1024:
					file_size = str( file_size ) + ' bytes'
				elif file_size < 1024 * 1024:
					file_size = file_size / 1024
					file_size = str( file_size ) + ' KB'
				elif file_size < 1024 * 1024 * 1024:
					file_size = file_size / ( 1024 * 1024 )
					file_size = str( file_size ) + ' MB'
				else:
					file_size = file_size / ( 1024 * 1024 * 1024 )
					file_size = str( file_size ) + ' GB'

				#format date
				if file_date < 0:
					file_date = 'unknown'
				else:
					file_date = datetime.datetime.fromtimestamp(file_date).isoformat(' ')

				if os.path.isdir( path ):
					files.append( [ file, file_size, file_date, self.icon_names.get_icon(path), file_size_int, 0 ] )
				else:
					files.append( [ file, file_size, file_date, self.icon_names.get_icon(path), file_size_int, 1 ] )

			#try to keep old selected file
			if selected_file is None:
				selected_file = ''
				iter = self.list_folder_view.get_selection().get_selected()[1]
				if not iter is None:
					selected_file = self.store_folder_view.get_value( iter, 1 )

			self.list_folder_view_widget.show()
			self.list_folder_view_shadow.hide()
		else:
			self.list_folder_view_widget.hide()
			self.list_folder_view_shadow.show()

		#populate the list
		self.store_folder_view.clear()

		selected_iter = None
		for item in files:
			rel_path = os.path.join( self.folder_path, item[0] )
			new_iter = self.store_folder_view.append( [ item[0], rel_path, item[3], item[5], item[1], item[2], item[4] ] )
			if selected_file == rel_path:
				selected_iter = new_iter 

		#select old item or the first item
		if len( files ) > 0:
			if selected_iter is None:
				selected_iter = self.store_folder_view.get_iter_first()
			self.list_folder_view.get_selection().select_iter( selected_iter )
			self.list_folder_view.drag_source_set( gtk.gdk.BUTTON1_MASK | gtk.gdk.BUTTON3_MASK, gtk.target_list_add_uri_targets(), gtk.gdk.ACTION_COPY )
		else:
			self.list_folder_view.drag_source_unset()

		#update folderup button state
		self.glade.get_widget( 'btn_folder_up' ).set_sensitive( len( self.folder_path ) > 1 )

		#update restore button state
		self.glade.get_widget( 'btn_restore' ).set_sensitive( len( self.snapshot_id ) > 1 and len( self.store_folder_view ) > 0 )

		#update remove/name snapshot buttons
		self.glade.get_widget( 'btn_snapshot_name' ).set_sensitive( len( self.snapshot_id ) > 1 )
		self.glade.get_widget( 'btn_remove_snapshot' ).set_sensitive( len( self.snapshot_id ) > 1 )

		#update copy button state
		self.glade.get_widget( 'btn_copy' ).set_sensitive( len( self.store_folder_view ) > 0 )

		#update snapshots button state
		self.glade.get_widget( 'btn_snapshots' ).set_sensitive( len( self.store_folder_view ) > 0 )

		#display current folder
		self.glade.get_widget( 'edit_current_path' ).set_text( self.folder_path )

		#show snapshots
		if show_snapshots:
			self.on_btn_snapshots_clicked( None )