commit-gnue
[Top][All Lists]
Advanced

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

gnue common/images/deslay_entrynum.png common/i...


From: Jason Cater
Subject: gnue common/images/deslay_entrynum.png common/i...
Date: Mon, 21 Jan 2002 18:56:47 -0500

CVSROOT:        /cvsroot/gnue
Module name:    gnue
Changes by:     Jason Cater <address@hidden>    02/01/21 18:56:47

Modified files:
        common/images  : deslay_entrynum.png deslay_entrynum.xpm 
                         deslay_label.png deslay_scrollbar.png 
        designer/src   : DataSourceEditor.py LayoutEditor.py 
        designer/src/forms: LayoutEditorTools.py 
        navigator/src  : UIwxweb.py 

Log message:
        added widget toolbar to designer; not yet functional

CVSWeb URLs:
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/gnue/common/images/deslay_entrynum.png.diff?tr1=1.1&tr2=1.2&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/gnue/common/images/deslay_entrynum.xpm.diff?tr1=1.1&tr2=1.2&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/gnue/common/images/deslay_label.png.diff?tr1=1.1&tr2=1.2&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/gnue/common/images/deslay_scrollbar.png.diff?tr1=1.1&tr2=1.2&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/gnue/designer/src/DataSourceEditor.py.diff?tr1=1.17&tr2=1.18&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/gnue/designer/src/LayoutEditor.py.diff?tr1=1.37&tr2=1.38&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/gnue/designer/src/forms/LayoutEditorTools.py.diff?tr1=1.1&tr2=1.2&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/gnue/navigator/src/UIwxweb.py.diff?tr1=1.2&tr2=1.3&r1=text&r2=text

Patches:
Index: gnue/common/images/deslay_entrynum.png
Index: gnue/common/images/deslay_entrynum.xpm
diff -c gnue/common/images/deslay_entrynum.xpm:1.1 
gnue/common/images/deslay_entrynum.xpm:1.2
*** gnue/common/images/deslay_entrynum.xpm:1.1  Fri Jan 18 19:19:04 2002
--- gnue/common/images/deslay_entrynum.xpm      Mon Jan 21 18:56:46 2002
***************
*** 1,40 ****
  /* XPM */
  static char * deslay_entrynum_xpm[] = {
! "32 32 5 1",
  "     c None",
  ".    c #DCDCDC",
  "+    c #B2B2B2",
  "@    c #000000",
  "#    c #FFFFFF",
! "                                ",
! "                                ",
! "                                ",
! "                                ",
! "                                ",
! "                                ",
! "   ...........................  ",
! "   .++++++++++++++++++++++++++  ",
! "   .+@@@@@@@@@@@@@@@@@@@@@@@@@  ",
! "   address@hidden  ",
! "   address@hidden  ",
! "   address@hidden  ",
! "   address@hidden  ",
! "   address@hidden@#####@@@####@@@####  ",
! "   address@hidden@@@address@hidden@address@hidden@###  ",
! "   address@hidden@address@hidden@address@hidden  ",
! "   address@hidden@address@hidden@address@hidden  ",
! "   address@hidden@address@hidden@@####  ",
! "   address@hidden@address@hidden@###  ",
! "   address@hidden@address@hidden@###  ",
! "   address@hidden@address@hidden@address@hidden@###  ",
! "   address@hidden@@@@@##@@@@@###@@@####  ",
! "   address@hidden  ",
! "   address@hidden  ",
! "   address@hidden  ",
! "   .+#########################  ",
! "   ...........................  ",
! "                                ",
! "                                ",
! "                                ",
! "                                ",
! "                                "};
--- 1,31 ----
  /* XPM */
  static char * deslay_entrynum_xpm[] = {
! "30 23 5 1",
  "     c None",
  ".    c #DCDCDC",
  "+    c #B2B2B2",
  "@    c #000000",
  "#    c #FFFFFF",
! "                              ",
! "  ........................... ",
! "  .++++++++++++++++++++++++++ ",
! "  .+@@@@@@@@@@@@@@@@@@@@@@@@@ ",
! "  address@hidden ",
! "  address@hidden ",
! "  address@hidden ",
! "  address@hidden ",
! "  address@hidden@#####@@@####@@@#### ",
! "  address@hidden@@@address@hidden@address@hidden@### ",
! "  address@hidden@address@hidden@address@hidden ",
! "  address@hidden@address@hidden@address@hidden ",
! "  address@hidden@address@hidden@@#### ",
! "  address@hidden@address@hidden@### ",
! "  address@hidden@address@hidden@### ",
! "  address@hidden@address@hidden@address@hidden@### ",
! "  address@hidden@@@@@##@@@@@###@@@#### ",
! "  address@hidden ",
! "  address@hidden ",
! "  address@hidden ",
! "  .+######################### ",
! "  ........................... ",
! "                              "};
Index: gnue/common/images/deslay_label.png
Index: gnue/common/images/deslay_scrollbar.png
Index: gnue/designer/src/DataSourceEditor.py
diff -c gnue/designer/src/DataSourceEditor.py:1.17 
gnue/designer/src/DataSourceEditor.py:1.18
*** gnue/designer/src/DataSourceEditor.py:1.17  Mon Jan 21 15:33:48 2002
--- gnue/designer/src/DataSourceEditor.py       Mon Jan 21 18:56:46 2002
***************
*** 339,344 ****
--- 339,347 ----
  
  
  
