@@ -1102,16 +1102,31 @@ MCEmscriptenSystem::LaunchUrl(MCStringRef p_document)
11021102 MCresult -> sets (" no association" );
11031103}
11041104
1105+ bool
1106+ MCEmscriptenSystem::GetDNSservers (MCListRef & r_list)
1107+ {
1108+ /* DNS servers aren't available */
1109+ return false ;
1110+ }
1111+
1112+ // These functions is implemented in javascript
1113+ extern " C" int32_t MCEmscriptenDialogShowAlert (const unichar_t * p_message, size_t p_message_length);
1114+
11051115void
1106- MCEmscriptenSystem::DoAlternateLanguage (MCStringRef p_script ,
1107- MCStringRef p_language )
1116+ MCEmscriptenSystem::ShowMessageDialog (MCStringRef p_title ,
1117+ MCStringRef p_message )
11081118{
1109- if (!MCStringIsEqualToCString (p_language, " javascript" , kMCStringOptionCompareCaseless ))
1110- {
1111- MCresult -> sets (" alternate language not found" );
1112- return ;
1113- }
1119+ MCAutoStringRefAsUTF16String t_message_u16;
1120+ t_message_u16.Lock (p_message);
1121+ MCEmscriptenDialogShowAlert (t_message_u16.Ptr (), t_message_u16.Size ());
1122+ }
1123+
1124+ /* ----------------------------------------------------------------
1125+ * Interface with browser JavaScript
1126+ * ---------------------------------------------------------------- */
11141127
1128+ bool MCEmscriptenSystemEvaluateJavaScriptAsString (MCStringRef p_script, MCStringRef &r_result)
1129+ {
11151130 MCAutoStringRefAsUTF16String t_script_u16;
11161131 t_script_u16.Lock (p_script);
11171132
@@ -1121,14 +1136,32 @@ MCEmscriptenSystem::DoAlternateLanguage(MCStringRef p_script,
11211136 bool t_success;
11221137 t_success = MCEmscriptenSystemEvaluateJavaScript (t_script_u16.Ptr (), t_script_u16.Size (), &t_result_u16, &t_result_length);
11231138
1124- if (!t_success)
1139+ if (t_success)
1140+ t_success = MCStringCreateWithBytesAndRelease ((byte_t *)t_result_u16, t_result_length, kMCStringEncodingUTF16 , false , r_result);
1141+
1142+ return t_success;
1143+ }
1144+
1145+ void
1146+ MCEmscriptenSystem::DoAlternateLanguage (MCStringRef p_script,
1147+ MCStringRef p_language)
1148+ {
1149+ if (!MCStringIsEqualToCString (p_language, " javascript" , kMCStringOptionCompareCaseless ))
11251150 {
1126- MCresult-> sets (" execution error " );
1151+ MCresult -> sets (" alternate language not found " );
11271152 return ;
11281153 }
11291154
1155+ bool t_success = true ;
1156+
11301157 MCAutoStringRef t_result;
1131- MCStringCreateWithBytesAndRelease ((byte_t *)t_result_u16, t_result_length, kMCStringEncodingUTF16 , false , &t_result);
1158+ t_success = MCEmscriptenSystemEvaluateJavaScriptAsString (p_script, &t_result);
1159+
1160+ if (!t_success)
1161+ {
1162+ MCresult->sets (" execution error" );
1163+ return ;
1164+ }
11321165
11331166 MCresult->setvalueref (*t_result);
11341167}
@@ -1145,26 +1178,7 @@ MCEmscriptenSystem::AlternateLanguages(MCListRef & r_list)
11451178 MCListCopy (*t_list, r_list);
11461179}
11471180
1148- bool
1149- MCEmscriptenSystem::GetDNSservers (MCListRef & r_list)
1150- {
1151- /* DNS servers aren't available */
1152- return false ;
1153- }
1154-
1155- // These functions is implemented in javascript
1156- extern " C" int32_t MCEmscriptenDialogShowAlert (const unichar_t * p_message, size_t p_message_length);
1157-
1158- void
1159- MCEmscriptenSystem::ShowMessageDialog (MCStringRef p_title,
1160- MCStringRef p_message)
1161- {
1162- MCAutoStringRefAsUTF16String t_message_u16;
1163- t_message_u16.Lock (p_message);
1164- MCEmscriptenDialogShowAlert (t_message_u16.Ptr (), t_message_u16.Size ());
1165- }
1166-
1167- // /////////
1181+ // ////////
11681182
11691183#include " dispatch.h"
11701184
0 commit comments