| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 |
- let tab_scripts_hscript: ui_handle_t = ui_handle_create();
- let tab_scripts_text_coloring: ui_text_coloring_t = null;
- function tab_scripts_draw(htab: ui_handle_t) {
- if (ui_tab(htab, tr("Scripts"))) {
- ui_begin_sticky();
- let row: f32[] = [ -70, -70, -140 ];
- ui_row(row);
- if (ui_button(tr("Run"))) {
- js_eval(tab_scripts_hscript.text);
- }
- if (ui_button(tr("Edit"))) {
- ui_menu_draw(function() {
- if (ui_menu_button(tr("Clear"))) {
- tab_scripts_hscript.text = "";
- }
- if (ui_menu_button(tr("Import"))) {
- ui_files_show("js", false, false, function(path: string) {
- let b: buffer_t = data_get_blob(path);
- tab_scripts_hscript.text = sys_buffer_to_string(b);
- data_delete_blob(path);
- });
- }
- if (ui_menu_button(tr("Export"))) {
- ui_files_show("js", true, false, function(path: string) {
- let str: string = tab_scripts_hscript.text;
- let f: string = ui_files_filename;
- if (f == "") {
- f = tr("untitled");
- }
- path = path + path_sep + f;
- if (!ends_with(path, ".js")) {
- path += ".js";
- }
- iron_file_save_bytes(path, sys_string_to_buffer(str), 0);
- });
- }
- });
- }
- let ar: string[] = [ "script.js" ];
- let file_handle: ui_handle_t = ui_handle(__ID__);
- ui_combo(file_handle, ar, tr("File"), false, ui_align_t.LEFT);
- ui_end_sticky();
- let _font: draw_font_t = ui.ops.font;
- let _font_size: i32 = ui.font_size;
- let f: draw_font_t = data_get_font("font_mono.ttf");
- ui_set_font(ui, f);
- ui.font_size = math_floor(15 * UI_SCALE());
- ui_text_area_line_numbers = true;
- ui_text_area_scroll_past_end = true;
- ui_text_area_coloring = tab_scripts_get_text_coloring();
- ui_text_area(tab_scripts_hscript);
- ui_text_area_line_numbers = false;
- ui_text_area_scroll_past_end = false;
- ui_text_area_coloring = null;
- ui_set_font(ui, _font);
- ui.font_size = _font_size;
- }
- }
- function tab_scripts_get_text_coloring(): ui_text_coloring_t {
- if (tab_scripts_text_coloring == null) {
- let blob: buffer_t = data_get_blob("text_coloring.json");
- tab_scripts_text_coloring = json_parse(sys_buffer_to_string(blob));
- }
- return tab_scripts_text_coloring;
- }
|