+ #
+ #
+ #
  class ToolBar (wxToolBar):
  
    def __init__(self, editor, parent):
Index: gnue/designer/src/LayoutEditor.py
diff -c gnue/designer/src/LayoutEditor.py:1.37 
gnue/designer/src/LayoutEditor.py:1.38
*** gnue/designer/src/LayoutEditor.py:1.37      Mon Jan 21 15:33:48 2002
--- gnue/designer/src/LayoutEditor.py   Mon Jan 21 18:56:46 2002
***************
*** 33,47 ****
--- 33,52 ----
  from PopupMenu import PageMenu
  import Incubator
  
+ from forms import LayoutEditorTools
+ 
  class LayoutEditor (wxPanel):
    def __init__(self, instance, parentWindow):
      wxPanel.__init__(self,parentWindow,-1)
+     self.frame = instance
      self.panelColor = self.GetBackgroundColour()
      self._instance = instance
      self.rootObject = instance.rootObject
      self._app = instance._app
      self.widgets = {}
      self.widgets.update(UIwxpython.WIDGETS)
+     self.toolbar = LayoutEditorTools.LayoutEditorTools(self)
+     self.frame.SetToolBar(self.toolbar)
      del self.widgets['GFPage']
  
      self.notebook = wxNotebook(self, -1, pos=wxPoint(4, 4), 
size=wxSize(32,32))
***************
*** 58,63 ****
--- 63,70 ----
      self.positionMappings = {}
      self.widgetList = []
  
+     self.mode = 'move'
+ 
      instance.rootObject.walk (self.inventoryObject)
  
  
***************
*** 243,251 ****
    def __drawItem(self, object):
      if self.widgets.has_key(object.getObjectType()) and \
         (not hasattr(object, 'hidden') or not object.hidden):
!       if hasattr(object, 'name'): 
          GDebug.printMesg(7, 'Drawing item %s of type %s' % (object.name, 
object.getObjectType()))
!       else: 
          GDebug.printMesg(7, 'Drawing item of type %s' % 
(object.getObjectType()))
        object._widgetHandler = WidgetHandler(self, object)
        object._widget = self.widgets[object.getObjectType()]\
--- 250,258 ----
    def __drawItem(self, object):
      if self.widgets.has_key(object.getObjectType()) and \
         (not hasattr(object, 'hidden') or not object.hidden):
!       if hasattr(object, 'name'):
          GDebug.printMesg(7, 'Drawing item %s of type %s' % (object.name, 
object.getObjectType()))
!       else:
          GDebug.printMesg(7, 'Drawing item of type %s' % 
(object.getObjectType()))
        object._widgetHandler = WidgetHandler(self, object)
        object._widget = self.widgets[object.getObjectType()]\
***************
*** 253,264 ****
            self.widgetWidth, self.widgetHeight, self,initialize=0)
        object._widget._object = object
        object._widgetHandler.initialize(object._widget)
