[Commits] (donn) Various changes to the Detail View

commits at osafoundation.org commits at osafoundation.org
Thu Sep 16 12:23:15 PDT 2004


Commit by: donn
Modified files:
chandler/parcels/osaf/framework/blocks/detail/Detail.py 1.30 1.31
chandler/parcels/osaf/framework/blocks/detail/parcel.xml 1.26 1.27

Log message:
Various changes to the Detail View
----------------------------------
* Added event.Skip() to DV Lose Focus handler
   - should fix bug 1864 - highlight remaining in edit field
* Now hiding some fields that showed garbage in Contacts DV
* Changed the "Notify" button in DV for Collections
   - now says "Renotify" when already shared
* Added blockName attributes to DV blocks for debugging etc
* Added a DV dump debug method to see which blocks are shown

ViewCVS links:
http://cvs.osafoundation.org/index.cgi/chandler/parcels/osaf/framework/blocks/detail/Detail.py.diff?r1=text&tr1=1.30&r2=text&tr2=1.31
http://cvs.osafoundation.org/index.cgi/chandler/parcels/osaf/framework/blocks/detail/parcel.xml.diff?r1=text&tr1=1.26&r2=text&tr2=1.27

Index: chandler/parcels/osaf/framework/blocks/detail/parcel.xml
diff -u chandler/parcels/osaf/framework/blocks/detail/parcel.xml:1.26 chandler/parcels/osaf/framework/blocks/detail/parcel.xml:1.27
--- chandler/parcels/osaf/framework/blocks/detail/parcel.xml:1.26	Wed Sep 15 11:19:12 2004
+++ chandler/parcels/osaf/framework/blocks/detail/parcel.xml	Thu Sep 16 12:23:13 2004
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="iso-8859-1"?>
 
-<!-- $Revision: 1.26 $ -->
-<!-- $Date: 2004/09/15 18:19:12 $ -->
+<!-- $Revision: 1.27 $ -->
+<!-- $Date: 2004/09/16 19:23:13 $ -->
 <!-- Copyright (c) 2003-2004 Open Source Applications Foundation -->
 <!-- License: http://osafoundation.org/Chandler_0.1_license_terms.htm -->
 
@@ -79,6 +79,7 @@
   <!-- Root -->
   <SelectionContainer itemName="DetailRootTemplate"
                      itemClass="osaf.framework.blocks.detail.Detail.DetailRoot">
+    <blockName value="DetailRootTemplate"/>
     <childrenBlocks itemref="doc:DetailTrunk"/>
     <subscribeWhenVisibleEvents itemref="doc:SendShareItem"/>
     <subscribeWhenVisibleEvents itemref="doc:NULL"/>
@@ -86,8 +87,10 @@
 
   <ContentItemDetail itemName="DetailTrunk">
     <!-- child blocks -->
+    <blockName value="DetailTrunk"/>
     <childrenBlocks itemref="doc:MarkupBar"/>
     <childrenBlocks itemref="doc:FromAndToArea"/>
+    <childrenBlocks itemref="doc:ContactFullNameArea"/>
     <childrenBlocks itemref="doc:CoreIndent"/>
     <childrenBlocks itemref="doc:NotesArea"/>
     <childrenBlocks itemref="doc:SendShareButton"/>
@@ -261,8 +264,8 @@
 
   <!-- FromAndToArea -->
   <ContentItemDetail itsName="FromAndToArea">
+    <blockName value="FromAndToArea"/>
     <childrenBlocks itemref="doc:FromArea"/>
-    <childrenBlocks itemref="doc:ContactFullNameArea"/>
     <childrenBlocks itemref="doc:ToArea"/>
     <!-- Attributes -->
     <orientationEnum>Vertical</orientationEnum>
@@ -270,6 +273,7 @@
  
   <ContentItemDetail itsName="FromArea"
                      itemClass="osaf.framework.blocks.detail.Detail.LabeledTextAttributeBlock">
+    <blockName value="FromArea"/>
     <childrenBlocks itemref="doc:FromString"/>
     <childrenBlocks itemref="doc:FromEditField1"/>
     <!-- Attributes -->
