void lcl_fred_replace_stuff(char *text, size_t max_len) { if (!Fred_running) return; Assert(text); // Goober5000 // delegate to SCP_string for the replacements SCP_string temp_text = text; lcl_fred_replace_stuff(temp_text); // fill up the original string size_t len = temp_text.copy(text, max_len); text[len] = 0; }
int event_editor::save_message(int num) { char *ptr; int i, conflict = 0; CListBox *list; UpdateData(TRUE); if (num >= 0) { ptr = (char *) (LPCTSTR) m_message_name; for (i=0; i<Num_builtin_messages; i++){ if (!stricmp(m_message_name, Messages[i].name)) { conflict = 1; break; } } for (i=0; i<m_num_messages; i++){ if ((i != num) && (!stricmp(m_message_name, m_messages[i].name))) { conflict = 1; break; } } if (!conflict) { // update name if no conflicts, otherwise keep old name string_copy(m_messages[num].name, m_message_name, NAME_LENGTH - 1); list = (CListBox *) GetDlgItem(IDC_MESSAGE_LIST); list->DeleteString(num); list->InsertString(num, m_message_name); } string_copy(m_messages[num].message, m_message_text, MESSAGE_LENGTH - 1); lcl_fred_replace_stuff(m_messages[num].message, MESSAGE_LENGTH); if (m_messages[num].avi_info.name){ free(m_messages[num].avi_info.name); } ptr = (char *) (LPCTSTR) m_avi_filename; if ( !ptr || !VALID_FNAME(ptr) ) { m_messages[num].avi_info.name = NULL; } else { m_messages[num].avi_info.name = strdup(ptr); } if (m_messages[num].wave_info.name){ free(m_messages[num].wave_info.name); } ptr = (char *) (LPCTSTR) m_wave_filename; if ( !ptr || !VALID_FNAME(ptr) ) { m_messages[num].wave_info.name = NULL; } else { m_messages[num].wave_info.name = strdup(ptr); } // update the persona to the message. We subtract 1 for the "None" at the beginning of the combo // box list. m_messages[num].persona_index = m_persona - 1; if(m_message_team >= MAX_TVT_TEAMS){ m_messages[num].multi_team = -1; m_message_team = -1; } else { m_messages[num].multi_team = m_message_team; } // possible TODO: auto-update event tree references to this message if we renamed it. } return 0; }
void cmd_brief_dlg::update_data(int update) { int enable; if (update) UpdateData(TRUE); // save previously editing data before we load over it. if (last_cmd_brief && m_last_stage >= 0 && m_last_stage < last_cmd_brief->num_stages) { cmd_brief_stage *last_stage = &last_cmd_brief->stage[m_last_stage]; deconvert_multiline_string(last_stage->text, m_text); lcl_fred_replace_stuff(last_stage->text); string_copy(last_stage->ani_filename, m_ani_filename, MAX_FILENAME_LEN); string_copy(last_stage->wave_filename, m_wave_filename, MAX_FILENAME_LEN); } // load data of new stage into dialog if (Cur_cmd_brief && Cur_cmd_brief->num_stages > 0) { if (m_cur_stage < 0 || m_cur_stage >= Cur_cmd_brief->num_stages) m_cur_stage = 0; m_stage_title.Format("Stage %d of %d", m_cur_stage + 1, Cur_cmd_brief->num_stages); convert_multiline_string(m_text, Cur_cmd_brief->stage[m_cur_stage].text); m_ani_filename = Cur_cmd_brief->stage[m_cur_stage].ani_filename; m_wave_filename = Cur_cmd_brief->stage[m_cur_stage].wave_filename; enable = TRUE; } else { m_stage_title = _T("No stages"); m_text = _T(""); m_ani_filename = _T(""); m_wave_filename = _T(""); enable = FALSE; m_cur_stage = -1; } if (m_cur_stage < Cur_cmd_brief->num_stages - 1) GetDlgItem(IDC_NEXT) -> EnableWindow(enable); else GetDlgItem(IDC_NEXT) -> EnableWindow(FALSE); if (m_cur_stage) GetDlgItem(IDC_PREV) -> EnableWindow(enable); else GetDlgItem(IDC_PREV) -> EnableWindow(FALSE); if (Cur_cmd_brief->num_stages >= CMD_BRIEF_STAGES_MAX) GetDlgItem(IDC_ADD_STAGE) -> EnableWindow(FALSE); else GetDlgItem(IDC_ADD_STAGE) -> EnableWindow(TRUE); if (Cur_cmd_brief->num_stages) { GetDlgItem(IDC_DELETE_STAGE) -> EnableWindow(enable); GetDlgItem(IDC_INSERT_STAGE) -> EnableWindow(enable); } else { GetDlgItem(IDC_DELETE_STAGE) -> EnableWindow(FALSE); GetDlgItem(IDC_INSERT_STAGE) -> EnableWindow(FALSE); } GetDlgItem(IDC_WAVE_FILENAME) -> EnableWindow(enable); GetDlgItem(IDC_ANI_FILENAME) -> EnableWindow(enable); GetDlgItem(IDC_BROWSE_ANI) -> EnableWindow(enable); GetDlgItem(IDC_BROWSE_WAVE) -> EnableWindow(enable); GetDlgItem(IDC_TEXT) -> EnableWindow(enable); UpdateData(FALSE); last_cmd_brief = Cur_cmd_brief; m_last_stage = m_cur_stage; }