示例#1
0
/******************************************************************
 Initialzes the addressbook window
*******************************************************************/
static void addressbook_init(void)
{
	Object *new_person_button, *change_button, *new_group_button, *save_button, *delete_button;
	Object *to_button;

	init_hook(&address_construct_hook, (HOOKFUNC)address_construct);
	init_hook(&address_destruct_hook, (HOOKFUNC)address_destruct);
	init_hook(&address_display_hook, (HOOKFUNC)address_display);

	address_wnd = WindowObject,
		MUIA_Window_ID, MAKE_ID('A','D','B','K'),
    MUIA_Window_Title, "SimpleMail - Addressbook",
        
		WindowContents, VGroup,
			Child, HGroup,
				Child, VGroup,
					MUIA_Weight,0,
					Child, to_button = MakeButton("_To:"),
					Child, MakeButton("_CC:"),
					Child, MakeButton("_BCC:"),
					End,
				Child, HGroup,
					Child, save_button = MakePictureButton("_Save","PROGDIR:Images/Save"),
/*					Child, MakeButton("Search"),*/
					Child, new_person_button = MakePictureButton("_Person","PROGDIR:Images/User"),
/*					Child, MakeButton("New List"),*/
					Child, new_group_button = MakePictureButton("_Group","PROGDIR:Images/Group"),
					Child, change_button = MakePictureButton("_Edit","PROGDIR:Images/Edit"),
					Child, delete_button = MakePictureButton("_Delete","PROGDIR:Images/Delete"),
					End,
				End,
			Child, HGroup,
				Child, NListviewObject,
					MUIA_CycleChain, 1,
					MUIA_NListview_NList, address_tree = NListtreeObject,
						MUIA_NListtree_ConstructHook, &address_construct_hook,
						MUIA_NListtree_DestructHook, &address_destruct_hook,
						MUIA_NListtree_DisplayHook, &address_display_hook,
						MUIA_NListtree_Title, TRUE,
						MUIA_NListtree_Format,",,,",
						MUIA_NListtree_DoubleClick, MUIV_NListtree_DoubleClick_Tree,
						End,
					End,
				End,
			End,
		End;

	if (!address_wnd) return;
	DoMethod(App,OM_ADDMEMBER,address_wnd);
	DoMethod(address_wnd, MUIM_Notify, MUIA_Window_CloseRequest, TRUE, address_wnd, 3, MUIM_Set, MUIA_Window_Open, FALSE);
	DoMethod(save_button, MUIM_Notify, MUIA_Pressed, FALSE, App, 3, MUIM_CallHook, &hook_standard, addressbook_save_pressed);
	DoMethod(new_person_button, MUIM_Notify, MUIA_Pressed, FALSE, App, 3, MUIM_CallHook, &hook_standard, addressbook_add_person);
	DoMethod(new_group_button, MUIM_Notify, MUIA_Pressed, FALSE, App, 3, MUIM_CallHook, &hook_standard, addressbook_add_group);
	DoMethod(change_button, MUIM_Notify, MUIA_Pressed, FALSE, App, 3, MUIM_CallHook, &hook_standard, addressbook_change);
	DoMethod(delete_button, MUIM_Notify, MUIA_Pressed, FALSE, App, 3, MUIM_CallHook, &hook_standard, addressbook_delete);
	DoMethod(to_button, MUIM_Notify, MUIA_Pressed, FALSE, App, 3, MUIM_CallHook, &hook_standard, addressbook_to);
	DoMethod(address_tree, MUIM_Notify, MUIA_NListtree_DoubleClick, MUIV_EveryTime, App, 3, MUIM_CallHook, &hook_standard, addressbook_change);

	set(address_tree, MUIA_UserData, 1); /* used in addresstringclass.c */

}
示例#2
0
/******************************************************************
 Opens a person window
*******************************************************************/
void person_window_open(struct addressbook_entry *entry)
{
	Object *wnd, *add_button, *rem_button, *email_list, *email_string;
	Object *alias_string, *realname_string, *ok_button, *cancel_button;
	Object *homepage_string, *street_string, *city_string, *country_string, *phone1_string, *phone2_string;
	Object *description_string;
	int num;

	for (num=0; num < MAX_PERSON_OPEN; num++)
		if (!person_open[num]) break;

	wnd = WindowObject,
		(num < MAX_PERSON_OPEN)?MUIA_Window_ID:TAG_IGNORE, MAKE_ID('P','E','R',num),
    MUIA_Window_Title, "SimpleMail - Edit Person",
        
		WindowContents, VGroup,
			Child, VGroup,
				Child, HorizLineTextObject("Electronic mail"),
				Child, HGroup,
					Child, VGroup,
						Child, ColGroup(2),
							Child, MakeLabel("Alias"),
							Child, alias_string = BetterStringObject,
								StringFrame,
								MUIA_CycleChain, 1,
								MUIA_String_AdvanceOnCR, TRUE,
								End,
							Child, MakeLabel("Real Name"),
							Child, realname_string = BetterStringObject,
								StringFrame,
								MUIA_CycleChain, 1,
								MUIA_String_AdvanceOnCR, TRUE,
								End,
							Child, MakeLabel("PGP Key-ID"),
							Child, BetterStringObject,
								StringFrame,
								MUIA_CycleChain, 1,
								MUIA_String_AdvanceOnCR, TRUE,
								End,
							Child, MakeLabel("Homepage"),
							Child, homepage_string = BetterStringObject,
								StringFrame,
								MUIA_CycleChain, 1,
								MUIA_String_AdvanceOnCR, TRUE,
								End,
							End,
						Child, HVSpace,
						End,
					Child, VGroup,
						Child, NListviewObject,
							MUIA_CycleChain, 1,
							MUIA_NListview_NList, email_list = NListObject,
								MUIA_NList_DragSortable, TRUE,
								MUIA_NList_ConstructHook, MUIV_NList_ConstructHook_String,
								MUIA_NList_DestructHook, MUIV_NList_DestructHook_String,
								End,
							End,
						Child, HGroup,
							Child, email_string = BetterStringObject,
								StringFrame,
								MUIA_CycleChain, 1,
								End,
							Child, HGroup,
								MUIA_Group_Spacing, 0,
								Child, add_button = MakeButton("Add"),
								Child, rem_button = MakeButton("Rem"),
								End,
							End,
						End,
					End,
				End,

			Child, HGroup,
				Child, ColGroup(2),
					Child, HorizLineTextObject("Snail mail"),
					Child, HorizLineTextObject("Miscellanous"),
/*					Child, HorizLineTextObject("Portrait"),*/
	
					Child, ColGroup(2),
						Child, MakeLabel("Street"),
						Child, street_string = BetterStringObject,
							StringFrame,
							MUIA_CycleChain, 1,
							MUIA_String_AdvanceOnCR, TRUE,
							End,
						Child, MakeLabel("City/ZIP"),
						Child, city_string = BetterStringObject,
							StringFrame,
							MUIA_CycleChain, 1,
							MUIA_String_AdvanceOnCR, TRUE,
							End,
						Child, MakeLabel("State/Country"),
						Child, country_string = BetterStringObject,
							StringFrame,
							MUIA_CycleChain, 1,
							MUIA_String_AdvanceOnCR, TRUE,
							End,
						Child, MakeLabel("Phone numbers"),
						Child, phone1_string = BetterStringObject,
							StringFrame,
							MUIA_CycleChain, 1,
							MUIA_String_AdvanceOnCR, TRUE,
							End,
						Child, HSpace(0),
						Child, phone2_string = BetterStringObject,
							StringFrame,
							MUIA_CycleChain, 1,
							MUIA_String_AdvanceOnCR, TRUE,
							End,
						End,

					Child, VGroup,
						Child, ColGroup(2),
							Child, MakeLabel("Description"),
							Child, description_string = BetterStringObject,
								StringFrame,
								MUIA_CycleChain, 1,
								MUIA_String_AdvanceOnCR, TRUE,
								End,
							Child, MakeLabel("Date of birth"),
							Child, BetterStringObject,
								StringFrame,
								MUIA_CycleChain, 1,
								MUIA_String_AdvanceOnCR, TRUE,
								End,
							End,
						Child, HGroup,
							Child, VGroup,
								Child, MakeLabel("Notepad"),
								Child, VSpace(0),
								End,
							Child, TextEditorObject,
								InputListFrame,
								MUIA_CycleChain,1,
								End,
							End,
						End,
					End,
				End,

			Child, HorizLineObject,
			Child, HGroup,
				Child, ok_button = MakeButton("_Ok"),
				Child, cancel_button = MakeButton("_Cancel"),
				End,
			End,
		End;
	
	if (wnd)
	{
		struct Person_Data *data = (struct Person_Data*)malloc(sizeof(struct Person_Data));
		if (data)
		{
			data->wnd = wnd;
			data->rem_button = rem_button;
			data->alias_string = alias_string;
			data->email_list = email_list;
			data->email_string = email_string;
			data->realname_string = realname_string;
			data->description_string = description_string;
			data->homepage_string = homepage_string;
			data->street_string = street_string;
			data->city_string = city_string;
			data->country_string = country_string;
			data->phone1_string = phone1_string;
			data->phone2_string = phone2_string;
			data->person = entry;
			data->num = num;

			/* mark the window as opened */
			person_open[num] = 1;

			set(email_string, MUIA_String_AttachedList, email_list);
			set(add_button, MUIA_Weight,0);
			set(rem_button, MUIA_Weight,0);

			DoMethod(wnd, MUIM_Notify, MUIA_Window_CloseRequest, TRUE, App, 7, MUIM_Application_PushMethod, App, 4, MUIM_CallHook, &hook_standard, person_window_close, data);
			DoMethod(cancel_button, MUIM_Notify, MUIA_Pressed, FALSE, App, 7, MUIM_Application_PushMethod, App, 4, MUIM_CallHook, &hook_standard, person_window_close, data);
			DoMethod(ok_button, MUIM_Notify, MUIA_Pressed, FALSE, App, 7, MUIM_Application_PushMethod, App, 4, MUIM_CallHook, &hook_standard, person_window_ok, data);
			DoMethod(add_button, MUIM_Notify, MUIA_Pressed, FALSE, App, 4, MUIM_CallHook, &hook_standard, person_add_email, data);
			DoMethod(rem_button, MUIM_Notify, MUIA_Pressed, FALSE, email_list, 2, MUIM_NList_Remove, MUIV_NList_Remove_Active);
			DoMethod(email_list, MUIM_Notify, MUIA_NList_Active, MUIV_EveryTime, App, 4, MUIM_CallHook, &hook_standard, person_email_list_active, data);
			DoMethod(email_string, MUIM_Notify, MUIA_String_Contents, MUIV_EveryTime, App, 4, MUIM_CallHook, &hook_standard, person_email_string_contents, data);
			DoMethod(App,OM_ADDMEMBER,wnd);

			/* A person must be changed */
			if (entry && entry->type == ADDRESSBOOK_ENTRY_PERSON)
			{
				int i;
				for (i=0;i<entry->u.person.num_emails;i++)
				{
					DoMethod(email_list, MUIM_NList_InsertSingle, entry->u.person.emails[i], MUIV_NList_Insert_Bottom);
				}
				set(realname_string, MUIA_String_Contents, entry->u.person.realname);
				set(description_string, MUIA_String_Contents, entry->u.person.description);
				set(alias_string, MUIA_String_Contents, entry->u.person.alias);
				set(phone1_string, MUIA_String_Contents, entry->u.person.phone1);
				set(phone2_string, MUIA_String_Contents, entry->u.person.phone2);
				set(street_string, MUIA_String_Contents, entry->u.person.street);
				set(city_string, MUIA_String_Contents, entry->u.person.city);
				set(country_string, MUIA_String_Contents, entry->u.person.country);
				set(homepage_string, MUIA_String_Contents, entry->u.person.homepage);
			}

			person_email_list_active(&data);
			set(wnd,MUIA_Window_ActiveObject,alias_string);
			set(wnd,MUIA_Window_Open,TRUE);

			return;
		}
		MUI_DisposeObject(wnd);
	}
}
示例#3
0
/******************************************************************
 Opens a group window
*******************************************************************/
static void group_window_open(struct addressbook_entry *entry)
{
	Object *wnd;
	Object *alias_string, *ok_button, *cancel_button;
	Object *description_string;
	int num;

	for (num=0; num < MAX_GROUP_OPEN; num++)
		if (!group_open[num]) break;

	wnd = WindowObject,
		(num < MAX_GROUP_OPEN)?MUIA_Window_ID:TAG_IGNORE, MAKE_ID('G','R','P',num),
    MUIA_Window_Title, "SimpleMail - Edit Group",
        
		WindowContents, VGroup,
			Child, VGroup,
				Child, ColGroup(2),
					Child, MakeLabel("Alias"),
					Child, alias_string = BetterStringObject,
						StringFrame,
						MUIA_CycleChain, 1,
						End,

					Child, MakeLabel("Description"),
					Child, description_string = BetterStringObject,
						StringFrame,
						MUIA_CycleChain, 1,
						End,
					End,
				End,

			Child, HorizLineObject,
			Child, HGroup,
				Child, ok_button = MakeButton("Ok"),
				Child, cancel_button = MakeButton("Cancel"),
				End,
			End,
		End;
	
	if (wnd)
	{
		struct Group_Data *data = (struct Group_Data*)malloc(sizeof(struct Group_Data));
		if (data)
		{
			data->wnd = wnd;
			data->alias_string = alias_string;
			data->description_string = description_string;
			data->group = entry;
			data->num = num;

			/* mark the window as opened */
			group_open[num] = 1;

			DoMethod(wnd, MUIM_Notify, MUIA_Window_CloseRequest, TRUE, App, 7, MUIM_Application_PushMethod, App, 4, MUIM_CallHook, &hook_standard, group_window_close, data);
			DoMethod(cancel_button, MUIM_Notify, MUIA_Pressed, FALSE, App, 7, MUIM_Application_PushMethod, App, 4, MUIM_CallHook, &hook_standard, group_window_close, data);
			DoMethod(ok_button, MUIM_Notify, MUIA_Pressed, FALSE, App, 7, MUIM_Application_PushMethod, App, 4, MUIM_CallHook, &hook_standard, group_window_ok, data);
			DoMethod(App,OM_ADDMEMBER,wnd);

			/* A group must be changed */
			if (entry && entry->type == ADDRESSBOOK_ENTRY_GROUP)
			{
				set(alias_string, MUIA_String_Contents, entry->u.group.alias);
				set(description_string, MUIA_String_Contents, entry->u.group.description);
			}

			set(wnd,MUIA_Window_ActiveObject,alias_string);
			set(wnd,MUIA_Window_Open,TRUE);
			return;
		}
		MUI_DisposeObject(wnd);
	}
}
示例#4
0
void ControlToolBar::MakeButtons()
{
   wxImage *upOriginal = new wxImage(wxBitmap(UpButton).ConvertToImage());
   wxImage *downOriginal = new wxImage(wxBitmap(DownButton).ConvertToImage());
   wxImage *hiliteOriginal = new wxImage(wxBitmap(HiliteButton).ConvertToImage());

   wxColour newColour =
       wxSystemSettings::GetSystemColour(wxSYS_COLOUR_3DFACE);

#ifdef __WXMAC__
   upPattern = upOriginal;
   downPattern = downOriginal;
   hilitePattern = hiliteOriginal;
#else
   upPattern = ChangeImageColour(upOriginal, newColour);
   downPattern = ChangeImageColour(downOriginal, newColour);
   hilitePattern = ChangeImageColour(hiliteOriginal, newColour);
#endif

   /* Buttons */
   #if (AUDACITY_BRANDING == BRAND_THINKLABS) // || (AUDACITY_BRANDING == BRAND_AUDIOTOUCH)
      #define kNumButtons 7
   #else
      #define kNumButtons 6
   #endif
   int buttonOrder[kNumButtons];
   mButtonPos = kButtonsXOffset;
   #if (AUDACITY_BRANDING != BRAND_THINKLABS)
      // no tools for Thinklabs
      if (mShowTools)
         mButtonPos += kToolsClusterWidth;
   #endif
   
   gPrefs->Read("/GUI/ErgonomicTransportButtons", &mErgonomicTransportButtons, false);

   if (mErgonomicTransportButtons)
   {
      #if (AUDACITY_BRANDING == BRAND_THINKLABS)
         buttonOrder[0] = ID_PAUSE_BUTTON;
         buttonOrder[1] = ID_PLAY_BUTTON;
         buttonOrder[2] = ID_LOOP_PLAY_BUTTON;
         buttonOrder[3] = ID_STOP_BUTTON;
         buttonOrder[4] = ID_REW_BUTTON;
         buttonOrder[5] = ID_FF_BUTTON;
         buttonOrder[6] = ID_RECORD_BUTTON;
      #elif (AUDACITY_BRANDING == BRAND_AUDIOTOUCH)
         //buttonOrder[0] = ID_LOCK_BUTTON;
         //buttonOrder[1] = ID_RECORD_BUTTON;
         //buttonOrder[2] = ID_REW_BUTTON;
         //buttonOrder[3] = ID_PLAY_BUTTON;
         //buttonOrder[4] = ID_PAUSE_BUTTON; // actually, on top of Play btn, and alternately hidden
         //buttonOrder[5] = ID_STOP_BUTTON;
         //buttonOrder[6] = ID_FF_BUTTON;

         buttonOrder[0] = ID_RECORD_BUTTON;
         buttonOrder[1] = ID_REW_BUTTON;
         buttonOrder[2] = ID_PLAY_BUTTON;
         buttonOrder[3] = ID_PAUSE_BUTTON; // actually, on top of Play btn, and alternately hidden
         buttonOrder[4] = ID_STOP_BUTTON;
         buttonOrder[5] = ID_FF_BUTTON;
      #else
         buttonOrder[0] = ID_PAUSE_BUTTON;
         buttonOrder[1] = ID_PLAY_BUTTON;
         buttonOrder[2] = ID_STOP_BUTTON;
         buttonOrder[3] = ID_REW_BUTTON;
         buttonOrder[4] = ID_FF_BUTTON;
         buttonOrder[5] = ID_RECORD_BUTTON;
      #endif
   } else
   {
      #if (AUDACITY_BRANDING == BRAND_THINKLABS)
         buttonOrder[0] = ID_REW_BUTTON;
         buttonOrder[1] = ID_PLAY_BUTTON;
         buttonOrder[2] = ID_LOOP_PLAY_BUTTON;
         buttonOrder[3] = ID_RECORD_BUTTON;
         buttonOrder[4] = ID_PAUSE_BUTTON;
         buttonOrder[5] = ID_STOP_BUTTON;
         buttonOrder[6] = ID_FF_BUTTON;
      #elif (AUDACITY_BRANDING == BRAND_AUDIOTOUCH) // ignores mErgonomicTransportButtons
         //buttonOrder[0] = ID_LOCK_BUTTON;
         //buttonOrder[1] = ID_RECORD_BUTTON;
         //buttonOrder[2] = ID_REW_BUTTON;
         //buttonOrder[3] = ID_PLAY_BUTTON;
         //buttonOrder[4] = ID_PAUSE_BUTTON; // actually, on top of Play btn, and alternately hidden
         //buttonOrder[5] = ID_STOP_BUTTON;
         //buttonOrder[6] = ID_FF_BUTTON;

         buttonOrder[0] = ID_RECORD_BUTTON;
         buttonOrder[1] = ID_REW_BUTTON;
         buttonOrder[2] = ID_PLAY_BUTTON;
         buttonOrder[3] = ID_PAUSE_BUTTON; // actually, on top of Play btn, and alternately hidden
         buttonOrder[4] = ID_STOP_BUTTON;
         buttonOrder[5] = ID_FF_BUTTON;
      #else
         buttonOrder[0] = ID_REW_BUTTON;
         buttonOrder[1] = ID_PLAY_BUTTON;
         buttonOrder[2] = ID_RECORD_BUTTON;
         buttonOrder[3] = ID_PAUSE_BUTTON;
         buttonOrder[4] = ID_STOP_BUTTON;
         buttonOrder[5] = ID_FF_BUTTON;
      #endif
   }
   
   for (int iButton = 0; iButton < kNumButtons; iButton++)
   {
      switch (buttonOrder[iButton])
      {
      case ID_REW_BUTTON:
         mRewind = MakeButton((char const **) Rewind,
                              (char const **) RewindDisabled,
                              (char const **) RewindAlpha, ID_REW_BUTTON,
                              false);
         break;
      
      case ID_PLAY_BUTTON:
         mPlay = MakeButton((char const **) Play,
                            (char const **) PlayDisabled,
                            (char const **) PlayAlpha, ID_PLAY_BUTTON,
                            false);
         MakeLoopImage();
         break;
      
      #if (AUDACITY_BRANDING == BRAND_THINKLABS)
         case ID_LOOP_PLAY_BUTTON:
            mLoopPlay = MakeButton((char const **) Loop,
                                    (char const **) LoopDisabled,
                                    (char const **) LoopAlpha, ID_LOOP_PLAY_BUTTON,
                                    false);
            break;
      //#elif (AUDACITY_BRANDING == BRAND_AUDIOTOUCH) 
      //   case ID_LOCK_BUTTON:
      //      mLock = MakeButton((char const **) Lock, 
      //                           (char const **) LockDisabled, 
      //                           (char const **) LockAlpha, ID_LOCK_BUTTON, 
      //                           true); // processDownEvents
      //      //v alt images for unlocked? Currently just making it toggle up/down with processDownEvents.
      //      break;
      #endif

      case ID_RECORD_BUTTON:
         if (mErgonomicTransportButtons)
            mButtonPos += 10; // space before record button
         
         mRecord = MakeButton((char const **) Record,
                              (char const **) RecordDisabled,
                              (char const **) RecordAlpha, ID_RECORD_BUTTON,
                              false);
         break;
      
      #if (AUDACITY_BRANDING == BRAND_AUDIOTOUCH) 
         // Audacity_Audiotouch swaps colors for Pause and Stop. 
         case ID_PAUSE_BUTTON:
            mPause = MakeButton((char const **)Pause_yellow,
                              (char const **) PauseDisabled_yellow,
                              (char const **) PauseAlpha, ID_PAUSE_BUTTON,
                              true);
            break;
         
         case ID_STOP_BUTTON:
            mStop = MakeButton((char const **) Stop_blue,
                              (char const **) StopDisabled_blue,
                              (char const **) StopAlpha, ID_STOP_BUTTON,
                              false);
            break;
      #else
         case ID_PAUSE_BUTTON:
            mPause = MakeButton((char const **)Pause,
                              (char const **) PauseDisabled,
                              (char const **) PauseAlpha, ID_PAUSE_BUTTON,
                              true);
            break;
         
         case ID_STOP_BUTTON:
            mStop = MakeButton((char const **) Stop,
                              (char const **) StopDisabled,
                              (char const **) StopAlpha, ID_STOP_BUTTON,
                              false);
            break;
      #endif
      
      case ID_FF_BUTTON:
         mFF = MakeButton((char const **) FFwd,
                          (char const **) FFwdDisabled,
                          (char const **) FFwdAlpha, ID_FF_BUTTON,
                          false);
         break;
      
      default:
         wxASSERT(false); // unknown button id
      }
   }

   #if wxUSE_TOOLTIPS
         mRewind->SetToolTip(_("Skip to Start"));
         mPlay->SetToolTip(_("Play (Shift for loop-play)"));
         #if (AUDACITY_BRANDING == BRAND_THINKLABS)
            mLoopPlay->SetToolTip(_("Loop Play"));
         //#elif (AUDACITY_BRANDING == BRAND_AUDIOTOUCH) 
         //   mLock->SetToolTip(_("Lock/Unlock Recording"));
         #endif
         mRecord->SetToolTip(_("Record"));
         mPause->SetToolTip(_("Pause"));
         mStop->SetToolTip(_("Stop"));
         mFF->SetToolTip(_("Skip to End"));
   #endif

#ifndef __WXMAC__
   delete upPattern;
   delete downPattern;
   delete hilitePattern;
#endif

   delete upOriginal;
   delete downOriginal;
   delete hiliteOriginal;

   /* Tools */

   #if (AUDACITY_BRANDING == BRAND_THINKLABS)
      // no tools for Thinklabs
      for (unsigned int i = 0; i < numTools; i++)
         mTool[i] = NULL;
   #else
      #ifdef __WXMAC__ // different positioning
         mTool[selectTool] = MakeTool(IBeam, IBeamAlpha, ID_SELECT, 0, 0);
         mTool[zoomTool] = MakeTool(Zoom, ZoomAlpha, ID_ZOOM, 0, 26);
         mTool[envelopeTool] = MakeTool(Envelope, EnvelopeAlpha, ID_ENVELOPE, 26, 0);
         mTool[slideTool] = MakeTool(TimeShift, TimeShiftAlpha, ID_SLIDE, 26, 26);
         mTool[drawTool]  = MakeTool(Draw, DrawAlpha, ID_DRAW, 52, 0);
         mTool[multiTool] = MakeTool(Multi, MultiAlpha, ID_MULTI, 52, 26); 
      #else
         mTool[selectTool] = MakeTool(IBeam, IBeamAlpha, ID_SELECT, 0, 0);
         mTool[zoomTool] = MakeTool(Zoom, ZoomAlpha, ID_ZOOM, 0, 28);
         mTool[envelopeTool] = MakeTool(Envelope, EnvelopeAlpha, ID_ENVELOPE, 27, 0);
         mTool[slideTool] = MakeTool(TimeShift, TimeShiftAlpha, ID_SLIDE, 27, 28);
         mTool[drawTool]  = MakeTool(Draw, DrawAlpha, ID_DRAW, 54, 0);
         mTool[multiTool] = MakeTool(Multi, MultiAlpha, ID_MULTI, 54, 28); 
      #endif
   #endif

#if wxUSE_TOOLTIPS
#ifdef __WXMAC__
   wxToolTip::Enable(false);    // DM: tooltips are broken in wxMac
#else
// MB: Should make this a pref
   wxToolTip::Enable(true);     
   wxToolTip::SetDelay(1000);
#endif
#endif

   RegenerateToolsTooltips();
}