@@ -279,6 +283,7 @@
 
   <StaticText itsName="FromString"
               itemClass="osaf.framework.blocks.detail.Detail.StaticRedirectAttribute">
+    <blockName value="FromString"/>
     <title>From: </title>
     <characterStyle itemref="doc:LabelStyle"/>
     <textAlignmentEnum>Left</textAlignmentEnum>    
@@ -288,6 +293,7 @@
   
   <EditText itsName="FromEditField1"
             itemClass="osaf.framework.blocks.detail.Detail.FromEditField">
+    <blockName value="FromEditField1"/>
     <characterStyle itemref="doc:TextStyle"/>
     <lineStyleEnum>MultiLine</lineStyleEnum>
     <textStyleEnum>PlainText</textStyleEnum>
@@ -298,6 +304,7 @@
 
   <ContentItemDetail itsName="ContactFullNameArea"
                      itemClass="osaf.framework.blocks.detail.Detail.ContactFullNameBlock">
+    <blockName value="ContactFullNameArea"/>
     <childrenBlocks itemref="doc:ContactFullNameString"/>
     <childrenBlocks itemref="doc:ContactFullNameEditField"/>
     <!-- Attributes -->
@@ -306,6 +313,7 @@
   </ContentItemDetail>
 
   <StaticText itsName="ContactFullNameString">
+    <blockName value="ContactFullNameString"/>
     <title>Full Name: </title>
     <characterStyle itemref="doc:LabelStyle"/>
     <textAlignmentEnum>Left</textAlignmentEnum>    
@@ -315,6 +323,7 @@
   
   <EditText itsName="ContactFullNameEditField"
             itemClass="osaf.framework.blocks.detail.Detail.ContactFullNameEditField">
+    <blockName value="ContactFullNameEditField"/>
     <characterStyle itemref="doc:TextStyle"/>
     <lineStyleEnum>SingleLine</lineStyleEnum>
     <textStyleEnum>PlainText</textStyleEnum>
@@ -325,6 +334,7 @@
 
   <ContentItemDetail itsName="ToArea"
                      itemClass="osaf.framework.blocks.detail.Detail.LabeledTextAttributeBlock">
+    <blockName value="ToArea"/>
     <childrenBlocks itemref="doc:ToString"/>
     <childrenBlocks itemref="doc:ToEditField1"/>
     <!-- Attributes -->
@@ -334,6 +344,7 @@
  
   <StaticText itsName="ToString"
               itemClass="osaf.framework.blocks.detail.Detail.StaticRedirectAttribute">
+    <blockName value="ToString"/>
     <title>To: </title>
     <characterStyle itemref="doc:LabelStyle"/>
     <textAlignmentEnum>Left</textAlignmentEnum>    
@@ -343,6 +354,7 @@
   
   <EditText itsName="ToEditField1"
             itemClass="osaf.framework.blocks.detail.Detail.ToEditField">
+    <blockName value="ToEditField1"/>
     <characterStyle itemref="doc:TextStyle"/>
     <lineStyleEnum>MultiLine</lineStyleEnum>
     <textStyleEnum>PlainText</textStyleEnum>
@@ -353,6 +365,7 @@
 
   <!-- CoreIndent -->
   <ContentItemDetail itsName="CoreIndent">
+    <blockName value="DetailRootTemplate"/>
     <childrenBlocks itemref="doc:Indent"/>
     <childrenBlocks itemref="doc:CoreArea"/>
     <childrenBlocks itemref="doc:Indent2"/>
@@ -362,18 +375,21 @@
  
   <ContentItemDetail itsName="Indent">
     <!-- Attributes -->
+    <blockName value="Indent"/>
     <size>80,80</size>
     <stretchFactor>0</stretchFactor>
   </ContentItemDetail>
  
   <ContentItemDetail itsName="Indent2">
     <!-- Attributes -->
+    <blockName value="Indent2"/>
     <size>80,80</size>
     <stretchFactor>0</stretchFactor>
   </ContentItemDetail>
  
   <!-- CoreArea -->
   <ContentItemDetail itsName="CoreArea">
