Dayz Build 1.29.163047, Scripts Rev. 123548
Dayz Code Explorer by Zeroy
Loading...
Searching...
No Matches
serverbrowserfiltercontainer.c
Go to the documentation of this file.
1class ServerBrowserFilterContainer extends ScriptedWidgetEventHandler
2{
4
7 protected ButtonWidget m_RefreshList;
8
9 ref OptionSelectorMultistate m_CharacterAliveFilter;
10 ref OptionSelectorMultistate m_SortingFilter;
11 ref OptionSelectorMultistate m_RegionFilter;
12 ref OptionSelectorMultistate m_PingFilter;
13 ref OptionSelectorMultistate m_MapFilter;
23 protected ServerBrowserTab m_Tab;
24
26 {
27 string player_name;
28 g_Game.GetPlayerName(player_name);
29 m_Tab = parent;
30
31 array<string> character_name_options ={"#server_browser_disabled", player_name};
32 array<string> region_options = {"#server_browser_all", "#server_browser_americas", "#server_browser_europe", "#server_browser_asia"};
33 array<string> sort_options = {"#server_browser_column_host A-Z", "#server_browser_column_host Z-A", "#players_title >", "#players_title <"};
34 array<string> ping_options = {"#server_browser_disabled", "<30", "<50", "<100", "<200", "<300", "<500"};
35 array<string> two_options = {"#server_browser_disabled", "#server_browser_show"};
36 array<string> map_options = LoadMapFilterOptions();
37
38 m_SearchByName = EditBoxWidget.Cast(root.FindAnyWidget("search_name_setting_option"));
39 m_RefreshList = ButtonWidget.Cast(root.GetParent().FindAnyWidget("refresh_list_button"));
40
41 m_RegionFilter = new OptionSelectorMultistate(root.FindAnyWidget("region_setting_option"), 0, this, false, region_options);
42 m_PingFilter = new OptionSelectorMultistate(root.FindAnyWidget("ping_setting_option"), 0, this, false, ping_options);
43 #ifdef PLATFORM_CONSOLE
44 m_FavoritedFilter = new OptionSelectorMultistate(root.FindAnyWidget("favorites_setting_option"), 0, this, false, two_options);
45 #else
46 m_FavoritedFilter = new OptionSelector(root.FindAnyWidget("favorites_setting_option"), 0, this, false);
47 #endif
48
49 m_MapFilter = new OptionSelectorMultistate(root.FindAnyWidget("map_setting_option"), 0, this, false, map_options);
50
51 m_FriendsPlayingFilter = new OptionSelector(root.FindAnyWidget("friends_setting_option"), 0, this, false);
52 m_PreviouslyPlayedFilter = new OptionSelector(root.FindAnyWidget("prev_played_setting_option"), 0, this, false);
53 m_FullServerFilter = new OptionSelector(root.FindAnyWidget("full_server_setting_option"), 0, this, false);
54 m_ThirdPersonFilter = new OptionSelector(root.FindAnyWidget("tps_setting_option"), 0, this, false);
55 m_PasswordFilter = new OptionSelector(root.FindAnyWidget("password_setting_option"), 0, this, false);
56 m_WhitelistFilter = new OptionSelector(root.FindAnyWidget("whitelist_setting_option"), 0, this, false);
57
58 m_RegionFilter.m_OptionChanged.Insert(OnFilterChanged);
59 m_PingFilter.m_OptionChanged.Insert(OnFilterChanged);
60 m_FavoritedFilter.m_OptionChanged.Insert(OnFilterChanged);
61 m_MapFilter.m_OptionChanged.Insert(OnMapFilterChanged);
62 m_FriendsPlayingFilter.m_OptionChanged.Insert(OnFilterChanged);
63 m_PreviouslyPlayedFilter.m_OptionChanged.Insert(OnFilterChanged);
64 m_FullServerFilter.m_OptionChanged.Insert(OnFilterChanged);
65 m_ThirdPersonFilter.m_OptionChanged.Insert(OnFilterChanged);
66 m_PasswordFilter.m_OptionChanged.Insert(OnFilterChanged);
67 m_WhitelistFilter.m_OptionChanged.Insert(OnFilterChanged);
68
69 #ifdef PLATFORM_CONSOLE
70 m_SortingFilter = new OptionSelectorMultistate(root.FindAnyWidget("sort_setting_option"), 0, this, false, sort_options);
71 m_KeyboardFilter = new OptionSelector(root.FindAnyWidget("keyboard_setting_option"), 0, this, false);
72
73 m_SortingFilter.m_OptionChanged.Insert(OnSortChanged);
74 m_SortingFilter.m_OptionChanged.Insert(OnFilterChanged);
75 m_KeyboardFilter.m_OptionChanged.Insert(OnFilterChanged);
76
77 m_PingFilter.Disable();
78 m_FriendsPlayingFilter.Disable();
79 #endif
80
81 #ifdef PLATFORM_WINDOWS
82 #ifndef PLATFORM_CONSOLE
83 m_SearchByIP = EditBoxWidget.Cast(root.FindAnyWidget("search_ip_setting_option"));
84
85 m_SearchByName.SetHandler(this);
86 m_SearchByIP.SetHandler(this);
87
88 m_CharacterAliveFilter = new OptionSelectorMultistate(root.FindAnyWidget("restrict_char_setting_option"), 0, this, false, character_name_options);
89 m_VersionMatchFilter = new OptionSelector(root.FindAnyWidget("ver_match_setting_option"), 0, this, false);
90
91 m_CharacterAliveFilter.m_OptionChanged.Insert(OnFilterChanged);
92 m_VersionMatchFilter.m_OptionChanged.Insert(OnFilterChanged);
93 #endif
94 #endif
96 }
97
99 {
100 array<string> mapOptions = {"#server_browser_disabled"};
101 for (int i = ServerBrowserHelperFunctions.GetInstance().INTERNAL_MAP_NAMES.Count() - 1; i >= 0; i--)
102 {
103 mapOptions.Insert(ServerBrowserHelperFunctions.GetInstance().INTERNAL_MAP_NAMES.GetElement(i));
104 }
105
106 return mapOptions;
107 }
108
110 {
111 m_Tab.OnFilterChanged();
112 }
113
115 {
116 m_Tab.OnFilterChanged();
117 }
118
120 {
121 string data;
122 if (m_Tab.GetTabType() == TabType.LAN || m_Tab.GetTabType() == TabType.FAVORITE)
123 return;
124
125 g_Game.GetProfileString("SB_Filter_" + m_Tab.GetTabType(), data);
126
127 m_Options.Clear();
128
129 if (data != "")
130 {
131 string errorMessage;
132 if (!JsonFileLoader<ref map<string, string>>.LoadData(data, m_Options, errorMessage))
133 ErrorEx(errorMessage);
134 }
135
136 if (m_Options && m_Options.Count() >= 6)
137 {
138 m_SearchByName.SetText(m_Options.Get("m_SearchByName"));
139 m_RegionFilter.SetStringOption(m_Options.Get("m_RegionFilter"), false);
140 m_PingFilter.SetStringOption(m_Options.Get("m_PingFilter"), false);
141 m_FriendsPlayingFilter.SetStringOption(m_Options.Get("m_FriendsPlayingFilter"), false);
142 m_PreviouslyPlayedFilter.SetStringOption(m_Options.Get("m_PreviouslyPlayedFilter"), false);
143 m_FullServerFilter.SetStringOption(m_Options.Get("m_FullServerFilter"), false);
144 m_ThirdPersonFilter.SetStringOption(m_Options.Get("m_ThirdPersonFilter"), false);
145 m_PasswordFilter.SetStringOption(m_Options.Get("m_PasswordFilter"), false);
146 m_WhitelistFilter.SetStringOption(m_Options.Get("m_WhitelistFilter"), false);
147 m_MapFilter.SetStringOption(m_Options.Get("m_MapFilter"), false);
148
149 #ifdef PLATFORM_CONSOLE
150 m_SortingFilter.SetStringOption(m_Options.Get("m_SortingFilter"), false);
151 m_KeyboardFilter.SetStringOption(m_Options.Get("m_KeyboardFilter"), false);
152 #else
153 m_FavoritedFilter.SetStringOption(m_Options.Get("m_FavoritedFilter"), false);
154 #endif
155
156 if (m_Options.Count() >= 12)
157 {
158 #ifdef PLATFORM_WINDOWS
159 #ifndef PLATFORM_CONSOLE
160 m_SearchByIP.SetText(m_Options.Get("m_SearchByIP"));
161 m_CharacterAliveFilter.SetStringOption(m_Options.Get("m_CharacterAliveFilter"), false);
162 m_VersionMatchFilter.SetStringOption(m_Options.Get("m_VersionMatchFilter"), false);
163 #endif
164 #endif
165 }
166 }
167 }
168
170 {
171 m_Options.Clear();
172
173 m_Options.Insert("m_SearchByName", m_SearchByName.GetText());
174 m_Options.Insert("m_RegionFilter", m_RegionFilter.GetStringValue());
175 m_Options.Insert("m_PingFilter", m_PingFilter.GetStringValue());
176 m_Options.Insert("m_FriendsPlayingFilter", m_FriendsPlayingFilter.GetStringValue());
177 m_Options.Insert("m_PreviouslyPlayedFilter", m_PreviouslyPlayedFilter.GetStringValue());
178 m_Options.Insert("m_FullServerFilter", m_FullServerFilter.GetStringValue());
179 m_Options.Insert("m_ThirdPersonFilter", m_ThirdPersonFilter.GetStringValue());
180 m_Options.Insert("m_PasswordFilter", m_PasswordFilter.GetStringValue());
181 m_Options.Insert("m_WhitelistFilter", m_WhitelistFilter.GetStringValue());
182 m_Options.Insert("m_MapFilter", m_MapFilter.GetStringValue());
183
184 #ifdef PLATFORM_CONSOLE
185 m_Options.Insert("m_SortingFilter", m_SortingFilter.GetStringValue());
186 m_Options.Insert("m_KeyboardFilter", m_KeyboardFilter.GetStringValue());
187 #else
188 m_Options.Insert("m_FavoritedFilter", m_FavoritedFilter.GetStringValue());
189 #endif
190
191 #ifdef PLATFORM_WINDOWS
192 #ifndef PLATFORM_CONSOLE
193 m_Options.Insert("m_SearchByIP", m_SearchByIP.GetText());
194 m_Options.Insert("m_CharacterAliveFilter", m_CharacterAliveFilter.GetStringValue());
195 m_Options.Insert("m_VersionMatchFilter", m_VersionMatchFilter.GetStringValue());
196 #endif
197 #endif
198
199 string data, errorMessage;
200 if (!JsonFileLoader<ref map<string, string>>.MakeData(m_Options, data, errorMessage))
201 ErrorEx(errorMessage);
202
203 g_Game.SetProfileString("SB_Filter_" + m_Tab.GetTabType(), data);
204 }
205
207 {
208 m_SearchByName.SetText("");
209 m_RegionFilter.Reset();
210 m_PingFilter.Reset();
211 m_FavoritedFilter.Reset();
214 m_FullServerFilter.Reset();
215 m_ThirdPersonFilter.Reset();
216 m_PasswordFilter.Reset();
217 m_WhitelistFilter.Reset();
218 m_MapFilter.Reset();
219
220 #ifdef PLATFORM_CONSOLE
221 m_SortingFilter.Reset();
222 m_KeyboardFilter.Reset();
223 #endif
224
225 #ifdef PLATFORM_WINDOWS
226 #ifndef PLATFORM_CONSOLE
227 m_SearchByIP.SetText("");
229 m_VersionMatchFilter.Reset();
230 #endif
231 #endif
232 SaveFilters();
233 }
234
236 {
237 return (m_Options["m_PingFilter"] != m_PingFilter.GetOptions()[0]);
238 }
239
241 {
242 return (m_Options["m_FavoritedFilter"] != m_FavoritedFilter.GetOptions()[0]);
243 }
244
246 {
247 return (m_Options["m_PreviouslyPlayedFilter"] != m_PreviouslyPlayedFilter.GetOptions()[0]);
248 }
249
251 bool ProcessIntoIPAddress(out string potential_ip)
252 {
253 bool was_text_changed = false;
254 int length = potential_ip.Length();
255
256 // Filter out incompatible characters
257 for (int i = length - 1 ; i >= 0; --i)
258 {
259 string character = potential_ip.Get(i);
260
261 if (character.ToInt() == 0 && character != "0" && character != "." && character != ":")
262 {
263 potential_ip = potential_ip.SubstringInverted(potential_ip, i, i + 1);
264 was_text_changed = true;
265 }
266 }
267
268 bool text_was_shortened = LimitTextBoxCharacterCount(potential_ip, 21);
269
270 return (was_text_changed || text_was_shortened);
271 }
272
274 bool LimitTextBoxCharacterCount(out string text, int max_length)
275 {
276 int length = text.Length();
277 bool was_text_changed = false;
278
279 if (length > max_length)
280 {
281 text = text.Substring(0, max_length);
282 was_text_changed = true;
283 }
284
285 return was_text_changed;
286 }
287
289 string GenerateValidIP(string potential_ip)
290 {
291 string correct_ip_format;
292
293 TStringArray array_ip_and_port = new TStringArray;
294 potential_ip.Split(":", array_ip_and_port);
295
296 string ip_entries;
297 int port;
298
299 if(array_ip_and_port.Count() > 0)
300 {
301 ip_entries = array_ip_and_port.Get(0);
302 TStringArray array_ip = new TStringArray;
303 ip_entries.Split(".", array_ip);
304
305 string ip_string;
306 int ip_entries_count = array_ip.Count();
307
308 if (ip_entries_count <= 3 || ip_entries_count > 4)
309 return "";
310
311 for (int i = 0; i < 4; i++)
312 {
313 int ip_entry = array_ip.Get(i).ToInt();
314
315 // Check if the entry is a valid number
316 if (ip_entry > 255 || ip_entry < 0)
317 ip_entry = 0;
318
319 ip_string = ip_string + ip_entry.ToString();
320
321 if (i < ip_entries_count - 1)
322 ip_string = ip_string + ".";
323 ;
324 }
325
326 correct_ip_format = ip_string;
327 }
328 else
329 {
330 ip_entries = "";
331 correct_ip_format = ip_entries;
332 }
333
334 if (correct_ip_format == "")
335 return ""; // Input string was not recognized as a valid IP address. Thus return an empty string.
336
337 // The input string was recognized as a valid IP address. Thus continue with port number.
338
339 if(array_ip_and_port.Count() > 1)
340 {
341 port = array_ip_and_port.Get(1).ToInt();
342
343 if (port > 65535 | port < 0) // max port value is 65535
344 port = 2302;
345
346
347 if (port >= 0)
348 correct_ip_format = correct_ip_format + ":" + port.ToString();
349
350 }
351 else
352 {
353 port = 2302;
354 correct_ip_format = correct_ip_format + ":" + port.ToString();
355 }
356
357 return correct_ip_format;
358 }
359
361 bool GenerateValidFilter(out string potential_filter)
362 {
363 return LimitTextBoxCharacterCount(potential_filter, 16);
364 }
365
366 void OnSortChanged(int value)
367 {
368 switch(value)
369 {
370 case 0:
371 {
372 m_Tab.SetSort(ESortType.HOST, ESortOrder.ASCENDING);
373 break;
374 }
375 case 1:
376 {
377 m_Tab.SetSort(ESortType.HOST, ESortOrder.DESCENDING);
378 break;
379 }
380 case 2:
381 {
382 m_Tab.SetSort(ESortType.POPULATION, ESortOrder.DESCENDING);
383 break;
384 }
385 case 3:
386 {
387 m_Tab.SetSort(ESortType.POPULATION, ESortOrder.ASCENDING);
388 break;
389 }
390 }
391 }
392
393 void Focus()
394 {
395 #ifdef PLATFORM_CONSOLE
396 switch (m_Tab.GetTabType())
397 {
398 case TabType.FAVORITE:
399 {
401 break;
402 }
403 case TabType.OFFICIAL:
404 case TabType.COMMUNITY:
405 {
407 break;
408 }
409 }
410 #endif
411 #ifdef PLATFORM_WINDOWS
413 #endif
414 }
415
416 override bool OnChange(Widget w, int x, int y, bool finished)
417 {
418 if(w)
419 {
420 if(w == m_SearchByName)
421 {
422 string input_name = m_SearchByName.GetText();
423
424 if (GenerateValidFilter(input_name))
425 m_SearchByName.SetText(input_name); // Warning! Using SetText() causes the cursor to move at the end of the text box!
426
429
430 return true;
431 }
432 else if(w == m_SearchByIP)
433 {
434 string input_ip = m_SearchByIP.GetText();
435
436 if (ProcessIntoIPAddress(input_ip))
437 m_SearchByIP.SetText(input_ip); // Warning! Using SetText() causes the cursor to move at the end of the text box!
438
441
442 return true;
443 }
444 }
445 return false;
446 }
447
448 override bool OnFocus(Widget w, int x, int y)
449 {
450 m_Tab.OnFilterFocus(w);
451
452 return false;
453 }
454
455 override bool OnMouseEnter(Widget w, int x, int y)
456 {
457 return m_Tab.OnMouseEnter(w, x, y);
458 }
459
460 override bool OnMouseLeave(Widget w, Widget enterW, int x, int y)
461 {
462 return m_Tab.OnMouseLeave(w, enterW, x, y);
463 }
464
466 {
467 GetServersInput input = new GetServersInput();
468
470 input.m_Platform = 1;
471
472 if (m_SearchByName)
473 {
474 string name_text = m_SearchByName.GetText();
475 if (name_text != "")
476 {
477 input.SetNameFilter(name_text);
478 }
479 }
480
481 if (m_FullServerFilter.IsSet())
482 {
483 input.SetFullServer(m_FullServerFilter.IsEnabled());
484 }
485
486 if (m_ThirdPersonFilter.IsSet())
487 {
488 input.SetThirdPerson(m_ThirdPersonFilter.IsEnabled());
489 }
490
491 if (m_PasswordFilter.IsSet())
492 {
493 input.SetPassworded(m_PasswordFilter.IsEnabled());
494 }
495
496 if (m_WhitelistFilter.IsSet())
497 {
498 input.SetWhitelistEnabled(m_WhitelistFilter.IsEnabled());
499 }
500
501 if (m_MapFilter.IsSet())
502 {
503 string internalMapName = ServerBrowserHelperFunctions.GetInternalMapName(m_MapFilter.GetStringValue());
504 if (internalMapName != "")
505 input.SetMapNameToRun(internalMapName);
506 }
507
508 #ifndef PLATFORM_CONSOLE
509 if (m_SearchByIP)
510 {
511 string ip_text = m_SearchByIP.GetText();
512 if (ip_text != "")
513 {
514 input.SetHostIp(ip_text);
515 }
516 }
517
518 if (m_PingFilter.IsSet())
519 {
520 string str_ping = m_PingFilter.GetStringValue();
521 int ping = str_ping.Substring(1, str_ping.Length() - 1).ToInt();
522 input.SetPingFilter(ping);
523 }
524
525 if (m_FriendsPlayingFilter.IsSet())
526 {
527 input.SetFriendsPlaying(m_FriendsPlayingFilter.IsEnabled());
528 }
529
530 if (m_PreviouslyPlayedFilter.IsSet())
531 {
533 }
534
535 if (m_VersionMatchFilter.IsSet())
536 {
538 }
539 #endif
540
541 return input;
542 }
543
545 {
546 GetServersInput input = new GetServersInput();
547
549
550 #ifdef PLATFORM_MSSTORE
551 input.m_Platform = 2;
552 #endif
553 #ifdef PLATFORM_XBOX
554 input.m_Platform = 2;
555 #endif
556 #ifdef PLATFORM_PS4
557 input.m_Platform = 3;
558 #endif
559
560 if (m_SearchByName)
561 {
562 string name_text = m_SearchByName.GetText();
563 if(name_text != "")
564 {
565 input.SetNameFilter(name_text);
566 }
567 }
568
569 if (m_RegionFilter.IsSet())
570 {
571 input.SetRegionIdFilter(m_RegionFilter.GetValue());
572 }
573
574 if (m_FullServerFilter.IsSet())
575 {
576 input.SetFullServer(m_FullServerFilter.IsEnabled());
577 if (m_FullServerFilter.IsEnabled())
578 {
579 input.SetFreeSlotsMax(1);
580 }
581 else
582 {
583 input.SetFreeSlotsMin(1);
584 }
585 }
586
587 if (m_ThirdPersonFilter.IsSet())
588 {
589 // modeId is used to specify whether third person is allowed on CONSOLE servers
590 // ALLOW third person: modeId = 0
591 // BLOCK third person: modeId = 1
592 input.SetModeIdFilter(!m_ThirdPersonFilter.IsEnabled());
593 }
594
595 if (m_PasswordFilter.IsSet())
596 {
598 }
599
600 if (m_WhitelistFilter.IsSet())
601 {
602 input.SetWhitelistEnabled(m_WhitelistFilter.IsEnabled());
603 }
604
605 if (m_KeyboardFilter.IsSet())
606 {
608 }
609
610 if (m_MapFilter.IsSet())
611 {
612 string internalMapName = ServerBrowserHelperFunctions.GetInternalMapName(m_MapFilter.GetStringValue());
613 if (internalMapName != "")
614 input.SetMapNameToRun(internalMapName);
615 }
616
617 if (m_PreviouslyPlayedFilter.IsSet())
618 {
620 }
621
622 return input;
623 }
624
625#ifdef DIAG_DEVELOPER
626 string GetSearchByNameFilterText()
627 {
628 if (!m_SearchByName)
629 {
630 return "";
631 }
632
633 string text = m_SearchByName.GetText();
634 text.TrimInPlace();
635 text.ToLower();
636 return text;
637 }
638
639 string GetSearchByIPFilterText()
640 {
641 #ifdef PLATFORM_WINDOWS
642 if (m_SearchByIP)
643 {
644 string text = m_SearchByIP.GetText();
645 text.TrimInPlace();
646 text.ToLower();
647 return text;
648 }
649 #endif
650
651 return "";
652 }
653
654 string GetMapFilterInternalName()
655 {
656 if (!m_MapFilter || !m_MapFilter.IsSet())
657 {
658 return "";
659 }
660
661 string internalMapName = ServerBrowserHelperFunctions.GetInternalMapName(m_MapFilter.GetStringValue());
662 internalMapName.ToLower();
663 return internalMapName;
664 }
665#endif
666
667 // DEPRECATED BELOW
672}
ESortOrder
ESortType
GetServersInput the input structure of the GetServers operation.
void SetFreeSlotsMin(int freeSlotsMin)
void SetMouseAndKeyboardEnabled(bool enabledMouseAndKeyboard)
void SetThirdPerson(bool show)
void SetFreeSlotsMax(int freeSlotsMax)
void SetHostIp(string hostIp)
void SetMapNameToRun(string mapNameToRun)
void SetModeIdFilter(int mode_id)
void SetPreviouslyPlayed(bool show)
void SetFullServer(bool show)
void SetIsPasswordProtectedFilter(bool password_protected)
void SetPassworded(bool show)
void SetNameFilter(string name)
void SetFriendsPlaying(bool show)
void SetPingFilter(int pingMaxValue)
void SetWhitelistEnabled(bool whitelistEnabled)
void SetRegionIdFilter(int region)
void SetProperVersionMatch(bool show)
map: item x vector(index, width, height)
Definition enwidgets.c:657
override bool OnChange(Widget w, int x, int y, bool finished)
void ServerBrowserFilterContainer(Widget root, ServerBrowserTab parent)
ref OptionSelectorMultistate m_CharacterAliveFilter
override bool OnMouseLeave(Widget w, Widget enterW, int x, int y)
ref OptionSelectorMultistate m_RegionFilter
ref OptionSelectorMultistate m_SortingFilter
bool GenerateValidFilter(out string potential_filter)
Turns any given string into a more convenient filter (limits character count, forces lowercase,...
bool LimitTextBoxCharacterCount(out string text, int max_length)
Limits the given text to 'max_length' character count. Returns true if any change was done to the inp...
ref OptionSelectorMultistate m_PingFilter
override bool OnMouseEnter(Widget w, int x, int y)
string GenerateValidIP(string potential_ip)
Attempts to generate a valid IP address & port from the given string in format like this: "192....
override bool OnFocus(Widget w, int x, int y)
ref OptionSelectorMultistate m_MapFilter
bool ProcessIntoIPAddress(out string potential_ip)
Removes all characters from the given string whirh are NOT a number, '.' or ':'. Returns true if any ...
static ServerBrowserHelperFunctions GetInstance()
static ref map< string, string > INTERNAL_MAP_NAMES
static string GetInternalMapName(string mapName)
Result for an object found in CGame.IsBoxCollidingGeometryProxy.
DayZGame g_Game
Definition dayzgame.c:3942
enum ShapeType ErrorEx
array< string > TStringArray
Definition enscript.c:712
proto string Substring(int start, int len)
Substring of 'str' from 'start' position 'len' number of characters.
void Split(string sample, out array< string > output)
Splits string into array of strings separated by 'sample'.
Definition enstring.c:396
proto native int ToInt()
Converts string to integer.
proto int ToLower()
Changes string to lowercase.
proto native int Length()
Returns length of string.
proto int TrimInPlace()
Removes leading and trailing whitespaces in string.
proto native void SetFocus(Widget w)
Icon x
Icon y
const int SERVER_BROWSER_PAGE_SIZE
TabType