!       if not len(self._currentSelection.keys()): 
          self._currentSelection = {object._widgetHandler:1}
          object._widgetHandler.setSelected(0)
        self.widgetList.append(object)
  
!   def OnSize(self, event): 
      self.propBar.SetSize(wxSize(self.GetClientSize().x, 
self.propBar.GetSize().y))
      self.propBar.SetPosition(wxPoint(0, self.GetClientSize().y - 
self.propBar.GetSize().y))
      self.notebook.SetSize(wxSize(self.GetClientSize().x-8, 
self.GetClientSize().y - 8 - self.propBar.GetSize().y))
--- 260,271 ----
            self.widgetWidth, self.widgetHeight, self,initialize=0)
        object._widget._object = object
        object._widgetHandler.initialize(object._widget)
!       if not len(self._currentSelection.keys()):
          self._currentSelection = {object._widgetHandler:1}
          object._widgetHandler.setSelected(0)
        self.widgetList.append(object)
  
!   def OnSize(self, event):
      self.propBar.SetSize(wxSize(self.GetClientSize().x, 
self.propBar.GetSize().y))
      self.propBar.SetPosition(wxPoint(0, self.GetClientSize().y - 
self.propBar.GetSize().y))
      self.notebook.SetSize(wxSize(self.GetClientSize().x-8, 
self.GetClientSize().y - 8 - self.propBar.GetSize().y))
***************
*** 270,282 ****
      self._setCurrentPage(p)
  
  
!   def OnBlockSelected(self, event): 
      b = self.blockList[event.GetSelection()]
  #    if p != self.page:
      self._instance.onSetCurrentObject(b, None)
!  
!  
    def OnRightUp(self, event):
      x, y = event.GetPositionTuple()
  
      x = int(x / self.gridWidth)
--- 277,312 ----
      self._setCurrentPage(p)
  
  
!   def OnBlockSelected(self, event):
      b = self.blockList[event.GetSelection()]
  #    if p != self.page:
      self._instance.onSetCurrentObject(b, None)
! 
! 
!   def OnLeftDown(self, event):
! 
!     if self.mode == 'move':
!       return
! 
!     x, y = event.GetPositionTuple()
! 
!     x = int(x / self.gridWidth)
!     y = int(y / self.gridHeight)
! 
!     mode = self.mode
!     self.toolbar.resetTool(mode)
!     self.mode = 'move'
! 
!     if mode in ('scrollbar','box','button'):
!       pass
! 
! 
! 
    def OnRightUp(self, event):
+ 
+     self.toolbar.resetTool(self.mode)
+     self.mode = 'move'
+ 
      x, y = event.GetPositionTuple()
  
      x = int(x / self.gridWidth)
***************
*** 291,315 ****
         self._currentObject.findParentOfType('GFBlock')
  
      menu.AppendMenu(wxNewId(), 'Form', PageMenu(self._instance, form, x, y))
!     if page: 
        menu.AppendMenu(wxNewId(), page.name, PageMenu(self._instance, page, x, 
y))
!     if block: 
        menu.AppendMenu(wxNewId(), block.name, PageMenu(self._instance, block, 
x, y))
!     
      self.panel.PopupMenu(menu, event.GetPosition())
!        
!   def keyTrap(self, event): 
      if event.KeyCode() in (WXK_LEFT, WXK_RIGHT, WXK_UP, WXK_DOWN) and \
!       len(self._currentSelection.keys()): 
        if event.AltDown(): # or event.MetaDown():
          if event.KeyCode() == WXK_LEFT:
!           for widget in self._currentSelection.keys(): 
              widget.relativeResize(-1,0)
          if event.KeyCode() == WXK_RIGHT:
!           for widget in self._currentSelection.keys(): 
              widget.relativeResize(1,0)
!         if event.KeyCode() == WXK_UP: 
!           for widget in self._currentSelection.keys(): 
              widget.relativeResize(0,-1)
          if event.KeyCode() == WXK_DOWN:
            for widget in self._currentSelection.keys(): 
--- 321,345 ----
         self._currentObject.findParentOfType('GFBlock')
  
      menu.AppendMenu(wxNewId(), 'Form', PageMenu(self._instance, form, x, y))
