Squeak Class Documentation category index | class index  
 
Celeste
  category: Network-Mail Reader
  superclass: Model
  subclasses:

I am the core of a mail reading and organizing program. The name "Celeste" is a reference to an earlier mail reader named "Babar", which was written at Xerox PARC by Steve Putz and John Maloney.

This object provides a user interface and some higher-level functionality for the application. The foundation of of the mail reader is really the mail database, implemented by the class MailDB.

Implementation note: the 'mailDB' instance variable can be nil. This way, it is possible to have a Celeste window with no DB currently loaded. All user-accessible functions that access mailDB should be careful to quietly do nothing if mailDB is nil.

instance methods
  accessing
  tocLists

  categories pane
  addCategory
cacheTOC
categoriesKeystroke:
category
categoryList
categoryMenu:
compact
emptyTrash
exportCategory
exportCategoryUnix
fetchMail
findDuplicates
importIntoCategory
maxMessagesToDisplay
messages:from:
messagesOnServerString
nextCategory
previousCategory
removeCategory
renameCategory
save
setCCList
setCategory:
setPopServer
setPopUserName
setSmtpServer
setUserName
suppressingHeadersString
toggleKeepMessagesOnServer
toggleSuppressHeaders
viewAllMessages

  drag and drop
  acceptDroppingMorph:event:inMorph:
dragPassengerFor:inMorph:
dragTransferTypeForMorph:
wantsDroppedMorph:event:inMorph:

  filtering
  chooseFilterFor:from:
chooseFilterForCurrentMessage
customFilterMove
customFilterNamed:
customFilterOff
customFilterOn
defineFilter
deleteFilter
editCategoryFilter
editFilter
editFilterNamed:
editFilterNamed:filterExpr:
filterNames
filteredMessagesIn:
filtersFor:from:
isCustomFilterOn
isParticipantFilterOn
isSubjectFilterOn
makeFilterFor:
normalizedSubject:
participantFilterOn
selectFilterFrom:
subjectFilterOn

  initialize variables
  initializeTocLists

  message text pane
  compose
doItContext
doItReceiver
format
formatedMessageText
forward
message
messageMenu:shifted:
messageText
messageText:
messageTextIfNoDB
messageTextView:
reply

  open-close
  close
isActive
openDefaultDatabase
openOnDatabase:
windowIsClosing

  other
  changeMaxMessageCount
clearUserEditFlag
currentMessage
okToChange
outBoxStatus
perform:orSendTo:
requiredCategory:
status
status:

  sending mail
  composeText
forwardTextFor:
openSender:
popPassword
preSendAuthentication
queueMessageWithText:
replyTextFor:
sendMail:
sendQueuedMail
timeZoneString

  table of contents pane
  autoFile
autoMove
deleteAll
deleteMessage
displayMessage:
fileAgain
fileAll
fileMessage
getCategoryNameIfNone:
moveAgain
moveAll
moveMessage
msgIDFromTOCEntry:
nextMessage
otherCategories
partsMenu
previousMessage
removeAll
removeMessage
removeMessage:
saveMessage
search
setTOCEntry:
tocEntry
tocEntryList
tocKeystroke:
tocMenu:
updateTOC

class methods
  accessing
  messageCountLimit
messageCountLimit:

  build-common
  defaultWindowTitle

  build-morphic
  addLowerMorphicViews:andButtons:to:offset:
addMorphicButtons:to:at:plus:
addMorphicStatusPaneTo:from:at:plus:
addMorphicTextPaneTo:from:at:plus:
addMorphicViews:andButtons:to:
buildMorphicCategoryListFor:
buildMorphicMessageTextPaneFor:
buildMorphicOutBoxStatusPaneFor:
buildMorphicStatusPaneFor:
buildMorphicTocEntryListFor:
buildMorphicViewsFor:
buildTopMorphicWindowTitled:model:
morphicButtonRowFrom:
morphicButtonsClass

  build-mvc
  addMVCViews:andButtons:to:
buildTopMVCWindowTitled:model:
buildViewsFor:

  button specs
  specForComposeButton
