2015-05-05 13:01:09 -07:00
--multicraft
2014-04-18 06:39:15 -07:00
--Copyright (C) 2014 sapier
--
--This program is free software; you can redistribute it and/or modify
--it under the terms of the GNU Lesser General Public License as published by
--the Free Software Foundation; either version 2.1 of the License, or
--(at your option) any later version.
--
--This program is distributed in the hope that it will be useful,
--but WITHOUT ANY WARRANTY; without even the implied warranty of
--MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
--GNU Lesser General Public License for more details.
--
--You should have received a copy of the GNU Lesser General Public License along
--with this program; if not, write to the Free Software Foundation, Inc.,
--51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
--------------------------------------------------------------------------------
local function get_formspec ( tabview , name , tabdata )
if modmgr.global_mods == nil then
modmgr.refresh_globals ( )
end
if tabdata.selected_mod == nil then
tabdata.selected_mod = 1
end
local retval =
2014-12-07 13:09:21 -08:00
" label[0.05,-0.25; " .. fgettext ( " Installed Mods: " ) .. " ] " ..
" textlist[0,0.25;5.1,4.35;modlist; " ..
2014-04-18 06:39:15 -07:00
modmgr.render_modlist ( modmgr.global_mods ) ..
" ; " .. tabdata.selected_mod .. " ] "
retval = retval ..
2014-12-07 13:09:21 -08:00
-- "label[0.8,4.2;" .. fgettext("Add mod:") .. "]" ..
2014-04-18 06:39:15 -07:00
-- TODO Disabled due to upcoming release 0.4.8 and irrlicht messing up localization
2015-04-23 12:55:42 -07:00
-- "image_button[0.75,4.85;1.8,0.5;btn_mod_mgr_install_local;".. fgettext("Local install") .. "]" ..
2015-05-05 13:01:09 -07:00
" image_button[0,4.85;5.25,0.8; " .. multicraft.formspec_escape ( mm_texture.basetexturedir ) .. " menu_button.png;btn_modstore; " .. fgettext ( " Online mod repository " ) .. " ] "
2014-04-18 06:39:15 -07:00
local selected_mod = nil
if filterlist.size ( modmgr.global_mods ) >= tabdata.selected_mod then
selected_mod = modmgr.global_mods : get_list ( ) [ tabdata.selected_mod ]
end
if selected_mod ~= nil then
local modscreenshot = nil
--check for screenshot beeing available
local screenshotfilename = selected_mod.path .. DIR_DELIM .. " screenshot.png "
local error = nil
local screenshotfile , error = io.open ( screenshotfilename , " r " )
if error == nil then
screenshotfile : close ( )
modscreenshot = screenshotfilename
end
if modscreenshot == nil then
2015-02-10 20:42:58 -08:00
modscreenshot = defaulttexturedir .. " no_screenshot.png "
2014-04-18 06:39:15 -07:00
end
retval = retval
.. " image[5.5,0;3,2; " .. core.formspec_escape ( modscreenshot ) .. " ] "
.. " label[8.25,0.6; " .. selected_mod.name .. " ] "
local descriptionlines = nil
error = nil
local descriptionfilename = selected_mod.path .. " description.txt "
local descriptionfile , error = io.open ( descriptionfilename , " r " )
if error == nil then
local descriptiontext = descriptionfile : read ( " *all " )
descriptionlines = core.splittext ( descriptiontext , 42 )
descriptionfile : close ( )
else
descriptionlines = { }
table.insert ( descriptionlines , fgettext ( " No mod description available " ) )
end
retval = retval ..
" label[5.5,1.7; " .. fgettext ( " Mod information: " ) .. " ] " ..
" textlist[5.5,2.2;6.2,2.4;description; "
for i = 1 , # descriptionlines , 1 do
retval = retval .. core.formspec_escape ( descriptionlines [ i ] ) .. " , "
end
if selected_mod.is_modpack then
retval = retval .. " ;0] " ..
2015-05-05 13:01:09 -07:00
" image_button[10,4.85;2,0.8; " .. multicraft.formspec_escape ( mm_texture.basetexturedir ) .. " menu_button.png;btn_mod_mgr_rename_modpack; " ..
2014-04-18 06:39:15 -07:00
fgettext ( " Rename " ) .. " ] "
2015-05-05 13:01:09 -07:00
retval = retval .. " image_button[5.5,4.85;4.5,0.8; " .. multicraft.formspec_escape ( mm_texture.basetexturedir ) .. " menu_button.png;btn_mod_mgr_delete_mod; "
2014-04-18 06:39:15 -07:00
.. fgettext ( " Uninstall selected modpack " ) .. " ] "
else
--show dependencies
2015-01-20 17:50:33 -08:00
retval = retval .. " , " .. fgettext ( " Depends: " ) .. " , "
2014-04-18 06:39:15 -07:00
local toadd = modmgr.get_dependencies ( selected_mod.path )
retval = retval .. toadd .. " ;0] "
2015-05-05 13:01:09 -07:00
retval = retval .. " image_button[5.5,4.85;4.5,0.8; " .. multicraft.formspec_escape ( mm_texture.basetexturedir ) .. " menu_button.png;btn_mod_mgr_delete_mod; "
2014-04-18 06:39:15 -07:00
.. fgettext ( " Uninstall selected mod " ) .. " ] "
end
end
return retval
end
--------------------------------------------------------------------------------
local function handle_buttons ( tabview , fields , tabname , tabdata )
if fields [ " modlist " ] ~= nil then
local event = core.explode_textlist_event ( fields [ " modlist " ] )
tabdata.selected_mod = event.index
return true
end
if fields [ " btn_mod_mgr_install_local " ] ~= nil then
core.show_file_open_dialog ( " mod_mgt_open_dlg " , fgettext ( " Select Mod File: " ) )
return true
end
if fields [ " btn_modstore " ] ~= nil then
local modstore_ui = ui.find_by_name ( " modstore " )
if modstore_ui ~= nil then
tabview : hide ( )
modstore.update_modlist ( )
modstore_ui : show ( )
else
print ( " modstore ui element not found " )
end
return true
end
if fields [ " btn_mod_mgr_rename_modpack " ] ~= nil then
local dlg_renamemp = create_rename_modpack_dlg ( tabdata.selected_mod )
dlg_renamemp : set_parent ( tabview )
tabview : hide ( )
dlg_renamemp : show ( )
return true
end
if fields [ " btn_mod_mgr_delete_mod " ] ~= nil then
local dlg_delmod = create_delete_mod_dlg ( tabdata.selected_mod )
dlg_delmod : set_parent ( tabview )
tabview : hide ( )
dlg_delmod : show ( )
return true
end
if fields [ " mod_mgt_open_dlg_accepted " ] ~= nil and
fields [ " mod_mgt_open_dlg_accepted " ] ~= " " then
modmgr.installmod ( fields [ " mod_mgt_open_dlg_accepted " ] , nil )
return true
end
return false
end
--------------------------------------------------------------------------------
tab_mods = {
name = " mods " ,
caption = fgettext ( " Mods " ) ,
cbf_formspec = get_formspec ,
cbf_button_handler = handle_buttons ,
on_change = gamemgr.update_gamelist
}