!     if page:
        menu.AppendMenu(wxNewId(), page.name, PageMenu(self._instance, page, x, 
y))
!     if block:
        menu.AppendMenu(wxNewId(), block.name, PageMenu(self._instance, block, 
x, y))
! 
      self.panel.PopupMenu(menu, event.GetPosition())
! 
!   def keyTrap(self, event):
      if event.KeyCode() in (WXK_LEFT, WXK_RIGHT, WXK_UP, WXK_DOWN) and \
!       len(self._currentSelection.keys()):
        if event.AltDown(): # or event.MetaDown():
          if event.KeyCode() == WXK_LEFT:
!           for widget in self._currentSelection.keys():
              widget.relativeResize(-1,0)
          if event.KeyCode() == WXK_RIGHT:
!           for widget in self._currentSelection.keys():
              widget.relativeResize(1,0)
!         if event.KeyCode() == WXK_UP:
!           for widget in self._currentSelection.keys():
              widget.relativeResize(0,-1)
          if event.KeyCode() == WXK_DOWN:
            for widget in self._currentSelection.keys(): 
***************
*** 666,730 ****
  #
  #
  #
! class PropertyBar (wxPanel): 
!   def __init__(self, parent): 
!     wxPanel.__init__(self, parent, -1, style=wxRAISED_BORDER|wxCLIP_CHILDREN) 
 
      self.parent = parent
      self.object = None
!     self.nameLabel = wxStaticText(self, -1, "Name:", pos=wxPoint(4,8)) 
      self.nameEditor = wxTextCtrl(self, -1,
            pos=calcRelPos(self.nameLabel, dx=6, absy=4))
!     self.typeLabel = wxStaticText(self, -1, "Class:", 
            pos=calcRelPos(self.nameEditor, absx=4, dy=8))
!     self.typeEditor = wxTextCtrl(self, -1,  
            pos=calcRelPos(self.nameLabel, self.nameEditor, dx=6, dy=4))
      self.typeEditor.SetEditable(0)
  
      self.xLabel = wxStaticText(self, -1, "x:",
            pos=calcRelPos(self.nameEditor, dx=10, absy=8))
!     self.xEditor = wxSpinCtrl(self, -1, 
            pos=calcRelPos(self.xLabel, dx=4, absy=6))
      self.xEditor.SetSize((50, self.xEditor.GetSize().height))
  
      self.wLabel = wxStaticText(self, -1, "Width:  ",
            pos=calcRelPos(self.xEditor, dx=6, absy=8))
!     self.wEditor = wxSpinCtrl(self, -1, 
            pos=calcRelPos(self.wLabel, dx=4, absy=6))
      self.wEditor.SetSize(self.xEditor.GetSize())
  
      self.yLabel = wxStaticText(self, -1, "y:",
            pos=calcRelPos(self.nameEditor, self.xEditor, dx=10, dy=8))
!     self.yEditor = wxSpinCtrl(self, -1, 
            pos=calcRelPos(self.xLabel, self.xEditor, dx=4, dy=6))
      self.yEditor.SetSize(self.xEditor.GetSize())
  
      self.hLabel = wxStaticText(self, -1, "Height:",
            pos=calcRelPos(self.xEditor, self.wEditor, dx=6, dy=8))
!     self.hEditor = wxSpinCtrl(self, -1, 
            pos=calcRelPos(self.wLabel, self.wEditor, dx=4, dy=6))
      self.hEditor.SetSize(self.wEditor.GetSize())
  
      self.Fit()
  
      EVT_SPINCTRL(self, self.xEditor.GetId(), self.OnXUpdated)
      EVT_SPINCTRL(self, self.yEditor.GetId(), self.OnYUpdated)
      EVT_SPINCTRL(self, self.wEditor.GetId(), self.OnWidthUpdated)
      EVT_SPINCTRL(self, self.hEditor.GetId(), self.OnHeightUpdated)
-     
  
!   def OnNameUpdated(self, event): 
      self.object.name = self.nameEditor.GetValue()
! #    self.parent._instance.onModifyObject(self.object, __name__, 
  
    def OnXUpdated(self, event):
      if hasattr(self.object, 'x'):
        dx = self.xEditor.GetValue() - self.object.x
