# Sketch - A Python-based interactive drawing program # Copyright (C) 1998, 1999, 2000 by Bernhard Herzog # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Library General Public # License as published by the Free Software Foundation; either # version 2 of the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Library General Public License for more details. # # You should have received a copy of the GNU Library General Public # License along with this library; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ###Sketch Config #type = PluginCompound #class_name = 'SymbolGroup' #factory = 'CreateSymbolGroup' #menu_text = 'Symbol Group' #uses_selection = 1 ###End from Sketch import PluginCompound, Point, CreateMultiUndo, NullPoint import Sketch class SymbolGroup(PluginCompound): is_Group = 1 # this, together with the Ungroup method lets the user # ungroup symbol groups just like an ordinary # group class_name = 'SymbolGroup' def __init__(self, objects = None, duplicate = None, loading = 0, name = '', layout_point = (0, 0)): PluginCompound.__init__(self, objects, duplicate = duplicate) if duplicate is not None: self.name = duplicate.name self.layout_point = duplicate.layout_point else: self.name = name self.layout_point = apply(Point, layout_point) def SaveToFile(self, file): PluginCompound.SaveToFile(self, file, name = self.name, layout_point = tuple(self.LayoutPoint())) def SetLayoutPoint(self, layout_point): undo = self.SetLayoutPoint, self.layout_point self.layout_point = layout_point return undo def Transform(self, trafo): return CreateMultiUndo(PluginCompound.Transform(self, trafo), self.SetLayoutPoint(trafo(self.layout_point))) def Translate(self, offset): PluginCompound.Translate(self, offset) self.layout_point = self.layout_point + offset return self.Translate, -offset def Info(self): return _("Symbol Group '%(name)s'") % self.__dict__ def LayoutPoint(self): return self.layout_point Ungroup = PluginCompound.GetObjects def CreateSymbolGroup(objects): # XXX relying on the GetName function in the layerdlg module is not # really a good idea. That function may be removed or otherwise # changed in the future. The same applies to accessing main_window's # root attribute from Sketch.UI.layerdlg import GetName name = GetName(Sketch.main.application.main_window.root, '') return SymbolGroup(objects, name = name)