14 #include "MessageEditorDlg.h"
16 #include "Management.h"
17 #include "Sexp_tree.h"
18 #include "EventEditor.h"
23 static char THIS_FILE[] = __FILE__;
57 CDialog::DoDataExchange(pDX);
84 ON_NOTIFY(NM_RCLICK,
IDC_TREE, OnRclickTree)
85 ON_NOTIFY(TVN_BEGINLABELEDIT, IDC_TREE, OnBeginlabeleditTree)
86 ON_NOTIFY(TVN_ENDLABELEDIT, IDC_TREE, OnEndlabeleditTree)
87 ON_BN_CLICKED(
ID_OK, OnOk)
100 CDialog::OnInitDialog();
104 ((CEdit *) GetDlgItem(IDC_NAME))->LimitText(
NAME_LENGTH - 1);
109 list = (CListBox *) GetDlgItem(IDC_MESSAGE_LIST);
110 list->ResetContent();
120 if (box->FindStringExact(-1,
Messages[i].avi_info.name) == CB_ERR)
121 box->AddString(
Messages[i].avi_info.name);
126 if (box->FindStringExact(i,
Messages[i].wave_info.name) == CB_ERR)
127 box->AddString(
Messages[i].wave_info.name);
132 box->AddString(
"<None>");
139 box->AddString(
Ships[i].ship_name);
142 if (
Wings[i].wave_count)
145 box->AddString(
"<Any wingman>");
153 else if (Num_messages)
158 update_cur_message();
179 if (i < Num_messages)
221 Message_editor_dlg = NULL;
228 Message_editor_dlg = NULL;
238 enable = enable2 =
FALSE;
255 if (
Messages[m_cur_msg].wave_info.name)
261 if (
Messages[m_cur_msg].persona_index != -1 )
280 GetDlgItem(
IDC_NAME)->EnableWindow(enable);
285 GetDlgItem(
IDC_TREE)->EnableWindow(enable2);
286 GetDlgItem(
IDC_SENDER)->EnableWindow(enable2);
295 int i, formula, node;
300 Assertion(node >= 0,
"Can't have a formula point to sexp node -1!");
312 if (
CDR(
CDR(node)) == -1) {
317 m_sender = box->FindStringExact(-1, str);
375 if (i == Num_messages) {
381 list->DeleteString(num);
390 if (!ptr || !strlen(ptr))
393 Messages[num].avi_info.name = strdup(ptr);
399 if (!ptr || !strlen(ptr))
400 Messages[num].wave_info.name = NULL;
402 Messages[num].wave_info.name = strdup(ptr);
428 MessageBox(
"You have reached the limit on mission events.\n"
429 "Can't add an event to send this message.");
475 free(
Messages[m_cur_msg].avi_info.name);
476 if (
Messages[m_cur_msg].wave_info.name)
477 free(
Messages[m_cur_msg].wave_info.name);
488 if (m_cur_msg >= Num_messages)
489 m_cur_msg = Num_messages - 1;
532 Message_editor_dlg = NULL;
540 CFileDialog dlg(
TRUE,
"ani",
m_avi_filename, OFN_HIDEREADONLY | OFN_FILEMUSTEXIST | OFN_NOCHANGEDIR,
541 "Ani Files (*.ani)|*.ani|Avi Files (*.avi)|*.avi|Both (*.ani, *.avi)|*.ani;*.avi||");
543 if (dlg.DoModal() == IDOK)
556 CFileDialog dlg(
TRUE,
"wav",
m_wave_filename, OFN_HIDEREADONLY | OFN_FILEMUSTEXIST | OFN_NOCHANGEDIR,
557 "Voice Files (*.ogg, *.wav)|*.ogg;*.wav|Ogg Vorbis Files (*.ogg)|*.ogg|Wave Files (*.wav)|*.wav||");
559 if (dlg.DoModal() == IDOK)
575 TV_DISPINFO* pTVDispInfo = (TV_DISPINFO*)pNMHDR;
581 edit =
m_tree.GetEditControl();
591 TV_DISPINFO* pTVDispInfo = (TV_DISPINFO*)pNMHDR;
void record_window_data(window_data *wndd, CWnd *wnd)
CMessageEditorDlg * Message_editor_dlg
#define SEXP_ATOM_OPERATOR
bool is_blank_argument_op(int op_const)
virtual void DoDataExchange(CDataExchange *pDX)
int init_window(window_data *wndd, CWnd *wnd, int adjust=0, int pre=0)
void link_modified(int *ptr)
void update_sexp_references(const char *old_name, const char *new_name, int format, int node)
#define Assertion(expr, msg,...)
int alloc_sexp(char *text, int type, int subtype, int first, int rest)
int edit_label(HTREEITEM h)
GLenum GLuint GLenum GLsizei const GLchar * message
GLenum GLuint GLenum GLsizei const GLchar * buf
afx_msg void OnBrowseAvi()
void right_clicked(int mode=0)
window_data Messages_wnd_data
SCP_vector< MMessage > Messages
afx_msg void OnBrowseWave()
CMessageEditorDlg(CWnd *pParent=NULL)
int end_label_edit(TVITEMA &item)
afx_msg void OnBeginlabeleditTree(NMHDR *pNMHDR, LRESULT *pResult)
mission_event Mission_events[MAX_MISSION_EVENTS]
sprintf(buf,"(%f,%f,%f)", v3->xyz.x, v3->xyz.y, v3->xyz.z)
void update_cur_message()
#define OPF_MESSAGE_OR_STRING
#define OP_PERFORM_ACTIONS
afx_msg void OnRclickTree(NMHDR *pNMHDR, LRESULT *pResult)
afx_msg void OnUpdateName()
afx_msg void OnSelchangeMessageList()
#define IDC_WAVE_FILENAME
object Objects[MAX_OBJECTS]
void string_copy(char *dest, const CString &src, int max_len, int modify)
void set_modified(BOOL arg)
GLuint const GLchar * name
#define OP_EVERY_TIME_ARGUMENT
int save_tree(int node=-1)
int MessageBox(HWND h, const char *s1, const char *s2, int i)
int get_operator_const(const char *token)
char * objective_key_text
void load_tree(int index, const char *deflt="true")
#define MAX_MISSION_EVENTS
int query_false(int node=-1)
afx_msg void OnEndlabeleditTree(NMHDR *pNMHDR, LRESULT *pResult)
void clear_tree(const char *op=NULL)
int advanced_stricmp(char *one, char *two)