+    <blockName value="CoreArea"/>
     <childrenBlocks itemref="doc:KindLabel"/>
     <childrenBlocks itemref="doc:HeadlineArea"/>
     <childrenBlocks itemref="doc:EmailAddressArea"/>
@@ -387,6 +403,7 @@
  
   <StaticText itsName="KindLabel"
               itemClass="osaf.framework.blocks.detail.Detail.KindLabel">
+    <blockName value="KindLabel"/>
     <title>Kind</title>
     <characterStyle itemref="doc:LabelStyle"/>
     <textAlignmentEnum>Center</textAlignmentEnum>    
@@ -396,6 +413,7 @@
   
   <ContentItemDetail itsName="HeadlineArea"
                      itemClass="osaf.framework.blocks.detail.Detail.LabeledTextAttributeBlock">
+    <blockName value="HeadlineArea"/>
     <childrenBlocks itemref="doc:StaticHeadline"/>
     <childrenBlocks itemref="doc:EditHeadline"/>
     <!-- Attributes -->
@@ -407,6 +425,7 @@
  
   <StaticText itsName="StaticHeadline"
               itemClass="osaf.framework.blocks.detail.Detail.StaticRedirectAttribute">
+    <blockName value="StaticHeadline"/>
     <title>Subject</title>
     <characterStyle itemref="doc:LabelStyle"/>
     <textAlignmentEnum>Center</textAlignmentEnum>    
@@ -415,7 +434,8 @@
   </StaticText>
   
   <EditText itsName="EditHeadline"
-            itemClass="osaf.framework.blocks.detail.Detail.EditRedirectAttribute">
+            itemClass="osaf.framework.blocks.detail.Detail.EditHeadlineRedirectAttribute">
+    <blockName value="EditHeadline"/>
     <characterStyle itemref="doc:TextStyle"/>
     <lineStyleEnum>SingleLine</lineStyleEnum>
     <textStyleEnum>PlainText</textStyleEnum>
@@ -427,6 +447,7 @@
 
   <ContentItemDetail itsName="EmailAddressArea"
                      itemClass="osaf.framework.blocks.detail.Detail.EmailAddressBlock">
+    <blockName value="EmailAddressArea"/>
     <childrenBlocks itemref="doc:StaticEmailAddress"/>
     <childrenBlocks itemref="doc:EditEmailAddress"/>
     <!-- Attributes -->
@@ -438,6 +459,7 @@
  
   <StaticText itsName="StaticEmailAddress"
               itemClass="osaf.framework.blocks.detail.Detail.StaticEmailAddressAttribute">
+    <blockName value="StaticEmailAddress"/>
     <title>home email address</title>
     <characterStyle itemref="doc:LabelStyle"/>
     <textAlignmentEnum>Center</textAlignmentEnum>    
@@ -447,6 +469,7 @@
   
   <EditText itsName="EditEmailAddress"
             itemClass="osaf.framework.blocks.detail.Detail.EditEmailAddressAttribute">
+    <blockName value="EditEmailAddress"/>
     <characterStyle itemref="doc:TextStyle"/>
     <lineStyleEnum>SingleLine</lineStyleEnum>
     <textStyleEnum>PlainText</textStyleEnum>
@@ -458,6 +481,7 @@
 
   <StaticText itsName="DateTime"
               itemClass="osaf.framework.blocks.detail.Detail.DateTimeBlock">
+    <blockName value="DateTime"/>
     <title>Date/Time</title>
     <characterStyle itemref="doc:TextStyle"/>
     <textAlignmentEnum>Center</textAlignmentEnum>    
@@ -467,6 +491,7 @@
   
   <ContentItemDetail itsName="CalendarStartTime"
                      itemClass="osaf.framework.blocks.detail.Detail.CalendarEventBlock">
+    <blockName value="CalendarStartTime"/>
     <childrenBlocks itemref="doc:StaticCalendarStartTime"/>
     <childrenBlocks itemref="doc:EditCalendarStartTime"/>
     <!-- Attributes -->
