sketch-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Preliminary cut/copy/paste


From: Bernhard Herzog
Subject: Re: Preliminary cut/copy/paste
Date: 04 Jan 2003 17:22:51 +0100
User-agent: Gnus/5.0808 (Gnus v5.8.8) Emacs/21.2

Pieter Edelman <address@hidden> writes:

> > > In Sketch this sort of thing might be useful as well, together with a
> > > new dialog that show the contents of the "kill ring"/clipboard so that
> > > the user can easily select a particular one.
> > >
> This is more or less what the SOIL plugin does: you can copy various 
> sketch objects to a clipboard and copy them back into your document.
> Optionally, these collections can be saved to disk.
> This plugon works apart from the clipboard and needs ome polish, but 
> overall if you search for such a feature it's already there.

That plugin was on my mind when I wrote the above :)

I took this opportunity to have a look at it again. The result is the
patch below that makes it work with Python 2.1 and fixes a bug when a
new document was opened when the dialog was open.

   Bernhard



*** SOIL.py.orig        Thu May  9 16:15:40 2002
--- SOIL.py     Fri Jan  3 23:46:54 2003
***************
*** 46,51 ****
--- 46,53 ----
  from tempfile import mktemp, TemporaryFile
  from zipfile import ZipFile
  import os, string
+ import UserList
+ from types import ListType, IntType
  
  #Should be made configurable
  view_width = 100
***************
*** 64,70 ****
                        self.name = name
                self.show_page_outline = 0
  
!               if (type(object_or_file) == list):
                # If list of sketch objects
                        self.SetObjects(object_or_file)
                else:
--- 66,72 ----
                        self.name = name
                self.show_page_outline = 0
  
!               if isinstance(object_or_file, ListType):
                # If list of sketch objects
                        self.SetObjects(object_or_file)
                else:
***************
*** 100,108 ****
        def SetName(self, name):
                self.name = name
  
! class SOIL(list):
        def __init__(self, root, filename = None):
!               list.__init__(self)
                self.root = root
                self.SetFilename(filename)
  
--- 102,110 ----
        def SetName(self, name):
                self.name = name
  
! class SOIL(UserList.UserList):
        def __init__(self, root, filename = None):
!               UserList.UserList.__init__(self)
                self.root = root
                self.SetFilename(filename)
  
***************
*** 114,123 ****
  
        def Insert(self, position, object, name = None):
                if isinstance(object, SOILObject):
!                       list.insert(self, position, object)
                else:
                # Assume a sketch object of file was given
!                       list.insert(self, position, SOILObject(self.root, 
object, name))
  
        def Append(self, object, name = None):
                self.Insert(len(self), object, name)
--- 116,125 ----
  
        def Insert(self, position, object, name = None):
                if isinstance(object, SOILObject):
!                       UserList.UserList.insert(self, position, object)
                else:
                # Assume a sketch object of file was given
!                       UserList.UserList.insert(self, position, 
SOILObject(self.root, object, name))
  
        def Append(self, object, name = None):
                self.Insert(len(self), object, name)
***************
*** 154,160 ****
  
        def get_new_pos(self, num, canvas):
                global view_width, view_height, view_sep, num_cols
!               if (type(num) == int):
                        col = ((num - 1) % num_cols) + 1
                        row = ((num - 1) / num_cols) + 1
                        x = ((col - 1) * view_width) + ((col - 1) * view_sep)
--- 156,162 ----
  
        def get_new_pos(self, num, canvas):
                global view_width, view_height, view_sep, num_cols
!               if isinstance(num, IntType):
                        col = ((num - 1) % num_cols) + 1
                        row = ((num - 1) / num_cols) + 1
                        x = ((col - 1) * view_width) + ((col - 1) * view_sep)
***************
*** 180,199 ****
  
                # Get objects from document
                objects = []
!               for object in self.context.document.SelectedObjects():
                        objects.append(object.Duplicate())
                self.add_object(objects, name)
  
        def library_to_document(self, event):
                objects = event.widget.GetObjects()
!               self.context.main_window.canvas.PlaceObject(Group(objects))
  
        def save_to_file_as(self):
                self.save_to_file(1)
  
        def save_to_file(self, ask = 0):
                if ((not self.filename) or (ask)):
!                       dir = self.context.document.meta.directory
                        if not dir:
                                dir = os.getcwd()
                        self.filename = 
self.context.application.GetSaveFilename(filetypes = self.file_types,
--- 182,201 ----
  
                # Get objects from document
                objects = []
!               for object in self.document.SelectedObjects():
                        objects.append(object.Duplicate())
                self.add_object(objects, name)
  
        def library_to_document(self, event):
                objects = event.widget.GetObjects()
!               self.main_window.canvas.PlaceObject(Group(objects))
  
        def save_to_file_as(self):
                self.save_to_file(1)
  
        def save_to_file(self, ask = 0):
                if ((not self.filename) or (ask)):
!                       dir = self.document.meta.directory
                        if not dir:
                                dir = os.getcwd()
                        self.filename = 
self.context.application.GetSaveFilename(filetypes = self.file_types,
***************
*** 213,219 ****
                        soil_file.close()
  
        def open_file(self):
!               dir = self.context.document.meta.directory
                if not dir:
                        dir = os.getcwd()
  
--- 215,221 ----
                        soil_file.close()
  
        def open_file(self):
!               dir = self.document.meta.directory
                if not dir:
                        dir = os.getcwd()
  



-- 
Intevation GmbH                                 http://intevation.de/
Sketch                                 http://sketch.sourceforge.net/
MapIt!                                           http://www.mapit.de/




reply via email to

[Prev in Thread] Current Thread [Next in Thread]