specForCustomFilterButton
specForCustomFilterMoveButton
specForDeleteButton
specForForwardButton
specForMoveAgainButton
specForParticipantFilterButton
specForReplyButton
specForSubjectFilterButton

  class initialization
  initialize
versionString

  common build
  buildButtonFromSpec:forModel:
buildButtonFromSpec:withBlock:
buildButtonsFor:
newOpenableMorph
openOnDatabase:
specificationFromList:at:

  filters
  makeFilterFor:

  instance creation
  current
defaultDBName
onDatabase:
open
openOn:

  options
  includeStatusPane
showAttachmentsFlag

  sending
  eudoraSeparator

  user preferences
  ccList
isSmtpServerSet
popServer
popUserName
setCCList
setPopServer
setPopUserName
setSmtpServer
setTimeZone
setUserName
smtpServer
userName
userTimeZone

instance methods
  accessing top  
 

tocLists

Generated - Return the value of tocLists.


  categories pane top  
 

addCategory

Create a new category with the user-specified name. This does nothing if the category already exists.


 

cacheTOC

Caches a version of the TOC


 

categoriesKeystroke:


 

category

Answer the currently selected category or nil.


 

categoryList

Answer a list of categories for the categories pane.


 

categoryMenu:

Answer the menu for the categories pane.


 

compact

Salvage and Compact the messages file.


 

emptyTrash

Delete all messages in the '.trash.' category.
WARNING: The messages will be totally removed from the Celeste index, and the .messages file will be marked so that the message contents are removed when it is next compressed.


 

exportCategory

Store the filtered message list of the current category to another mail database. The user is prompted for the name of the other database.


 

exportCategoryUnix

Store the filtered message list of the current category into a Eudora/Unix database


 

fetchMail

Append messages from the user's mailbox to this mail database.


 

findDuplicates

Find duplicate messages, and move the redundant copies to a given category.


 

importIntoCategory

Add the messages from a Unix or Eudora format file into this category


 

maxMessagesToDisplay

return the maximum number of mesasges to display at one time; the
motivation is that huge lists of messages are impractical


 

messages:from:


 

messagesOnServerString


 

nextCategory

Select the next category.


 

previousCategory

Select the next category.


 

removeCategory

Remove the existing category with the user-specified name.


 

renameCategory

Rename the category with the user-specified name.


 

save

Snapshot the database to disk.


 

setCCList

Change the default cc: list for use in composing messages.


 

setCategory:

Change the currently selected category. We must also compute the table
of contents and message list for the new category.


 

setPopServer


 

setPopUserName


 

setSmtpServer


 

setUserName

Change the user's email name for use in composing messages.


 

suppressingHeadersString


 

toggleKeepMessagesOnServer


 

toggleSuppressHeaders


 

viewAllMessages


  drag and drop top  
 

acceptDroppingMorph:event:inMorph:

Accept messageIDs from the tocEntryList. Move the indicated message to the destination category.


 

dragPassengerFor:inMorph:

Create a information string representing the message to drag (and display while dragging)


 

dragTransferTypeForMorph:


 

wantsDroppedMorph:event:inMorph:

We are only interested in TransferMorphs as wrappers for
informations. If their content is really interesting for us, will
determined later in >>acceptDroppingMorph:event:.


  filtering top  
 

chooseFilterFor:from:


 

chooseFilterForCurrentMessage

automatically choose a filter to move the selected message. Returns nil if there isn't a message selected, or if there isn't exactly 1 matching filter


 

customFilterMove

Select or define and activate a custom filter.


 

customFilterNamed:


 

customFilterOff

Cancel custom filtering.


 

customFilterOn

Select or define and activate a custom filter.


 

defineFilter


 

deleteFilter


 

editCategoryFilter


 

editFilter


 

editFilterNamed:


 

editFilterNamed:filterExpr:


 

filterNames

return a sorted list of custom filter names


 

filteredMessagesIn:


 

filtersFor:from:


 

isCustomFilterOn