!       if dx: 
          self.object._widgetHandler.relativeMove(dx,0)
!     else: 
        self.xEditor.SetValue(0)
  
!   def OnYUpdated(self, event): 
      if hasattr(self.object, 'y'):
        dy = self.yEditor.GetValue() - self.object.y
        if dy: 
--- 696,765 ----
  #
  #
  #
! class PropertyBar (wxPanel):
!   def __init__(self, parent):
!     wxPanel.__init__(self, parent, -1, style=wxRAISED_BORDER|wxCLIP_CHILDREN)
      self.parent = parent
      self.object = None
!     self.nameLabel = wxStaticText(self, -1, "Name:", pos=wxPoint(4,8))
      self.nameEditor = wxTextCtrl(self, -1,
            pos=calcRelPos(self.nameLabel, dx=6, absy=4))
!     self.typeLabel = wxStaticText(self, -1, "Class:",
            pos=calcRelPos(self.nameEditor, absx=4, dy=8))
!     self.typeEditor = wxTextCtrl(self, -1,
            pos=calcRelPos(self.nameLabel, self.nameEditor, dx=6, dy=4))
      self.typeEditor.SetEditable(0)
  
      self.xLabel = wxStaticText(self, -1, "x:",
            pos=calcRelPos(self.nameEditor, dx=10, absy=8))
!     self.xEditor = wxSpinCtrl(self, -1,
            pos=calcRelPos(self.xLabel, dx=4, absy=6))
      self.xEditor.SetSize((50, self.xEditor.GetSize().height))
  
      self.wLabel = wxStaticText(self, -1, "Width:  ",
            pos=calcRelPos(self.xEditor, dx=6, absy=8))
!     self.wEditor = wxSpinCtrl(self, -1,
            pos=calcRelPos(self.wLabel, dx=4, absy=6))
      self.wEditor.SetSize(self.xEditor.GetSize())
  
      self.yLabel = wxStaticText(self, -1, "y:",
            pos=calcRelPos(self.nameEditor, self.xEditor, dx=10, dy=8))
!     self.yEditor = wxSpinCtrl(self, -1,
            pos=calcRelPos(self.xLabel, self.xEditor, dx=4, dy=6))
      self.yEditor.SetSize(self.xEditor.GetSize())
  
      self.hLabel = wxStaticText(self, -1, "Height:",
            pos=calcRelPos(self.xEditor, self.wEditor, dx=6, dy=8))
!     self.hEditor = wxSpinCtrl(self, -1,
            pos=calcRelPos(self.wLabel, self.wEditor, dx=4, dy=6))
      self.hEditor.SetSize(self.wEditor.GetSize())
  
+ ##    self.toolpanel = LayoutEditorTools.LayoutEditorTools(self.parent,
+ ##          self, -1,
+ ##          pos=calcRelPos(self.hEditor,self.hEditor, dx=6, absy=6),
+ ##          style=wxSUNKEN_BORDER)
+ 
      self.Fit()
  
      EVT_SPINCTRL(self, self.xEditor.GetId(), self.OnXUpdated)
      EVT_SPINCTRL(self, self.yEditor.GetId(), self.OnYUpdated)
      EVT_SPINCTRL(self, self.wEditor.GetId(), self.OnWidthUpdated)
      EVT_SPINCTRL(self, self.hEditor.GetId(), self.OnHeightUpdated)
  
! 
!   def OnNameUpdated(self, event):
      self.object.name = self.nameEditor.GetValue()
! #    self.parent._instance.onModifyObject(self.object, __name__,
  
    def OnXUpdated(self, event):
      if hasattr(self.object, 'x'):
        dx = self.xEditor.GetValue() - self.object.x
!       if dx:
          self.object._widgetHandler.relativeMove(dx,0)
!     else:
        self.xEditor.SetValue(0)
  
!   def OnYUpdated(self, event):
      if hasattr(self.object, 'y'):
        dy = self.yEditor.GetValue() - self.object.y
        if dy: 
