Title: [commits] (olivier) [6283] Some new block accessors for CPIA script
If you're looking to make the CPIAScript tests a little easier to read, you can use some neat python tricks to make some cool syntax:

class BlocksByName(object):
    def __getattr__(self, blockName):
        return FindBlockByName(blockName)

AllBlocks = BlocksByName()


Then you can just refer to AllBlocks.Sidebar or AllBlocks.TableSummaryView and it will look up the block at the right time.

(I'm wondering if there's an even better way to do this at the class level..)

Alec

John Anderson wrote:
Hi Oliver:

I'd probably prefer a scripting function, e.g. BlockNamed (nameArgument), to hard coding methods for each name. If we did this instead, we wouldn't have to add a method each time we have a block with a new name, which makes it more extensible and gets rid of a bunch of code. If you're concerned that this wouldn't work because the current names are too confusing, I'd rename the blocks to use better names.

Also, I'd probably change some of the functions to make them less Chandler specific and more general so they work with future Chandler extensions or non-Chandler CPIA apps, e.g. StampAsXXX, StampAsYYY, StampAsZZZ, should be StampAs (typeArgument).

John

[email protected] wrote:
Revision
6283
Author
olivier
Date
2005-07-29 13:29:13 -0700 (Fri, 29 Jul 2005)

Log Message

Some new block accessors for CPIA script

Modified Paths

Diff

Modified: trunk/chandler/parcels/osaf/framework/scripting/CPIAScript.py (6282 => 6283)

--- trunk/chandler/parcels/osaf/framework/scripting/CPIAScript.py	2005-07-29 20:22:03 UTC (rev 6282)
+++ trunk/chandler/parcels/osaf/framework/scripting/CPIAScript.py	2005-07-29 20:29:13 UTC (rev 6283)
@@ -13,6 +13,7 @@
 import ScriptingGlobalFunctions
 from application import schema
 import wx
+import TestAppLib
 
 logger = logging.getLogger('CPIA Script')
 logger.setLevel(logging.INFO)
@@ -184,6 +185,7 @@
         # @@@DLD TBD - remove
         reload(ScriptingGlobalFunctions)
         reload(KindShorthand)
+        reload(TestAppLib)
 
         # add all the known BlockEvents as builtin functions
         self._BindCPIAEvents(self.itsView, builtIns)

Modified: trunk/chandler/parcels/osaf/framework/scripting/ScriptingGlobalFunctions.py (6282 => 6283)

--- trunk/chandler/parcels/osaf/framework/scripting/ScriptingGlobalFunctions.py	2005-07-29 20:22:03 UTC (rev 6282)
+++ trunk/chandler/parcels/osaf/framework/scripting/ScriptingGlobalFunctions.py	2005-07-29 20:29:13 UTC (rev 6283)
@@ -1,110 +1,130 @@
-__copyright__ = "Copyright (c) 2005 Open Source Applications Foundation"
-__license__ = "http://osafoundation.org/Chandler_0.1_license_terms.htm"
-
-""" Provide Scripting Global Functions """
-
-"""
-  NOTE:
-  ----
-  All globals in this file become attributes of the user's script,
-    unless the name starts with an underscore '_'.
-  This includes things that you import here.
-  Hence imports are done into the private name space.
-"""
-import wx as _wx
-import logging as _logging
-import osaf.framework.blocks.Block as _Block
-import application.Globals as _Globals
-from repository.item.Item import Item as _Item
-
-_logger = _logging.getLogger('CPIA Script')
-_logger.setLevel(_logging.INFO)
-
-# Functions that return a named block
-def FindNamedBlock(blockName):
-    block = _Block.Block.findBlockByName(blockName)
-    if not block:
-        _logger.warning("Can't find block named %s" % blockName)
-    return block
-
-def Sidebar():
-    return FindNamedBlock("Sidebar")
-
-def SummaryView():
-    return FindNamedBlock("TableSummaryView")
-
-def CalendarView():
-    return FindNamedBlock("CalendarSummaryView")
-
-def DetailView():
-    return FindNamedBlock("DetailView")
-
-def StartTime():
-    # The Start time edit field of the Detail View
-    return FindNamedBlock("EditCalendarStartTime")
-
-def EndTime():
-    # The End time edit field of the Detail View
-    return FindNamedBlock("EditCalendarEndTime")
-
-"""
-Special functions, including wxWidgets-related operations
-
-All attributes in this file get added to the builtin module
-for script execution, except for ones that start with "_".
-"""
-def Focus(block):
-    # Set the input focus to the given block
-    try:
-        widget = block.widget
-    except AttributeError:
-        _logger.warning("Can't set focus to block %s" % block)
-    else:
-        widget.SetFocus()
-
-def SidebarSelect(itemOrName):
-    """ Select the item in the Sidebar """
-    # can pass in an item or a name
-    if isinstance(itemOrName, Item):
-        params = {'item':itemOrName}
-    else:
-        params = {'itemName':itemOrName}
-    _Globals.mainViewRoot.postEventByName ('RequestSelectSidebarItem', params)
-    Focus(Sidebar())
+__copyright__ = "Copyright (c) 2005 Open Source Applications Foundation"
+__license__ = "http://osafoundation.org/Chandler_0.1_license_terms.htm"
 
