コンピュータを楽しもう!!

今、自分が面白くていろいろやってみたことを書き綴りたいと思います。連絡先はtarosa.yでgmail.comです。

メニュの更新

Luaridaのメニュプログラムをバージョンアップしました。
メニュの下から2番目に、「Luaファイル直接実行」を追加しました。ファイル名を直接入力して実行できます。間違ったファイル名を入力するとエラーになります。
Luaridaメニュ更新アプリを用いて更新してください。
参考に新規メニュプログラムを下記に書いておきます。

------------------------------------------
--アプリ選択メニュ v1.02
------------------------------------------
--toast( "タッチでLuaridaを終了します" );touch(3);system.exit()
--関数宣言--------------------------------
main={}       --mainメソッド
split={}      --指定キャラクタの前後で2つの文字列に分ける
directlua={}  --実行するluaファイル名の入力
--グローバル変数宣言----------------------
Ver = "v1.02"
Menu={
   "はじめに, hajimeni.lua"
  ,"exitサンプル, exitsample.lua"
  ,"文字表示サンプル, textsample.lua"
  ,"グラフィックサンプル, graphicsample.lua"
  ,"文字入力サンプル, textinput.lua"
  ,"画面タッチサンプル,touchsample.lua"
  ,"Luaファイル直接実行, lua"
  ,"ルアリダアプリ選択メニュ "..Ver..", luarida.lua"
}
LuaridaPath="/sdcard/luarida"  --luaファイルを保存しているPath
------------------------------------------
mt={}
mt.__newindex=function(mtt,mtn,mtv)
 dialog( "Error Message", "宣言していない変数 "..mtn.." に値を入れようとしています", 0 )
 toast("画面タッチで実行を続けます", 1)
 touch(3)
end
mt.__index=function(mtt,mtn)
 dialog( "Error Message", "変数 "..mtn.." は宣言されていません", 0 )
 toast("画面タッチで実行を続けます", 1)
 touch(3)
end
setmetatable(_G,mt)
--------以下が実プログラム----------------
------------------------------------------
--文字の分解
------------------------------------------
function split(str, d)
local s = str
local t = {}
local p = "%s*(.-)%s*"..d.."%s*"
local f = function(v)	table.insert(t, v)	end
 if s ~= nil then
   string.gsub(s, p, f)
   f(string.gsub(s, p, ""))
 end
 return t
end
------------------------------------------
-- 実行するluaファイル名の入力
------------------------------------------
function directlua()
local luafilename, a = editText("実行するluaファイル名の入力")
local pos,str
local i = 0
 if( a~=nil and a==1 and luafilename~=nil and luafilename~="" )then
   --拡張子のチェック
   pos = string.find(luafilename, "." , i, true )
   while(pos~=nil)do
     i = pos + 1
     pos = string.find(luafilename, "." , i, true )
   end
   str = string.sub(luafilename, i, string.len(luafilename) )
   if( i==0 or (str~="lua" and str~="luac") )then
     luafilename = luafilename..".lua"  --.luaの追加
   end
 else
   luafilename = "luarida.lua"
 end
 return luafilename
end
------------------------------------------
--メインプログラム
------------------------------------------
function main()
local t={}
local tmenu={}
local a, i
local key
local value
local x, y, b
 canvas.drawCls( color(0,0,255) )  --背景を青に
 item.clear()                      --item Listのclear
 --menuテーブルを分解してitem Listに追加していく
 for key,value in pairs( Menu ) do
   t = split( value, "," )
   item.add( t[1], 0 )
   tmenu[key] = t[2]    --実行ファイル名をtmenuに取得
 end
 --リスト選択
 a = item.list("Luarida Ver."..system.version().."\n2タッチでエディタが立ち上がります" )
 if( a~=0 )then
   for i=1, 1000 do
     x, y, b = touch()
     if( b~=1 )then
       if( tmenu[a]=="lua" )then tmenu[a] = "luarida.lua" end
       --エディタ起動
       --system.impCallActionView("file://"..LuaridaPath.."/"..tmenu[a], "text/plain")
       system.expCall( "info.tdoc.sheditor.EditMain", "file://"..LuaridaPath.."/"..tmenu[a], "text/plain" )
       break
     end
   end
   if( tmenu[a]=="lua" )then
     tmenu[a] = directlua()
   end
   system.setrun( LuaridaPath.."/"..tmenu[a] )
 else
   dialog( "Luaridaを終了します", "また使ってね", 1 )
   --Luaridaを強制終了します
   system.exit()
 end
end
main()