@@ -478,6 +503,7 @@
  
   <StaticText itsName="StaticCalendarStartTime"
               itemClass="osaf.framework.blocks.detail.Detail.StaticTimeAttribute">
+    <blockName value="StaticCalendarStartTime"/>
     <title>Start Time</title>
     <characterStyle itemref="doc:LabelStyle"/>
     <textAlignmentEnum>Center</textAlignmentEnum>    
@@ -487,6 +513,7 @@
   
   <EditText itsName="EditCalendarStartTime"
             itemClass="osaf.framework.blocks.detail.Detail.EditTimeAttribute">
+    <blockName value="EditCalendarStartTime"/>
     <characterStyle itemref="doc:TextStyle"/>
     <lineStyleEnum>SingleLine</lineStyleEnum>
     <textStyleEnum>PlainText</textStyleEnum>
@@ -498,6 +525,7 @@
 
   <ContentItemDetail itsName="CalendarDuration"
                      itemClass="osaf.framework.blocks.detail.Detail.CalendarEventBlock">
+    <blockName value="CalendarDuration"/>
     <childrenBlocks itemref="doc:StaticCalendarDuration"/>
     <childrenBlocks itemref="doc:EditCalendarDuration"/>
     <!-- Attributes -->
@@ -508,6 +536,7 @@
  
   <StaticText itsName="StaticCalendarDuration"
               itemClass="osaf.framework.blocks.detail.Detail.StaticDurationAttribute">
+    <blockName value="StaticCalendarDuration"/>
     <title>Duration</title>
     <characterStyle itemref="doc:LabelStyle"/>
     <textAlignmentEnum>Center</textAlignmentEnum>    
@@ -517,6 +546,7 @@
   
   <EditText itsName="EditCalendarDuration"
             itemClass="osaf.framework.blocks.detail.Detail.EditDurationAttribute">
+    <blockName value="EditCalendarDuration"/>
     <characterStyle itemref="doc:TextStyle"/>
     <lineStyleEnum>SingleLine</lineStyleEnum>
     <textStyleEnum>PlainText</textStyleEnum>
@@ -529,6 +559,7 @@
   <!-- NotesArea -->
   <EditText itsName="NotesArea"
                    itemClass="osaf.framework.blocks.detail.Detail.NoteBody">
+    <blockName value="NotesArea"/>
     <characterStyle itemref="doc:TextStyle"/>
     <lineStyleEnum>MultiLine</lineStyleEnum>
     <textStyleEnum>RichText</textStyleEnum>
@@ -543,6 +574,7 @@
           itemClass="osaf.framework.blocks.detail.Detail.SendShareButton">
 
     <!-- Attributes -->
+    <blockName value="SendShareButton"/>
     <title>xxxxx</title>
     <buttonKind>Text</buttonKind>
 

Index: chandler/parcels/osaf/framework/blocks/detail/Detail.py
diff -u chandler/parcels/osaf/framework/blocks/detail/Detail.py:1.30 chandler/parcels/osaf/framework/blocks/detail/Detail.py:1.31
--- chandler/parcels/osaf/framework/blocks/detail/Detail.py:1.30	Mon Sep 13 21:19:33 2004
+++ chandler/parcels/osaf/framework/blocks/detail/Detail.py	Thu Sep 16 12:23:13 2004
@@ -1,5 +1,5 @@
-__version__ = "$Revision: 1.30 $"
-__date__ = "$Date: 2004/09/14 04:19:33 $"
+__version__ = "$Revision: 1.31 $"
+__date__ = "$Date: 2004/09/16 19:23:13 $"
 __copyright__ = "Copyright (c) 2004 Open Source Applications Foundation"
 __license__ = "http://osafoundation.org/Chandler_0.1_license_terms.htm"
 
@@ -46,6 +46,10 @@
         item= self.selectedItem()
         assert item is notification.data['item'], "can't track selection in DetailRoot.onSelectionChangedEvent"
         self.synchronizeWidget()
