[Top][All Lists]
[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/