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): 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 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 ()
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()
# paste to other widgets and to other application instances PARSETREE_TARGET_ID = 1 PARSETREE_TARGET_NAME = 'text/x-zim-parsetree' PARSETREE_TARGET = (PARSETREE_TARGET_NAME, 0, PARSETREE_TARGET_ID) INTERNAL_PAGELIST_TARGET_ID = 2 INTERNAL_PAGELIST_TARGET_NAME = 'text/x-zim-page-list-internal' INTERNAL_PAGELIST_TARGET = \ (INTERNAL_PAGELIST_TARGET_NAME, gtk.TARGET_SAME_APP, INTERNAL_PAGELIST_TARGET_ID) PAGELIST_TARGET_ID = 3 PAGELIST_TARGET_NAME = 'text/x-zim-page-list' PAGELIST_TARGET = (PAGELIST_TARGET_NAME, 0, PAGELIST_TARGET_ID) IMAGE_TARGET_ID = 6 IMAGE_TARGETS = tuple(gtk.target_list_add_image_targets(info=IMAGE_TARGET_ID)) # 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
def do_realize(self): """ Realize the widget This creates the server resources (gdk window, cursors, pixbufs, etc) and sets up drag and drop handlers """ self.set_flags(self.flags() | gtk.REALIZED) self.window = gdk.Window(self.get_parent_window(), width=self.allocation.width, height=self.allocation.height, window_type=gdk.WINDOW_CHILD, wclass=gdk.INPUT_OUTPUT, event_mask=self.get_events() | gdk.EXPOSURE_MASK | gdk.BUTTON1_MOTION_MASK | gdk.BUTTON_PRESS_MASK | gdk.BUTTON_RELEASE_MASK | gdk.POINTER_MOTION_MASK | gdk.POINTER_MOTION_HINT_MASK) try: pbuf = gdk.pixbuf_new_from_file( os.path.join(self.icon_path, "magnify.png")) self.cursors['magnify'] = gdk.Cursor(self.window.get_display(), pbuf, 6, 6) except glib.GError: self.cursors['magnify'] = None try: pbuf = gdk.pixbuf_new_from_file( os.path.join(self.icon_path, "measure.png")) self.cursors['measure'] = gdk.Cursor(self.window.get_display(), pbuf, 6, 6) except glib.GError: self.cursors['measure'] = None #self.set_cursor('magnify') self.pixbuf_width = int(self.allocation.width) self.pixbuf_height = int(self.allocation.height) self.raw_width = int(self.allocation.width / self.zoom) self.raw_height = int(self.allocation.height / self.zoom) self.window.set_user_data(self) self.style.attach(self.window) self.style.set_background(self.window, gtk.STATE_NORMAL) self.window.move_resize(*self.allocation) self.gc = self.style.fg_gc[gtk.STATE_NORMAL] self.measure_gc = gdk.GC(self.window) self.measure_gc.set_foreground( self.measure_gc.get_colormap().alloc_color("#fff")) self.measure_gc.set_background( self.measure_gc.get_colormap().alloc_color("#000")) self.measure_gc.set_dashes(0, (4, 4)) self.measure_gc.set_line_attributes(1, gdk.LINE_DOUBLE_DASH, gdk.CAP_BUTT, gdk.JOIN_MITER) self.grid_gc = gdk.GC(self.window) self.grid_gc.set_foreground( self.measure_gc.get_colormap().alloc_color("#777")) self.connect("motion-notify-event", self.cb_motion_notify) self.connect("button-press-event", self.cb_button_press) self.connect("button-release-event", self.cb_button_release) self.connect("scroll-event", self.cb_scroll) self.pixbuf = gdk.Pixbuf(gdk.COLORSPACE_RGB, False, 8, self.pixbuf_width, self.pixbuf_height) self.raw_pixbuf = gdk.Pixbuf(gdk.COLORSPACE_RGB, False, 8, self.raw_width, self.raw_height) target_list = gtk.target_list_add_image_targets( None, self.TARGET_TYPE_IMAGE, True) self.drag_source_set(gtk.gdk.BUTTON1_MASK, target_list, gtk.gdk.ACTION_COPY) self.connect("drag-data-get", self.cb_drag_data_get)
def do_realize(self): """ Realize the widget This creates the server resources (gdk window, cursors, pixbufs, etc) and sets up drag and drop handlers """ self.set_flags(self.flags() | gtk.REALIZED) self.window = gdk.Window( self.get_parent_window(), width=self.allocation.width, height=self.allocation.height, window_type=gdk.WINDOW_CHILD, wclass=gdk.INPUT_OUTPUT, event_mask=self.get_events() | gdk.EXPOSURE_MASK | gdk.BUTTON1_MOTION_MASK | gdk.BUTTON_PRESS_MASK | gdk.BUTTON_RELEASE_MASK | gdk.POINTER_MOTION_MASK | gdk.POINTER_MOTION_HINT_MASK, ) pbuf = gdk.pixbuf_new_from_file(os.path.join(self.icon_path, "magnify.png")) self.cursors["magnify"] = gdk.Cursor(self.window.get_display(), pbuf, 6, 6) pbuf = gdk.pixbuf_new_from_file(os.path.join(self.icon_path, "measure.png")) self.cursors["measure"] = gdk.Cursor(self.window.get_display(), pbuf, 6, 6) # self.set_cursor('magnify') self.pixbuf_width = int(self.allocation.width) self.pixbuf_height = int(self.allocation.height) self.raw_width = int(self.allocation.width / self.zoom) self.raw_height = int(self.allocation.height / self.zoom) self.window.set_user_data(self) self.style.attach(self.window) self.style.set_background(self.window, gtk.STATE_NORMAL) self.window.move_resize(*self.allocation) self.gc = self.style.fg_gc[gtk.STATE_NORMAL] self.measure_gc = gdk.GC(self.window) self.measure_gc.set_foreground(self.measure_gc.get_colormap().alloc_color("#fff")) self.measure_gc.set_background(self.measure_gc.get_colormap().alloc_color("#000")) self.measure_gc.set_dashes(0, (4, 4)) self.measure_gc.set_line_attributes(1, gdk.LINE_DOUBLE_DASH, gdk.CAP_BUTT, gdk.JOIN_MITER) self.grid_gc = gdk.GC(self.window) self.grid_gc.set_foreground(self.measure_gc.get_colormap().alloc_color("#777")) self.connect("motion-notify-event", self.cb_motion_notify) self.connect("button-press-event", self.cb_button_press) self.connect("button-release-event", self.cb_button_release) self.connect("scroll-event", self.cb_scroll) self.pixbuf = gdk.Pixbuf(gdk.COLORSPACE_RGB, False, 8, self.pixbuf_width, self.pixbuf_height) self.raw_pixbuf = gdk.Pixbuf(gdk.COLORSPACE_RGB, False, 8, self.raw_width, self.raw_height) target_list = gtk.target_list_add_image_targets(None, self.TARGET_TYPE_IMAGE, True) self.drag_source_set(gtk.gdk.BUTTON1_MASK, target_list, gtk.gdk.ACTION_COPY) self.connect("drag-data-get", self.cb_drag_data_get)