예제 #1
0
 def open_recent_cb(self, action):
     """Callback for RecentAction"""
     if not self.confirm_destructive_action():
         return
     uri = action.get_current_uri()
     fn = fileutils.uri2filename(uri)
     self.open_file(fn)
예제 #2
0
 def open_recent_cb(self, action):
     """Callback for RecentAction"""
     if not self.confirm_destructive_action():
         return
     uri = action.get_current_uri()
     fn = fileutils.uri2filename(uri)
     self.open_file(fn)
예제 #3
0
    def open_scratchpad_dialog(self):
        dialog = gtk.FileChooserDialog(_("Open Scratchpad..."), self.app.drawWindow,
                                       gtk.FILE_CHOOSER_ACTION_OPEN,
                                       (gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL,
                                        gtk.STOCK_OPEN, gtk.RESPONSE_OK))
        dialog.set_default_response(gtk.RESPONSE_OK)

        preview = gtk.Image()
        dialog.set_preview_widget(preview)
        dialog.connect("update-preview", self.update_preview_cb, preview)

        add_filters_to_dialog(self.file_filters, dialog)

        if self.app.scratchpad_filename:
            dialog.set_filename(self.app.scratchpad_filename)
        else:
            # choose the most recent save folder
            self.set_recent_items()
            for item in reversed(self.recent_items):
                uri = item.get_uri()
                fn = fileutils.uri2filename(uri)
                dn = os.path.dirname(fn)
                if os.path.isdir(dn):
                    dialog.set_current_folder(dn)
                    break
        try:
            if dialog.run() == gtk.RESPONSE_OK:
                dialog.hide()
                self.app.scratchpad_filename = dialog.get_filename().decode('utf-8')
                self.open_scratchpad(self.app.scratchpad_filename)
        finally:
            dialog.destroy()
예제 #4
0
    def open_scratchpad_dialog(self):
        dialog = gtk.FileChooserDialog(_("Open Scratchpad..."),
                                       self.app.drawWindow,
                                       gtk.FILE_CHOOSER_ACTION_OPEN,
                                       (gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL,
                                        gtk.STOCK_OPEN, gtk.RESPONSE_OK))
        dialog.set_default_response(gtk.RESPONSE_OK)

        preview = gtk.Image()
        dialog.set_preview_widget(preview)
        dialog.connect("update-preview", self.update_preview_cb, preview)

        add_filters_to_dialog(self.file_filters, dialog)

        if self.app.scratchpad_filename:
            dialog.set_filename(self.app.scratchpad_filename)
        else:
            # choose the most recent save folder
            self.set_recent_items()
            for item in reversed(self.recent_items):
                uri = item.get_uri()
                fn = fileutils.uri2filename(uri)
                dn = os.path.dirname(fn)
                if os.path.isdir(dn):
                    dialog.set_current_folder(dn)
                    break
        try:
            if dialog.run() == gtk.RESPONSE_OK:
                dialog.hide()
                self.app.scratchpad_filename = dialog.get_filename().decode(
                    'utf-8')
                self.open_scratchpad(self.app.scratchpad_filename)
        finally:
            dialog.destroy()
예제 #5
0
 def open_last_cb(self, action):
     """Callback to open the last file"""
     if not self.recent_items:
         return
     if not self.confirm_destructive_action():
         return
     uri = self.recent_items.pop().get_uri()
     fn = fileutils.uri2filename(uri)
     self.open_file(fn)
예제 #6
0
 def open_last_cb(self, action):
     """Callback to open the last file"""
     if not self.recent_items:
         return
     if not self.confirm_destructive_action():
         return
     uri = self.recent_items.pop().get_uri()
     fn = fileutils.uri2filename(uri)
     self.open_file(fn)
예제 #7
0
    def set_recent_items(self):
        # this list is consumed in open_last_cb

        # Note: i.exists() does not work on Windows if the pathname
        # contains utf-8 characters. Since GIMP also saves its URIs
        # with utf-8 characters into this list, I assume this is a
        # gtk bug.  So we use our own test instead of i.exists().
        self.recent_items = [
            i for i in gtk2compat.gtk.recent_manager_get_default().get_items()
            if "mypaint" in i.get_applications() and os.path.exists(fileutils.uri2filename(i.get_uri()))
        ]
        self.recent_items.reverse()
예제 #8
0
    def set_recent_items(self):
        # this list is consumed in open_last_cb

        # Note: i.exists() does not work on Windows if the pathname
        # contains utf-8 characters. Since GIMP also saves its URIs
        # with utf-8 characters into this list, I assume this is a
        # gtk bug.  So we use our own test instead of i.exists().
        self.recent_items = [
            i for i in gtk2compat.gtk.recent_manager_get_default().get_items()
            if "mypaint" in i.get_applications()
            and os.path.exists(fileutils.uri2filename(i.get_uri()))
        ]
        self.recent_items.reverse()
예제 #9
0
 def _drag_data_received_cb(self, widget, context, x, y, data, info, time):
     """Handles data being received"""
     rawdata = data.get_data()
     if not rawdata:
         return
     if info == 1:  # file uris
         uri = rawdata.split("\r\n")[0]
         fn = fileutils.uri2filename(uri)
         if os.path.exists(fn):
             if self.app.filehandler.confirm_destructive_action():
                 self.app.filehandler.open_file(fn)
     elif info == 2:  # color
         color = uicolor.from_drag_data(rawdata)
         self.app.brush_color_manager.set_color(color)
         self.app.brush_color_manager.push_history(color)
예제 #10
0
파일: drawwindow.py 프로젝트: Old55/mypaint
 def _drag_data_received_cb(self, widget, context, x, y, data, info, time):
     """Handles data being received"""
     rawdata = data.get_data()
     if not rawdata:
         return
     if info == 1: # file uris
         uri = rawdata.split("\r\n")[0]
         fn = fileutils.uri2filename(uri)
         if os.path.exists(fn):
             if self.app.filehandler.confirm_destructive_action():
                 self.app.filehandler.open_file(fn)
     elif info == 2: # color
         color = RGBColor.new_from_drag_data(rawdata)
         self.app.brush_color_manager.set_color(color)
         self.app.brush_color_manager.push_history(color)
예제 #11
0
    def save_as_cb(self, action):
        if self.filename:
            current_filename = self.filename
        else:
            current_filename = ''
            # choose the most recent save folder
            self.set_recent_items()
            for item in reversed(self.recent_items):
                uri = item.get_uri()
                fn = fileutils.uri2filename(uri)
                dn = os.path.dirname(fn)
                if os.path.isdir(dn):
                    break

        if action.get_name() == 'Export':
            # Do not change working file
            self.save_as_dialog(self.save_file, suggested_filename=current_filename, export=True)
        else:
            self.save_as_dialog(self.save_file, suggested_filename=current_filename)
예제 #12
0
    def save_as_cb(self, action):
        if self.filename:
            current_filename = self.filename
        else:
            current_filename = ''
            # choose the most recent save folder
            self.set_recent_items()
            for item in reversed(self.recent_items):
                uri = item.get_uri()
                fn = fileutils.uri2filename(uri)
                dn = os.path.dirname(fn)
                if os.path.isdir(dn):
                    break

        if action.get_name() == 'Export':
            # Do not change working file
            self.save_as_dialog(self.save_file,
                                suggested_filename=current_filename,
                                export=True)
        else:
            self.save_as_dialog(self.save_file,
                                suggested_filename=current_filename)