-- 这是聚光灯控制脚本，用lua 5.2.x语言编写。聚光灯介绍形式是枫传网络独创的软件介绍方式。通过将软件界面雾化为背景，并用聚光灯突显要介绍的部分，配合文字说明，对软件进行介绍。您可以按照提示修改此脚本。
-- 下面为文件信息，除CodePage外，其它项目请不要修改。
Application = "GTalkabout"
Version = "1.1"
ScriptType = "tutorial"
CodePage = 936	-- 简体中文，如果您将此脚本翻译为其他语种，请修改为该语种对应的代码页，否则，请不要修改。

-- 下面为介绍文字，是markdown格式文本。您可以将其翻译为其它语种或进行修改，请不要修改圆括号内的文字。

GitHub_text = [[
GitHub上源代码的批注
===
极客讨论器内置了git版本库导入subversion版本库的工具，可以从GitHub上下载代码然后在本地批注。

请选择**第三方开源项目**……

[关闭向导](cancel_auto_load)
]]

AboutConfig_text = [[
配置界面
===
仅有一处必须配置，其它保持缺省即可。请在左边的配置类别中选择**源代码**。
]]

Subversion_text = [[
源代码配置
===
请选择**git**标签页。
]]

Git_text = [[
源代码配置
===
请开启**使用git版本库**。
]]

GitURL_text = [[
源代码配置
===
请在项目主页找到https克隆地址 ![HTTPS clone URL](github_repository.png)，并输入到**版本库URL**中。

[下一步](check_git)
]]

GitURL_Error_text = [[
源代码配置
===
您输入的不是正确的GitHub版本库地址。

[下一步](check_git)
]]

Apply_text = [[
配置完成
===
点击**确定**即可开始使用。  
也可以先将配置保存为一个配置文件，这样，它将出现在首页的**最近使用的配置**列表中。

因为您没有配置**本地**信息，下载的代码和导入的subversion版本库都将放在缺省目录下。  
极客讨论器会为GitHub项目创建缺省目录，您可以在关闭向导后选择**本地**配置类别指定目录。  
*如您不确定是否有必要将项目下载到本地以及导入本地subversion版本库，也可以先关闭“使用工作区”选项或者关闭“使用映射库”选项，先远程浏览项目，并随时可以重新配置，开启这些选项。*

[关闭向导](cancel_auto_load)
]]

-- 下面为聚光灯流程控制，请不要修改！
function ControlValueIterator(ControlTable)
	local iIndex = 0

	return function()
		iIndex = iIndex + 1;
		local ControlValue = ControlTable[iIndex];

		if type(ControlValue) == "string" then
			return ControlValue, "";
		elseif type(ControlValue) == "table" then
			local Control, Value = ControlValue[1], ControlValue[2];

			if type(Control) == "string" then
				if type(Value) == "string" then
					return Control, Value;
				else
					return Control, "";
				end
			else
				return nil;
			end
		else
			return nil;
		end
	end
end

function ChangeSpotlights_check_git(Iter, ControlTable)
	local Control, Value = Iter();

	if Control == "git_url" then
		if string.match(Value, "https://.*github.com/.+/.+.git") then
			return ChangeSpotlights_apply(Iter, ControlTable);
		else
			return { {"git_url", 2} }, GitURL_Error_text;
		end
	end
	return { {"git_using", 1}, {"git_url", 2} }, GitURL_text;
end

function ChangeSpotlights_apply(Iter, ControlTable)
	return { {"save_as", 0}, {"apply", 0} }, Apply_text;
end

function ChangeSpotlights_about_config(Iter, ControlTable)
	return { {"config_tab", 1}, {"subversion_page", 0} }, Subversion_text;
end

function ChangeSpotlights_config(Iter, ControlTable)
	local Control, Value = Iter();

	if Control == "category_tree" and string.sub(Value, 1, 5) == "about" then
		return ChangeSpotlights_about_config(Iter, ControlTable);
	end
	return { {"category_tree", 1}, {"config_tab", 0} }, AboutConfig_text;
end

function ChangeSpotlights(ControlTable)
	local Iter = ControlValueIterator(ControlTable);
	local Control, Value = Iter();

	if Control == "index" then
		return { {"new_config", 0}, {"open_source", 1} }, GitHub_text;
	elseif Control == "config" then
		return ChangeSpotlights_config(Iter, ControlTable);
	elseif Control == "check_git" then
		return ChangeSpotlights_check_git(Iter, ControlTable);
	elseif Control == "config_tab" and string.sub(Value, 1, 3) == "git" then
		return { {"config_tab", 0}, {"git_using", 1} }, Git_text;
	elseif Control == "git_using" and Value == "true" then
		return { {"git_url", 2} }, GitURL_text;
	elseif Control == "close" or Control == "cancel_auto_load" then
		return {}, "";
	end
end

AutoLoad = 0