124 lines
		
	
	
		
			4.0 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
			
		
		
	
	
			124 lines
		
	
	
		
			4.0 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
| local MainGui = {
 | |
|   classname = "FNMainGui",
 | |
|   name = "main",
 | |
| }
 | |
| 
 | |
| local gui_tabs = {}
 | |
| gui_tabs["default-search"] = require "scripts/main/gui/default"
 | |
| gui_tabs["fnei-search"] = require "scripts/main/gui/fnei"
 | |
| --gui_tabs["category-search"] = require "scripts/main/gui/category"
 | |
| 
 | |
| local main_gui_template
 | |
| local content_flow_name = "content-flow"
 | |
| local tab_flow_name = "main-tabs"
 | |
| 
 | |
| function MainGui.init_template()
 | |
|   main_gui_template = {
 | |
|     { type = "frame", name = "main-frame", style = "fnei_main_frame", children = {
 | |
|       { type = "table", name = "main-table", style = "fnei_main_table", column_count = 1, children = {
 | |
| 
 | |
| ------------------ header ------------------
 | |
| 
 | |
|         { type = "frame", name = "header-frame", style = "fnei_main_content-frame", direction = "horizontal", children = {
 | |
|           { type = "table", name = "header-table", style = "fnei_main_header-table", column_count = 5, children = {
 | |
|             { type = "label", name = "header-label", style = "fnei_main_header-label", caption = {"fnei.FNEI"} },
 | |
|             { type = "empty-widget", name = "widget-sprite" , style = "fnei_main_header-sprite-widget", caption = {"fnei.FNEI"} },
 | |
|             { type = "empty-widget", name = "drag-widget", style = "fnei_main_header-drag-widget", caption = {"fnei.FNEI"}, drag_target = true},
 | |
|             { type = "sprite-button", name = "settings-key", style = "fnei_settings_button_style", tooltip = {"gui-menu.settings"}, event = MainGui.settings_key_event },
 | |
|             { type = "sprite-button", name = "exit-key", style = "fnei_exit_button_style", tooltip = {"gui.exit"}, event = Controller.main_key_event },
 | |
|           }}
 | |
|         }},
 | |
| 
 | |
| ------------------ tabs ------------------
 | |
| 
 | |
|         { type = "flow", name = tab_flow_name },
 | |
| 
 | |
| ------------------ content -------------------
 | |
| 
 | |
|         { type = "flow", name = content_flow_name },
 | |
| 
 | |
|       }}
 | |
|     }}
 | |
|   }
 | |
| end
 | |
| 
 | |
| function MainGui.init_events(gui_tabs_cont_list)
 | |
|   MainGui.init_template()
 | |
|   Events.init_temp_events(MainGui.name, main_gui_template)
 | |
| 
 | |
|   for gui_name,gui in pairs(gui_tabs) do
 | |
|     local contr = gui_tabs_cont_list[gui_name]
 | |
| 
 | |
|     if not contr then
 | |
|       Debug:error("Error in function MainGui.init_events: controller ", gui_name, "not found")
 | |
|     end
 | |
| 
 | |
|     gui.init_events(MainGui.name, contr)
 | |
|     contr.init_event(MainGui.name, gui_tabs[gui_name])
 | |
|   end
 | |
| end
 | |
| 
 | |
| function MainGui.get_cur_gui_tab(tab_name)
 | |
|   return gui_tabs[tab_name]
 | |
| end
 | |
| 
 | |
| function MainGui.is_gui_open()
 | |
|   local val = Gui.get_gui(Gui.get_pos(), main_gui_template[1].name)
 | |
|   if val and next(val) and val.valid then
 | |
|     return true
 | |
|   else
 | |
|     return false
 | |
|   end
 | |
| end
 | |
| 
 | |
| function MainGui.close_window()
 | |
|   if MainGui.is_gui_open() then
 | |
|     local gui = Gui.get_gui(Gui.get_pos(), main_gui_template[1].name)
 | |
|     Gui.set_location(gui.location)
 | |
|     gui.destroy()
 | |
|   end
 | |
| end
 | |
| 
 | |
| function MainGui.draw_tabs(tabs)
 | |
|   tabs:draw_tabs()
 | |
| end
 | |
| 
 | |
| function MainGui.open_window()
 | |
|   MainGui.close_window()
 | |
|   gui = Gui.add_gui_template(Gui.get_pos(), main_gui_template)
 | |
|   gui.location = Gui.get_location()
 | |
|   return gui
 | |
| end
 | |
| 
 | |
| function MainGui.draw_search_tab(cur_tab)
 | |
|   local parent = Gui.get_gui(Gui.get_pos(), content_flow_name)
 | |
| 
 | |
|   for _, gui in pairs(parent.children) do
 | |
|     if gui and gui.valid then
 | |
|       gui.destroy()
 | |
|     end
 | |
|   end
 | |
| 
 | |
|   if parent and gui_tabs[cur_tab] then
 | |
|     gui_tabs[cur_tab].draw_template(parent)
 | |
|   else
 | |
|     Debug:error("Error in function MainGui.draw_factorio_search_tab(): gui == nil")
 | |
|   end
 | |
| end
 | |
| 
 | |
| function MainGui.settings_key_event(event)
 | |
|   Controller.open_event("settings")
 | |
| end
 | |
| 
 | |
| function MainGui.search_event(event)
 | |
|   out(event)
 | |
| end
 | |
| 
 | |
| return MainGui
 | |
| 
 | |
| -- local buttons = ui.add({type = "flow", name = "fnei_page_line", direction = "horizontal"})
 | |
| 
 | |
| --   buttons.add({type = "sprite-button", name = "fnei_prev_main_page", style = "fnei_left_arrow_button_style"})
 | |
| --   buttons.add({type = "label", name = "fnei_page_number", caption = "empty_main_page"})
 | |
| --   buttons.add({type = "sprite-button", name = "fnei_next_main_page", style = "fnei_right_arrow_button_style"})
 | |
| -- ui.add({type = "flow", name = "fnei_element_list", direction = "horizontal"}) |