+""" Provide Scripting Global Functions """
+
+"""
+  NOTE:
+  ----
+  All globals in this file become attributes of the user's script,
+    unless the name starts with an underscore '_'.
+  This includes things that you import here.
+  Hence imports are done into the private name space.
+"""
+import wx as _wx
+import logging as _logging
+import osaf.framework.blocks.Block as _Block
+import application.Globals as _Globals
+from repository.item.Item import Item as _Item
+
+_logger = _logging.getLogger('CPIA Script')
+_logger.setLevel(_logging.INFO)
+
+# Functions that return a named block
+def FindNamedBlock(blockName):
+    block = _Block.Block.findBlockByName(blockName)
+    if not block:
+        _logger.warning("Can't find block named %s" % blockName)
+    return block
+
+def Sidebar():
+    return FindNamedBlock("Sidebar")
+
+def SummaryView():
+    return FindNamedBlock("TableSummaryView")
+
+def CalendarView():
+    return FindNamedBlock("CalendarSummaryView")
+
+def DetailView():
+    return FindNamedBlock("DetailView")
+
+def StartTime():
+    # The Start time edit field of the Detail View
+    return FindNamedBlock("EditCalendarStartTime")
+
+def EndTime():
+    # The End time edit field of the Detail View
+    return FindNamedBlock("EditCalendarEndTime")
+
+def DisplayName():
+    # The Display name block of the Detail View
+    return FindNamedBlock("HeadlineBlock")
+
+def Location():
+    # The Location block of the Detail View
+    return FindNamedBlock("AECalendarLocation")
+
+def StartDate():
+    # The Start date edit field of the Detail View
+    return FindNamedBlock("EditCalendarStartDate")
+
+def EndDate():
+    # The End date edit field of the Detail View
+    return FindNamedBlock("EditCalendarEndDate")
+
+def AllDay():
+    # The Allday block of the Detail View
+    return FindNamedBlock("EditAllDay")
+
+"""
+Special functions, including wxWidgets-related operations
+
+All attributes in this file get added to the builtin module
+for script execution, except for ones that start with "_".
+"""
+def Focus(block):
+    # Set the input focus to the given block
+    try:
+        widget = block.widget
+    except AttributeError:
+        _logger.warning("Can't set focus to block %s" % block)
+    else:
+        widget.SetFocus()
+
+def SidebarSelect(itemOrName):
+    """ Select the item in the Sidebar """
+    # can pass in an item or a name
+    if isinstance(itemOrName, Item):
+        params = {'item':itemOrName}
+    else:
+        params = {'itemName':itemOrName}
+    _Globals.mainViewRoot.postEventByName ('RequestSelectSidebarItem', params)
+    Focus(Sidebar())
+
 def SidebarAdd(itemCollection):
     """ Adds the given itemCollection to the sidebar """
     Globals.mainViewRoot.postEventByName ( 'AddToSidebarWithoutCopying', {'items' : [itemCollection]} )