+        if __debug__:
+            dumpSelectionChanged = False
+            if dumpSelectionChanged:
+                self.dumpShownHierarchy ('onSelectionChangedEvent')
 
     def synchronizeDetailView(self, item):
         """
@@ -81,11 +85,46 @@
         for child in children:
             child.isShown = item is not None
             reNotifyInside(child, item)
-    
+
+    if __debug__:
+        def dumpShownHierarchy (self, methodName=''):
+            """ Like synchronizeDetailView, but just dumps info about which
+            blocks are currently shown.
+            """
+            def reNotifyInside(block, item, indent):
+                if not isinstance(block, DynamicContainerBlocks.ToolbarItem):
+                    if block.isShown:
+                        print indent + '+' + block.blockName
+                    else:
+                        print indent + '-' + block.blockName
+                try:
+                    # process from the children up
+                    for child in block.childrenBlocks:
+                        reNotifyInside (child, item, indent + '  ')
+                except AttributeError:
+                    pass
+            item= self.selectedItem()
+            try:
+                itemDescription = item.itsKind.itsName + ' '
+            except AttributeError:
+                itemDescription = ''
+            try:
+                itemDescription += str (item)
+            except:
+                itemDescription += str (item.itsName)
+            print methodName + " " + itemDescription
+            print "-------------------------------"
+            reNotifyInside(self, item, '')
+            print
+
     def synchronizeWidget (self):
         item= self.selectedItem()
         self.synchronizeDetailView(item)
         super(DetailRoot, self).synchronizeWidget ()
+        if __debug__:
+            dumpSynchronizeWidget = False
+            if dumpSynchronizeWidget:
+                self.dumpShownHierarchy ('synchronizeWidget')
         
     def onDestroyWidget (self):
         # Hack - DLDTBD - remove when wxWidgets issue is resolved.
@@ -428,9 +467,10 @@
             widget = self.widget
             self.loadAttributeIntoWidget(item, widget)
         
-    def onLoseFocus (self, notification):
+    def onLoseFocus (self, event):
         # called when we lose focus, to save away the text
         self.saveTextValue()
+        event.Skip()
         
     def OnDataChanged (self):
         # Notification that an edit operation has taken place
@@ -518,6 +558,12 @@
 
 class FromEditField (EditTextAttribute):
     """Edit field containing the sender's contact"""
+    def shouldShow (self, item):
+        # don't show if the item is a Contact
+        contactKind = Contacts.ContactsParcel.getContactKind ()
+        shouldShow = not item.isItemOf (contactKind)
+        return shouldShow
+
     def saveAttributeFromWidget(self, item, widget):  
         pass
 
@@ -560,6 +606,17 @@
             value = ''
         widget.SetValue(value)
 
+class EditHeadlineRedirectAttribute (EditRedirectAttribute):
+    """
+    An attribute-based edit field
+    Doesn't show for contacts.
+    """
+    def shouldShow (self, item):
+        # don't show if the item is a Contact
+        contactKind = Contacts.ContactsParcel.getContactKind ()
+        shouldShow = not item.isItemOf (contactKind)
+        return shouldShow
+
 class SendShareButton (DetailSynchronizer, ControlBlocks.Button):
     def shouldShow (self, item):
         # if the item is a MailMessageMixin, we should show ourself
@@ -574,20 +631,20 @@
             if isinstance (item, ItemCollection.ItemCollection):
                 # collection: label should read "Notify"
                 label = "Notify"
-                # disable this button if the collection is already shared
+                # change the button label if the collection is already shared
                 try:
-                    shouldEnable = not Sharing.isShared (item)
+                    renotify = Sharing.isShared (item)
                 except AttributeError:
-                    shouldEnable = True
+                    pass
                 else:
-                    if not shouldEnable:
-                        label = "Shared"
+                    if renotify:
+                        label = "Renotify"
                 # disable the button if no sharees
                 try:
                     sharees = item.sharees
                 except AttributeError:
                     sharees = []
-                shouldEnable = shouldEnable and len (sharees) > 0
+                shouldEnable = len (sharees) > 0
             else:
                 # not a collection, so it's probably Mail
                 label = "Send"



More information about the Commits mailing list