/****************************************************************** 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 */ }
/****************************************************************** 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); } }
/****************************************************************** 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); } }
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(); }