whether there is a custom filter in effect


 

isParticipantFilterOn

return whether a non-trivial participant filter is installed


 

isSubjectFilterOn

whether there is a subject filter in effect


 

makeFilterFor:


 

normalizedSubject:

Turn the raw subject line into a decent possible subject filter


 

participantFilterOn

Show only those messages where a specified user is either the sender or a receiver.


 

selectFilterFrom:


 

subjectFilterOn

Show only those messages whose subject matches the currently selected
message. The user is given a chance to edit the pattern string used to match
'Subject:' fields.


  initialize variables top  
 

initializeTocLists


  message text pane top  
 

compose

Make a MailSendTool for composing a new message.


 

doItContext


 

doItReceiver


 

format


 

formatedMessageText

Answer a string that is my formatted mail message.


 

forward

Make a MailSendTool for forwarding the current message.


 

message

Answer the text of the currently selected message or nil if there isn't one.


 

messageMenu:shifted:

Use the standard text menu.


 

messageText

Answer the text which makes up the complete message (header+body)


 

messageText:


 

messageTextIfNoDB

return text to display to the user if there is no DB opened


 

messageTextView:


 

reply

Make a MailSendTool for replying to the current message.


  open-close top  
 

close

Close the mail database.


 

isActive


 

openDefaultDatabase

open the default database, creating it if it isn't present


 

openOnDatabase:

Initialize myself for the mail database with the given root filename.


 

windowIsClosing

Close the mail database when my window is closed.


  other top  
 

changeMaxMessageCount


 

clearUserEditFlag


 

currentMessage


 

okToChange

This message is sent when changing the selection in either the message cateory or message list panes. Eventually, this should ask the user if it is okay to throw away and unaccepted edits of the current message. For now, it always gives permission.


 

outBoxStatus


 

perform:orSendTo:

Celeste handles all menu commands.


 

requiredCategory:

catName is a required category. If it does not exist in the database, then create it, and update the category list to reflect that it now exists.


 

status


 

status:


  sending mail top  
 

composeText

Answer the template for a new message.


 

forwardTextFor:

Answer the template for forwarding the message with the given ID.


 

openSender:


 

popPassword

Answer the password to use when retrieving mail via POP3. The password is stored in an instance variable, which disappears when you close the Celeste window.


 

preSendAuthentication

Where required, authenticate ourselves to the SMTP server before sending mail


 

queueMessageWithText:

Queue a message to be sent later. The message is added to the database
and filed in the '.tosend.' category.


 

replyTextFor:

Answer the template for a reply to the message with the given ID.


 

sendMail:

Send <aCollectionOfMessages> to the SMTP server.


 

sendQueuedMail

Post queued messages to the SMTP server.


 

timeZoneString


  table of contents pane top  
 

autoFile

automatically pick a folder for the current message, and file the current message there


 

autoMove

automatically pick a folder for the current message, and move the message there


 

deleteAll

Move all visible messages in the current category to '.trash.'.


 

deleteMessage

Move the current message to the '.trash.' category and select the next
message. Deleted messages can later purged by the 'empty trash' menu
item


 

displayMessage:

If the message is in our displayed category, show it


 

fileAgain

File the current message in the same category as last time.


 

fileAll

File all visible messages in the current category in some other category as well.


 

fileMessage

File the current message in another category.


 

getCategoryNameIfNone:

Prompt the user for a category name


 

moveAgain

Move the current message to the same category as last time.


 

moveAll

Move all visible messages in the current category to another category.


 

moveMessage

Move the current message to another category; this consists of filing it in the new category, and then removing it from the current category


 

msgIDFromTOCEntry:

Given an entry index number from the TOC pane, find the corresponding msgID


 

nextMessage

Select the next message.


 

otherCategories

Prompt the user with a menu of all other categories in which the currently selected message appears. If the user chooses a category from this menu, go to that category.


 

partsMenu

Show a menu listing all the parts of this message, and let the user save the chosen part to a file


 

previousMessage

Select the previous message.


 

removeAll

Remove all presently listed messages from the current category.


 

