]> err.no Git - scalable-opengroupware.org/blobdiff - ChangeLog
git-svn-id: http://svn.opengroupware.org/SOGo/inverse/trunk@1305 d1b88da0-ebda-0310...
[scalable-opengroupware.org] / ChangeLog
index fc8949637254a7997a15c9832524f7c4c5d83091..3d5fba87c2c287ae630983797f65a53f41b0bc46 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,510 @@
+2007-12-17  Francis Lachapelle  <flachapelle@inverse.ca>
+
+       * UI/MailerUI/UIxMailMainFrame.m ([UIxMailMainFrame
+       -composeAction]): fixed URL when no recipient is specified.
+
+2007-12-17  Wolfgang Sourdeau  <wsourdeau@inverse.ca>
+
+       * UI/Scheduler/NSArray+Scheduler.m ([NSMutableArray
+       -reverseArray]): new category method.
+
+2007-12-14  Ludovic Marcotte <ludovic@inverse.ca>
+
+       * SoObjects/Appointments/SOGoCalendarComponent.m
+       We set headers in lowercase so that they get properly
+       encoded by SOPE.
+
+       * SoObjects/Mailer/SOGoDraftObject.m
+       Minor cleanups. 
+
+2007-12-13  Francis Lachapelle  <flachapelle@inverse.ca>
+
+       * UI/MailerUI/UIxMailMainFrame.m ([UIxMailMainFrame -saveFoldersStateAction])
+       ([UIxMailMainFrame -getFoldersStateAction]): new methods to get
+       and set the folders state of the user's web view.
+
+2007-12-13  Wolfgang Sourdeau  <wsourdeau@inverse.ca>
+
+       * UI/MainUI/SOGoRootPage.m ([SOGoRootPage -crashAction]): new
+       action methods that generates a segmentation faults.
+       ([SOGoRootPage -exceptionAction]): new method that returns an
+       exception object.
+       ([SOGoRootPage -raisedExceptionAction]): new method that raises an
+       exception without returning it.
+
+       * UI/SOGoUI/UIxComponent.m ([UIxComponent -responseWithStatus:status])
+       ([UIxComponent -responseWithStatus:statusandString:contentString])
+       ([UIxComponent -responseWithStatus:statusandJSONRepresentation:contentObject])
+       ([UIxComponent -responseWith204]): new utility methods.
+
+       * UI/Common/WODirectAction+SOGo.m ([WODirectAction
+       -responseWithStatus:statusandString:contentString])
+       ([WODirectAction
+       -responseWithStatus:statusandJSONRepresentation:contentObject]):
+       new utility methods.
+
+       * SoObjects/SOGo/NSScanner+BSJSONAdditions.m ([NSScanner
+       -scanJSONStringDelimiterString]): new category module taken from
+       BSJSONAdditions 1.3.
+
+       * SoObjects/SOGo/NSDictionary+BSJSONAdditions.[hm]: new category
+       module taken from BSJSONAdditions 1.3.
+       http://blakeseely.com/downloads.html
+
+2007-12-12  Wolfgang Sourdeau  <wsourdeau@inverse.ca>
+
+       * SoObjects/SOGo/NSString+Utilities.m ([NSString
+       -stringByDetectingURLs]): we now go back until the real start of
+       the found url.
+
+       * SoObjects/Mailer/SOGoMailObject.m ([SOGoMailObject
+       -fetchAttachmentIds]): new method that wanders through the mail
+       structure to collect the attachment content ids and to associate
+       them with their url.
+
+       * UI/MailPartViewers/UIxMailPartHTMLViewer.m
+       ([_UIxHTMLMailContentHandler
+       -startElement:_localNamenamespace:_nsrawName:_rawNameattributes:_attributes]):
+       the content-ids are now enclosed between "<>" before retrieval
+       from the attachment dictionary.
+       ([UIxMailPartHTMLViewer -cssContent])
+       ([UIxMailPartHTMLViewer -flatContentAsString]): the content-ids
+       are now fetch from the clientobject (an instance of
+       SOGoMailObject) with the new "fetchAttachmentIds" method.
+
+2007-12-12  Francis Lachapelle  <flachapelle@inverse.ca>
+
+       * UI/Scheduler/UIxCalListingActions.m ([UIxCalListingActions
+       -eventsListAction]): added the state of the calendar's owner with
+       respect to the current event.
+
+       * UI/Scheduler/UIxComponentEditor.m ([UIxComponentEditor
+       -_loadAttendees]): added the retrieval of attendees state on
+       current event.
+
+2007-12-12  Ludovic Marcotte <ludovic@inverse.ca>
+
+       * UI/MailPartViewers/UIxMailRenderingContext.{h,m} 
+       Removed template caching which added very little
+       and created re-entrant issues.
+       
+       * UI/MailPartViewers/UIxMailPartHTMLViewer.m 
+        Added a hack (and stated so in the source file)
+       to avoid what seems to be a bug in libxml. 
+
+2007-12-12  Wolfgang Sourdeau  <wsourdeau@inverse.ca>
+
+       * SoObjects/SOGo/SOGoContentObject.m ([SOGoContentObject
+       -davCreationDate])
+       ([SOGoContentObject -davLastModified])
+       ([SOGoContentObject -davContentLength]): implemented dav methods.
+
+2007-12-10  Francis Lachapelle  <flachapelle@inverse.ca>
+
+       * SoObjects/Mailer/SOGoMailBodyPart.m ([SOGoMailBodyPart
+       -GETAction:]): when asAttachment is set to true, the header
+       "content-disposition" is set to "attachment" so browsers like IE
+       and Safari properly asks the user to save the file.
+
+2007-12-10  Wolfgang Sourdeau  <wsourdeau@inverse.ca>
+
+       * UI/MailPartViewers/UIxMailPartHTMLViewer.m
+       ([UIxMailPartHTMLViewer -flatContentAsString]): when in
+       UIxMailPartAlternative, scan the filenames of potential cid at the
+       same level as our parent.
+
+2007-12-07  Wolfgang Sourdeau  <wsourdeau@inverse.ca>
+
+       * Main/SOGo.m ([SOGo -run]): the table creation script now have a
+       @{tableName} substitution variable to be substitued with the real
+       table name obtained from the configuration variables.
+
+2007-12-07  Ludovic Marcotte <ludovic@inverse.ca>
+
+       * UI/MailPartViewers/UIxMailRenderingContext.m 
+       We treat multipart/appledouble like multipart/mixed
+       for now. That allows the user to save both parts.
+
+       * Corrected typos in Localizable.string files.
+
+2007-12-06  Wolfgang Sourdeau  <wsourdeau@inverse.ca>
+
+       * UI/Common/UIxAclEditor.m ([-currentUserIsOwner]): replaced
+       method with -canModifyAcls that invokes the security manager
+       instead for the permission "SaveAcls" on the client object.
+
+       * SoObjects/Appointments/SOGoCalendarComponent.m
+       ([SOGoCalendarComponent -contentAsString]): securize the returned content.
+       ([SOGoCalendarComponent -aclsForUser:uid]): check whether the user
+       is an organizer or a participant as well.
+
+       * SoObjects/Appointments/SOGoAppointmentObject.m
+       ([SOGoAppointmentObject -changeParticipationStatus:_status]): the
+       user we should change the status of is not the active user but the
+       owner of the object. This is for delegation.
+
+       * SoObjects/Appointments/SOGoAppointmentFolder.m
+       ([SOGoAppointmentFolder -fetchContentObjectNames]): fetch the
+       elements through the fetchFields:from:to:title:component: method
+       method, so that the result is already filtered depending on the
+       acl.
+
+       * UI/Scheduler/UIxComponentEditor.m ([UIxComponentEditor
+       -toolbar]): if the current user is a delegate, take the permission
+       "ModifyComponent" into account. Also, do not let him/her modify an
+       event for which he/she is the organizer.
+
+       * SoObjects/Contacts/SOGoContactLDAPFolder.m
+       ([SOGoContactLDAPFolder -davResourceType]): declared as a carddav
+       addressbook collection.
+
+       * SoObjects/Contacts/SOGoContactGCSFolder.m ([SOGoContactGCSFolder
+       -davResourceType]):  declared as a carddav addressbook collection.
+
+       * SoObjects/SOGo/SOGoObject.m ([SOGoObject -davLastModified]):
+       override SoObject's implementation. Otherwise a localized date is returned.
+
+       * UI/Common/UIxPageFrame.m ([UIxPageFrame -isCalendar])
+       ([UIxPageFrame -isContacts], [UIxPageFrame -isMail]): getters to
+       determine which module is the current one.
+
+2007-12-06  Francis Lachapelle  <flachapelle@inverse.ca>
+
+       * UI/Scheduler/NSArray+Scheduler.m ([NSArray -compareEventsTitleAscending:otherEvent])
+       ([NSArray -compareEventsLocationAscending:otherEvent])
+       ([NSArray -compareEventsEndDateAscending:otherEvent])
+       ([NSArray -reversedArray]): new methods that sort an array of
+       events depending of various parameters.
+
+       * UI/Scheduler/UIxCalListingActions.m ([UIxCalListingActions
+       -eventsListAction]): added support for sorting events.
+
+2007-12-06  Wolfgang Sourdeau  <wsourdeau@inverse.ca>
+
+       * UI/MailerUI/UIxMailEditor.m ([UIxMailEditor -saveAction])
+       ([UIxMailEditor -sendAction]): make sure that the attachments
+       having the same filename are correctly sequenced (ex: base.ext,
+       base-1.ext, base-2.ext).
+
+       * SoObjects/Mailer/SOGoMailBodyPart.m ([SOGoMailBodyPart
+       -fetchBLOB]): added support for quoted-printable decoding. Also,
+       we return nil if the type is not supported.
+
+2007-12-05  Wolfgang Sourdeau  <wsourdeau@inverse.ca>
+
+       * UI/Scheduler/UIxTaskEditor.m ([UIxTaskEditor -newAction]):
+       create task obejcts with the .ics extension.
+
+       * UI/Scheduler/UIxAppointmentEditor.m ([UIxAppointmentEditor
+       -newAction]): create appointment objects with the .ics extension.
+
+       * UI/Contacts/UIxContactEditor.m ([UIxContactEditor -newAction]):
+       create objects with the .vcf extension.
+
+       * Main/NSException+Stacktrace.m: added missing symbols from
+       NSException.m and NSDebug.m (GNUstep).
+
+       * UI/MainUI/SOGoUserHomePage.m ([SOGoUserHomePage
+       -foldersSearchAction]): make use of the new search methods in
+       SOGoUserFolder (see below).
+
+       * UI/Contacts/UIxContactFoldersView.m ([-foldersSearchAction]):
+       moved method into ../MainUI/SOGoUserHomePage.m.
+
+       * SoObjects/SOGo/SOGoUserFolder.m ([SOGoUserFolder
+       -foldersOfType:folderTypeforUID:uid]): only return folders owned
+       by the specified user.
+
+2007-12-05  Francis Lachapelle  <flachapelle@inverse.ca>
+
+       * SoObjects/Mailer/SOGoDraftObject.m: the condition for replyToAll
+       has to be done later to avoid duplicated to and cc addresses.
+
+2007-12-04  Wolfgang Sourdeau  <wsourdeau@inverse.ca>
+
+       * SoObjects/Appointments/SOGoAppointmentFolder.m
+       ([SOGoAppointmentFolder -davCalendarQuery:queryContext]): fixed a leak.
+
+       * SoObjects/SOGo/SOGoGCSFolder.m ([SOGoGCSFolder -davSubscribe:localContext])
+       ([SOGoGCSFolder -davUnsubscribe:localContext]): subscribe an
+       unsubscribe from DAV-based accesses. We could be compatible with
+       Microsoft's extensions but we have no need for a "subcription id",
+       so we implement our own.
+
+       * SoObjects/SOGo/SOGoObject.m ([SOGoObject
+       -POSTAction:localContext]): new method to intercept DAV POSTs,
+       which we now use to implement certain custom commands such as
+       "subscribe" and "unsubscribe".
+
+       * SoObjects/SOGo/SOGoUserFolder.m ([SOGoUserFolder
+       -davNamespaces]): declare the
+       "urn:inverse:params:xml:ns:inverse-dav" xml ns.
+       ([SOGoUserFolder -foldersOfType:folderTypeforUID:uid]): new method
+       designed to replace the UIxContactFoldersView.m mechanism for
+       displaying folders to subcribe to, as a common code base for both
+       Web and DAV-based subscriptions.
+       ([SOGoUserFolder -foldersOfType:typematchingUID:uid]): same as
+       above.
+       ([SOGoUserFolder -davCollectionQuery:queryContext]): new method
+       that implement a custom DAV-based protocol query for querying
+       folder based on specified attributes.
+
+2007-12-03  Ludovic Marcotte <ludovic@inverse.ca>
+
+       * Main/NSException+Stacktrace.{h,m} - new files
+       to handle automatic stack trace generation
+       upon an uncaught exception.
+
+       * Updated the templates and Localizable.string files
+       to fix typos and add new strings.
+
+       * SoObjects/Mailer/SOGoMailBodyPart.m
+       Fixed attachment retreival when the first character
+       is a digit.
+
+       * SoObjects/SOGo/SOGoGCSFolder.m
+       Fixed the sending of emails when folders are created/removed.
+       Notifications are sent if the defaults SOGoFoldersSendEMailNotifications
+       is set to YES.
+
+       * UI/Common/UIxUserRightsEditor.m
+       * UI/Templates/SOGoACLEnglishModificationAdvisory.wox
+       * UI/Templates/SOGoACLFrenchModificationAdvisory.wox
+       * UI/Templates/SOGoACLGermanModificationAdvisory.wox
+       Added the capabilities to email notifications when ACLs have
+       changed on a DAV collection or an IMAP mailbox. Also added
+       new templates (3 .wox) to deal with this. 
+
+       * UI/WebServerResources/ContactsUI.js
+       UI/WebServerResources/SchedulerUI.js
+       Added warnings on operations w/o selection.
+
+2007-11-30  Wolfgang Sourdeau  <wsourdeau@inverse.ca>
+
+       * SoObjects/SOGo/SOGoParentFolder.m ([SOGoParentFolder
+       -appendSubscribedSources]): don't include sources for which we
+       don't have the SOGoPerm_AccessObject permission.
+
+       * SoObjects/SOGo/NSCalendarDate+SOGo.m ([NSCalendarDate
+       -rfc822DateString]): we want positive timezones to be specified
+       with a leading "+" too.
+
+2007-11-29  Wolfgang Sourdeau  <wsourdeau@inverse.ca>
+
+       * SoObjects/SOGo/SOGoGCSFolder.m ([SOGoGCSFolder
+       +folderWithSubscriptionReference:referenceinContainer:aContainer]):
+       return nil if the subscribed folder has no display name (meaning
+       it no longer exists).
+
+       * SoObjects/SOGo/SOGoParentFolder.m ([SOGoParentFolder
+       -appendPersonalSources]): don't include sources which are no
+       longer existing.
+
+       * SoObjects/SOGo/SOGoContentObject.m ([SOGoContentObject
+       -ocsPathOfContainer]): return the intended value, not that of
+       ocsPath...
+
+       * SoObjects/Appointments/SOGoCalendarComponent.m
+       ([SOGoCalendarComponent -sendResponseToOrganizer]): send the
+       message only of sendEMailNotifications is set.
+
+       * SoObjects/SOGo/SOGoObject.m ([SOGoObject -subscriptionRoles]):
+       new method that returns the roles that qualifies for adding the
+       special "authorized subscribed" sogo role.
+
+2007-11-27  Wolfgang Sourdeau  <wsourdeau@inverse.ca>
+
+       * SoObjects/SOGo/SOGoContentObject.m ([SOGoContentObject
+       -aclsForUser:uid]): copy all the roles from the container. If the
+       object is new, make sure the roles contain "ObjectEditor" if and
+       only if "ObjectCreator" is present.
+
+       * SoObjects/SOGo/SOGoGCSFolder.m ([SOGoGCSFolder
+       -aclsForUser:uid]): no longer take the "ObjectReader" role into
+       account.
+
+       * UI/Common/UIxFolderActions.m ([UIxFolderActions
+       -canAccessContentAction]): always return HTTP status 204. We want
+       this because we are relying on the SOPE access control manager to
+       grant access to this method. This requires a fine-tuned access
+       control in SOGo itself...
+
+       * UI/Contacts/UIxContactsUserRightsEditor.m ([-userCanReadObjects])
+       ([-setUserCanReadObjects:userCanReadObjects]): removed methods.
+
+       * UI/MailerUI/UIxMailUserRightsEditor.m ([UIxMailUserRightsEditor
+       -updateRights]): no longer take the "ObjectReader" role into account.
+       ([-userCanReadMails], [-setUserCanReadMails:userCanReadMails]):
+       removed methods.
+
+       * SoObjects/Appointments/SOGoFreeBusyObject.m ([SOGoFreeBusyObject
+       -fetchFreeBusyInfosFrom:_startDateto:_endDate]): specify context
+       when looking up the Calendar folder.
+
+2007-11-26  Wolfgang Sourdeau  <wsourdeau@inverse.ca>
+
+       * UI/Scheduler/UIxTaskEditor.m ([UIxTaskEditor -todo]): same as below.
+
+       * UI/Scheduler/UIxAppointmentEditor.m ([UIxAppointmentEditor
+       -event]): create the event if it doesn't exist.
+
+       * UI/PreferencesUI/UIxPreferences.m ([UIxPreferences -userHasCalendarAccess])
+       ([UIxPreferences -userHasMailAccess]): same as below, for
+       displaying preference tabs.
+
+       * UI/Common/UIxPageFrame.m ([UIxPageFrame
+       -userHasCalendarAccess]): new accessor for the link banner.
+       ([UIxPageFrame -userHasMailAccess]): same as above.
+
+       * SoObjects/SOGo/SOGoUserFolder.m ([SOGoUserFolder
+       -toManyRelationshipKeys]): do not report the path to modules to
+       which the user has no access. No longer cache this information
+       statically, the array will be generated at each call.
+       ([SOGoUserFolder -lookupName:_keyinContext:_ctxacquire:_flag]):
+       ignore the path to modules to which the user has no access.
+
+       * SoObjects/SOGo/SOGoUser.m ([SOGoUser -canAccessModule:module]):
+       new method that returns whether the user has access to the
+       specified module.
+
+       * SoObjects/SOGo/LDAPSource.m ([LDAPSource
+       -initFromUDSource:udSource]): take a new parameter named
+       'ModulesContraints' that defines a set of constraints for
+       accessing specified named modules. This is an optout, meaning the
+       modules will be present unless a constraint is specified.
+
+       * SoObjects/Appointments/SOGoAppointmentFolder.m
+       ([SOGoAppointmentFolder
+       -roleForComponentsWithAccessClass:accessClassforUser:uid]): cache
+       acl to reduce method calls.
+       ([SOGoAppointmentFolder
+       -fetchFields:_fieldsfromFolder:_folderfrom:_startDateto:_endDatetitle:titlecomponent:_component]):
+       if the user is not the current user, we strip the useless info
+       from the meta data.
+
+       * UI/Common/WODirectAction+SOGo.m ([WODirectAction
+       -labelForKey:key]): new category method.
+
+       * UI/Scheduler/UIxAppointmentEditor.m ([UIxAppointmentEditor
+       -event]): same as below.
+
+       * UI/Scheduler/UIxTaskEditor.m ([UIxTaskEditor -todo]): request a
+       secured version of the component.
+
+       * UI/MailPartViewers/UIxMailPartViewer.m
+       ([-fallbackStringEncoding]): removed method.
+       ([UIxMailPartViewer -flatContentAsString]): we no longer use [self
+       fallbackStringEncoding]. Instead we directly specify
+       NSISOLatin1StringEncoding if UTF-8 has failed.
+
+       * UI/MailPartViewers/UIxMailPartICalViewer.m
+       ([-fallbackStringEncoding]): removed method.
+
+2007-11-25  Ludovic Marcotte <ludovic@inverse.ca>
+
+        * SoObjects/Mailer/SOGoMailForward.m
+        Use [sourceMail decodedSubject] instead of [sourceMail subject]
+        Signature fix in -signature - see the comment
+        for SOGoMailReply.
+
+        * SoObjects/Mailer/SOGoMailObject.m
+        Improved -stringFromData: to try UTF-8 then fallback to Latin1
+
+        * SoObjects/Mailer/SOGoMailReply.m
+        Modified -messageBody to strip the signature from the reply.
+        Also modified -signature to add "-- \n%@" instead of the
+        broken ""--\r\n%@" pattern.
+
+        * UI/MailPartViewers/UIxMailPartAlternativeViewer.m
+        We now favor text/calendar parts over text/html and
+        text/plain parts when viewing a multipart/alternative mail.
+        This allows us to show the email invitations coming from
+        Microsoft Outlook.
+
+        * UI/MailerUI/UIxMailAccountActions.m
+        Signature fix in -composeAction - see the comment
+        for SOGoMailReply.
+
+        * UI/MailPartViewers/UIxMailPartViewer.m
+        Modified -flatContentAsString to use UTF-8 as the
+        default fallback encoding for 8-bit content.
+
+       * SoObjects/Mailer/SOGoDraftObject.m
+       Modified _fillInReplyAddresses:replyToAll:envelope:
+       so that if there's no recipient, we add at least
+       ourself to the list.    
+       Fixed a mem leak in the same method.
+       
+2007-11-22  Wolfgang Sourdeau  <wsourdeau@inverse.ca>
+
+       * UI/MailPartViewers/UIxMailRenderingContext.m
+       ([UIxMailRenderingContext -viewerForBodyInfo:_info]): same as below.
+
+       * SoObjects/Mailer/SOGoMailObject.m ([SOGoMailObject
+       -plainTextContentFetchKeys]): same as below.
+
+       * SoObjects/Mailer/SOGoMailBodyPart.m ([SOGoMailBodyPart
+       +bodyPartClassForMimeType:mimeTypeinContext:_ctx]): accept the
+       application/ics type from Google Calendar.
+
+       * SoObjects/SOGo/NSCalendarDate+SOGo.m ([NSCalendarDate
+       +distantFuture]): rewrote method to return an object that is
+       compatible with NSCalendarDate, unlike the implementation in
+       GNUstep.
+       ([NSCalendarDate +distantPast]): same as above.
+
+2007-11-21  Wolfgang Sourdeau  <wsourdeau@inverse.ca>
+
+       * UI/MailPartViewers/UIxMailPartHTMLViewer.m: fixed infinite loop
+       when charset is us-ascii, match it to ascii rather than none.
+
+       * SoObjects/Appointments/SOGoAppointmentFolder.m
+       ([SOGoAppointmentFolder
+       -fetchFields:_fieldsfromFolder:_folderfrom:_startDateto:_endDatetitle:titlecomponent:_component]):
+       added search on the c_title column too.
+
+       * UI/Scheduler/UIxCalListingActions.m ([UIxCalListingActions
+       -eventsListAction]): take the "search" url parameter into account.
+       ([UIxCalListingActions -eventsListAction]): fetch events matching
+       the title filter too.
+
+       * UI/MainUI/SOGoRootPage.m ([SOGoRootPage -connectAction]): the
+       user infos are now posted as "application/x-www-form-urlencoded".
+       So we have to have like a form has been posted.
+
+2007-11-21  Francis Lachapelle  <flachapelle@inverse.ca>
+
+       * UI/Scheduler/UIxComponentEditor.m ([UIxComponentEditor
+       -calendarList]): also returns the calendar of the current
+       event. This is required so the proper calender is selected when
+       you view an event to which you don't have write access.
+
+       * UI/Common/UIxAclEditor.m ([UIxAclEditor -currentUserIsOwner]): 
+       also returns true for super users.
+
+2007-11-21  Wolfgang Sourdeau  <wsourdeau@inverse.ca>
+
+       * SoObjects/Mailer/SOGoMailObject.m ([SOGoMailObject
+       -lookupImap4BodyPartKey:inContext:]): return a correct body part
+       when "0" is requested, taking its mime-type into account.
+
+       * UI/MailPartViewers/UIxMailRenderingContext.m
+       ([UIxMailRenderingContext -flatContentForPartPath:_partPath]):
+       return content for part "0", which would be the message body.
+
+2007-11-20  Wolfgang Sourdeau  <wsourdeau@inverse.ca>
+
+       * UI/MailPartViewers/UIxMailPartHTMLViewer.m
+       ([_UIxHTMLMailContentHandler
+       -setContentEncoding:newContentEncoding]): new method that
+       specifies an xml charset to return to the parser.
+       ([UIxMailPartHTMLViewer -flatContentAsString]): specifies the
+       charset to the content handler before parsing.
+
+       * SoObjects/Appointments/SOGoAppointmentObject.m: don't take an
+       empty c_name as a valid response when looking up an event. Create
+       one in that case instead.
+
 2007-11-19  Wolfgang Sourdeau  <wsourdeau@inverse.ca>
 
        * UI/PreferencesUI/UIxPreferences.m ([UIxPreferences -signature]):