Index: gnue/designer/src/forms/LayoutEditorTools.py
diff -c gnue/designer/src/forms/LayoutEditorTools.py:1.1 
gnue/designer/src/forms/LayoutEditorTools.py:1.2
*** gnue/designer/src/forms/LayoutEditorTools.py:1.1    Mon Jan 21 15:33:48 2002
--- gnue/designer/src/forms/LayoutEditorTools.py        Mon Jan 21 18:56:46 2002
***************
*** 25,43 ****
  #
  # NOTES:
  
  from wxPython.wx import *
  from gnue.common import GDebug, GConfig
  
! class LayoutEditorTools(wxPanel):
  
!   def __init__(self, editor, *args, **parms):
      self.editor = editor
!     wxPanel.__init__(self, *args, **parms)
  
  
-   def OnLeftClick(self, event):
-     pass
  
  
  
  
--- 25,81 ----
  #
  # NOTES:
  
+ import os, string
  from wxPython.wx import *
  from gnue.common import GDebug, GConfig
  
! iconlocation = os.path.join(os.environ['INSTALL_PREFIX'],'shared','images')
  
! class LayoutEditorTools(wxToolBar):
! 
!   def __init__(self, editor):
      self.editor = editor
!     wxToolBar.__init__(self, editor, -1, style=wxTB_DOCKABLE)
! 
! 
!     self.mapping = {}
! 
!     for type in ( ('label','label'),('box','box'),('button','button'),
!                   ('scrollbar','scrollbar'),('entrytext','text entry'),
!                   ('entrynum','numeric entry'),
!                   ('entrydate','date/time entry'),
!                   ('entrydrop','dropdown-style entry'),
!                   ('entrycheck','checkbox-style entry') ):
! 
!       handle, descr = type
! 
!       id = wxNewId()
!       self.mapping[id] = type
!       self.mapping[handle] = id
! 
!       self.AddTool(id,
!         wxImage(os.path.join(iconlocation,'deslay_%s.png'%handle),
!                 wxBITMAP_TYPE_PNG).ConvertToBitmap(),
!         isToggle=1,
!         shortHelpString="Create a new %s" % descr,
!         longHelpString="Create a new %s" % descr)
! 
!       self.SetToolClientData(id, type)
! 
!       EVT_TOOL(self, id, self.OnButtonSelected)
! 
  
+   def resetTool(self, mode):
+     if self.mapping.has_key(mode):
+       self.ToggleTool(self.mapping[mode],0)
  
  
+   def OnButtonSelected(self, event):
+     handle, descr = self.mapping[event.GetId()]
+     self.resetTool(self.editor.mode)
+     self.editor.mode = handle
+     self.editor.frame.SetStatusText('Click on the gridded Layout '
+            'Editor to create a new %s.' % descr)
  
  
  
Index: gnue/navigator/src/UIwxweb.py
diff -c gnue/navigator/src/UIwxweb.py:1.2 gnue/navigator/src/UIwxweb.py:1.3
*** gnue/navigator/src/UIwxweb.py:1.2   Fri Jan 18 15:57:06 2002
--- gnue/navigator/src/UIwxweb.py       Mon Jan 21 18:56:46 2002
***************
*** 77,83 ****
                          process.description)
  
      html += self.getHtmlFooter()
-     print html
  
      self.htmlpanel.SetPage(html)
  
--- 77,82 ----
***************
*** 118,124 ****
      self.shading = not self.shading
  
      return """
! <tr%s><td><a href="%s">%s</a></td></tr>
  """ % (shade, url, description)
  
  
--- 117,123 ----
      self.shading = not self.shading
  
      return """
! <tr%s><td><b><a href="%s">%s</a></b></td></tr>
  """ % (shade, url, description)
  
  
***************
*** 142,148 ****
      wxHtmlWindow.__init__(self, *args, **params)
      print "I am a MyHTMLWindow instance"
  
!   def OnLinkClicked(self, event):
      print "Something happened"
      self.instance.OnLinkClicked(event)
  
--- 141,147 ----
      wxHtmlWindow.__init__(self, *args, **params)
      print "I am a MyHTMLWindow instance"
  
!   def OnLinkClicked(self, linkinfo):
      print "Something happened"
      self.instance.OnLinkClicked(event)
  



reply via email to

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