removeMessage


 

removeMessage:

Remove the message from the current category and update the display. This is done in a way that avoids having to regenerate the TOC list and thus is pretty fast


 

saveMessage

save the currently selected message to a file


 

search

Search the text of all messages in the present category


 

setTOCEntry:

Change the currently selected message. This is done by finding the
message ID corresponding to the selected table of contents entry.


 

tocEntry

Answer the table of contents entry for the currently selected message
or nil.


 

tocEntryList


 

tocKeystroke:


 

tocMenu:

Answer the menu for the table of contents pane.


 

updateTOC

Update the table of contents after a moving, removing, or deleting a message.
Select a message near the removed message in the table of contents if possible.


class methods
  accessing top  
 

messageCountLimit


 

messageCountLimit:


  build-common top  
 

defaultWindowTitle


  build-morphic top  
 

addLowerMorphicViews:andButtons:to:offset:


 

addMorphicButtons:to:at:plus:


 

addMorphicStatusPaneTo:from:at:plus:


 

addMorphicTextPaneTo:from:at:plus:


 

addMorphicViews:andButtons:to:


 

buildMorphicCategoryListFor:


 

buildMorphicMessageTextPaneFor:


 

buildMorphicOutBoxStatusPaneFor:


 

buildMorphicStatusPaneFor:


 

buildMorphicTocEntryListFor:


 

buildMorphicViewsFor:

Answer a dictionary of window panes for the Celeste user interface.


 

buildTopMorphicWindowTitled:model:


 

morphicButtonRowFrom:


 

morphicButtonsClass


  build-mvc top  
 

addMVCViews:andButtons:to:


 

buildTopMVCWindowTitled:model:


 

buildViewsFor:

Answer a collection of window panes for the Celeste user interface.


  button specs top  
 

specForComposeButton

action label helpText


 

specForCustomFilterButton

getState action label helpText


 

specForCustomFilterMoveButton

getState action label helpText


 

specForDeleteButton

action label helpText


 

specForForwardButton

action label helpText


 

specForMoveAgainButton

action label helpText


 

specForParticipantFilterButton

getState action label helpText


 

specForReplyButton

action label helpText


 

specForSubjectFilterButton

getState action label helpText


  class initialization top  
 

initialize

Celeste initialize


 

versionString

Answer a short string describing this version of Celeste.


  common build top  
 

buildButtonFromSpec:forModel:


 

buildButtonFromSpec:withBlock:


 

buildButtonsFor:

Answer a collection of handy buttons for the Celeste user interface.


 

newOpenableMorph

Answer window for a MailReader on a blank database.


 

openOnDatabase:

Open a MailReader on the given mail database.


 

specificationFromList:at:


  filters top  
 

makeFilterFor:

compile a given custom filter


  instance creation top  
 

current

Answer the currently active Celeste (assuming that there's
only one Celeste open at a given time) or open a new one.


 

defaultDBName

return the default database name to access


 

onDatabase:

open a Celeste on the given MailDB


 

open

Open a MailReader on the default mail database.


 

openOn:

Open a MailReader on the mail database with the given root filename.


  options top  
 

includeStatusPane


 

showAttachmentsFlag


  sending top  
 

eudoraSeparator

Return a Eudora-style message separator string.


  user preferences top  
 

ccList

Answer the default cc list to be used in composing messages.


 

isSmtpServerSet


 

popServer

Answer the server for downloading email via POP


 

popUserName

Answer the user's username on the POP server


 

setCCList

Change the list of names used in the default cc list. Items in the list should be valid mail addresses and should be separated by commas.


 

setPopServer

Change the user's email name for use in composing messages.


 

setPopUserName

set the POP server used for downloading email


 

setSmtpServer

Set the SMTP server used to send outgoing messages via


 

setTimeZone


 

setUserName

Change the user's email name for use in composing messages.


 

smtpServer

Answer the server for sending email


 

userName

Answer the user name to be used in composing messages.


 

userTimeZone

Answer the user's timezone string to be used when sending messages.