-
-def SummaryViewSelect(item):
-    # Tell the ActiveView to select our item
-    _Globals.mainViewRoot.postEventByName ('SelectItemBroadcastInsideActiveView', {'item':item})
-    Focus(SummaryView())
-
-def StampAsMailMessage():
-    PressStampButton('MailMessageButton')
-
-def StampAsTask():
-    PressStampButton('TaskStamp')
-
-def StampAsCalendarEvent():
-    PressStampButton('CalendarStamp')
-
-def PressStampButton(buttonName):
-    """ Press a Stamp button in the markup bar, by firing its event"""
-    uiView = _wx.GetApp().UIRepositoryView
-    for block in _Block.Block.iterItems(uiView):
-        # Find the live button, by name, and make sure its parent is live too"""
-        try:
-            blockName = block.blockName
-        except AttributeError:
-            continue
-        if blockName == buttonName:
-            if hasattr(block, 'widget') and hasattr(block.dynamicParent, 'widget'):
-                block.post(block.event, {})
-                break
-
 
+def SummaryViewSelect(item):
+    # Tell the ActiveView to select our item
+    _Globals.mainViewRoot.postEventByName ('SelectItemBroadcastInsideActiveView', {'item':item})
+    Focus(SummaryView())
+
+def StampAsMailMessage():
+    PressStampButton('MailMessageButton')
+
+def StampAsTask():
+    PressStampButton('TaskStamp')
+
+def StampAsCalendarEvent():
+    PressStampButton('CalendarStamp')
+
+def PressStampButton(buttonName):
+    """ Press a Stamp button in the markup bar, by firing its event"""
+    uiView = _wx.GetApp().UIRepositoryView
+    for block in _Block.Block.iterItems(uiView):
+        # Find the live button, by name, and make sure its parent is live too"""
+        try:
+            blockName = block.blockName
+        except AttributeError:
+            continue
+        if blockName == buttonName:
+            if hasattr(block, 'widget') and hasattr(block.dynamicParent, 'widget'):
+                block.post(block.event, {})
+                break
+
+
 def GetWindow(label):
     """ Returns the window with the given label """
     return _wx.FindWindowByLabel(label)
@@ -128,15 +148,15 @@
             stringSuccess = stringSuccess and charSuccess
     return stringSuccess
 
-    
-"""
-TO BE DONE
-* Type(<string>) function to take the string and tell wx
-    to act like the user typed it in.
-    (Could add modifier flags using optional parameters)
-* Look at Select(item) method on Block, for SummaryView,
-    Sidebar, etc.  I think Table.GotoItem() method or something
-    like that might work.
-* RunScript(<script> | <scriptNameString>) - run a script
-* Click(<location>) should be possible.
-"""
+    
+"""
+TO BE DONE
+* Type(<string>) function to take the string and tell wx
+    to act like the user typed it in.
+    (Could add modifier flags using optional parameters)
+* Look at Select(item) method on Block, for SummaryView,
+    Sidebar, etc.  I think Table.GotoItem() method or something
+    like that might work.
+* RunScript(<script> | <scriptNameString>) - run a script
+* Click(<location>) should be possible.
+"""

  

_______________________________________________ Commits mailing list [email protected] http://lists.osafoundation.org/mailman/listinfo/commits

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

Open Source Applications Foundation "Dev" mailing list
http://lists.osafoundation.org/mailman/listinfo/dev
  

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

Open Source Applications Foundation "Dev" mailing list
http://lists.osafoundation.org/mailman/listinfo/dev

Reply via email to