I have a problem in my lua script that writes out to a .ini file for the skin where a either a loop or the write statement inside is being interrupted. I'm not sure exactly why the interruption is happening, as I have check mouse click timings, rainmeter skin updates, specific directories but all come back with the same result. I can also run the script from CMD and it works flawlessly everytime.
Rainmeter 4.2 and 4.3 beta
Windows 10
Ryzen 7 1800x
GTX 1080
Rainmeter running off of HDD
Code: Select all
function Initialize()
Directory = tostring(SELF:GetOption('Directory'))
end
function CreateList()
readFile = io.open('E:/Documents/Rainmeter/Skins/GUIPlate/@resources/GameList.txt')
writeFile = io.open("E:/Documents/Rainmeter/Skins/GUIPlate/GameMenu/games.ini", "w+")
DirectoryFolder = {}
fullPath = {}
numGame = 0
XPos = 0
YPos = 166
for pathPoint in Directory:gmatch("(.-)%\\") do
table.insert(fullPath, pathPoint)
table.insert(DirectoryFolder, '[MeterScript'..numGame..']')
table.insert(DirectoryFolder, 'Measure=Script')
table.insert(DirectoryFolder, 'ScriptFile="#@#ReadGameFolder.lua"')
table.insert(DirectoryFolder, 'Directory='..table.concat(fullPath, '\\')..'\\')
table.insert(DirectoryFolder, '[MeterPath'..pathPoint..']')
table.insert(DirectoryFolder, 'Meter=Image')
table.insert(DirectoryFolder, 'ImageName=#@#TopPath.png')
table.insert(DirectoryFolder, 'X='..XPos)
table.insert(DirectoryFolder, 'Y=146')
table.insert(DirectoryFolder, 'W='..pathPoint:len()*11)
table.insert(DirectoryFolder, 'H=20')
table.insert(DirectoryFolder, 'LeftmouseDownAction = [!CommandMeasure "MeterScript'..numGame..'" "CreateList()"]')
table.insert(DirectoryFolder, 'LeftmouseUpAction = [!refresh]')
table.insert(DirectoryFolder, '[TextPath'..numGame..']')
table.insert(DirectoryFolder, 'Meter=String')
table.insert(DirectoryFolder, 'X='..(XPos+1))
table.insert(DirectoryFolder, 'Y=146')
table.insert(DirectoryFolder, 'W=191')
table.insert(DirectoryFolder, 'H=20')
table.insert(DirectoryFolder, 'FontSize=12')
table.insert(DirectoryFolder, 'FontColor=0,234,255,255')
if pathPoint:len() > 11 then
table.insert(DirectoryFolder, 'Text="'..pathPoint:sub(1, 11)..'"')
else
table.insert(DirectoryFolder, 'Text="'..pathPoint..'"')
end
numGame = numGame + 1
XPos = XPos + pathPoint:len()*11
end
XPos = 0
os.execute('E:\\Documents\\Rainmeter\\Skins\\GUIPlate\\@resources\\PrintGames.bat "'..Directory..'" d > E:\\Documents\\Rainmeter\\Skins\\GUIPlate\\@resources\\GameList.txt')
for line in readFile:lines() do
table.insert(DirectoryFolder, '[MeterScript'..numGame..']')
table.insert(DirectoryFolder, 'Measure=Script')
table.insert(DirectoryFolder, 'ScriptFile="#@#ReadGameFolder.lua"')
table.insert(DirectoryFolder, 'Directory="'..table.concat(fullPath, '\\')..'\\'..line..'\\"')
table.insert(DirectoryFolder, '[MeterPath'..line..']')
table.insert(DirectoryFolder, 'Meter=Image')
table.insert(DirectoryFolder, 'ImageName=#@#PathShortcuts.png')
table.insert(DirectoryFolder, 'X='..XPos)
table.insert(DirectoryFolder, 'Y='..YPos)
table.insert(DirectoryFolder, 'LeftmouseDownAction = [!CommandMeasure "MeterScript'..numGame..'" "CreateList()"]')
table.insert(DirectoryFolder, 'LeftmouseUpAction = [!refresh]')
table.insert(DirectoryFolder, '[TextPath'..numGame..']')
table.insert(DirectoryFolder, 'Meter=String')
table.insert(DirectoryFolder, 'X='..(XPos+1))
table.insert(DirectoryFolder, 'Y='..YPos)
table.insert(DirectoryFolder, 'W=100')
table.insert(DirectoryFolder, 'H=20')
table.insert(DirectoryFolder, 'FontSize=12')
table.insert(DirectoryFolder, 'FontColor=0,234,255,255')
if line:len() > 22 then
table.insert(DirectoryFolder, 'Text="'..line:sub(1, 22)..'"')
else
table.insert(DirectoryFolder, 'Text="'..line..'"')
end
numGame = numGame + 1
YPos = YPos + 20
if YPos > 1060 then
XPos = XPos + 200
YPos = 166
end
end
os.execute('E:\\Documents\\Rainmeter\\Skins\\GUIPlate\\@resources\\PrintGames.bat "'..Directory..'" -d-h > E:\\Documents\\Rainmeter\\Skins\\GUIPlate\\@resources\\GameList.txt')
for line in readFile:lines() do
table.insert(DirectoryFolder, '[MeterGame'..numGame..']')
table.insert(DirectoryFolder, 'Meter=Image')
table.insert(DirectoryFolder, 'ImageName=#@#PathShortcuts.png')
table.insert(DirectoryFolder, 'X='..XPos)
table.insert(DirectoryFolder, 'Y='..YPos)
table.insert(DirectoryFolder, 'LeftmouseUpAction=["'..Directory..'\\'..line..'"]')
table.insert(DirectoryFolder, '[TextGame'..numGame..']')
table.insert(DirectoryFolder, 'Meter=String')
table.insert(DirectoryFolder, 'X='..(XPos+1))
table.insert(DirectoryFolder, 'Y='..YPos)
table.insert(DirectoryFolder, 'W=100')
table.insert(DirectoryFolder, 'H=20')
table.insert(DirectoryFolder, 'FontSize=11')
table.insert(DirectoryFolder, 'FontColor=0,234,255,255')
if line:sub(1,-5):len() > 25 then
table.insert(DirectoryFolder, 'Text="'..line:sub(1,-5):sub(1, 25)..'"')
else
table.insert(DirectoryFolder, 'Text="'..line:sub(1,-5)..'"')
end
YPos = YPos + 20
if YPos > 1060 then
XPos = XPos + 200
YPos = 166
end
numGame = numGame + 1
end
io.output(writeFile)
--print(table.concat(DirectoryFolder, '\n')) --for debug
io.write(table.concat(DirectoryFolder, '\n'))
end
--CreateList() --debug for console running
Code: Select all
[Rainmeter]
UpdateDivider= -1
[MeterScript]
Measure=Script
ScriptFile="#@#ReadGameFolder.lua"
Directory=E:\Documents\Rainmeter\Skins\GUIPlate\@resources\games\
[MeterDocuments]
Meter = Image
ImageName = #@#MyComputerButton
LeftmouseDownAction = [!CommandMeasure "MeterScript" "CreateList()"]
LeftmouseUpAction = [!ToggleConfig "GUIPlate\GameMenu" "games.ini"]
Code: Select all
[Rainmeter]
Update= -1
UpdateDivider= -1
[MeterScript1]
Measure=Script
ScriptFile="#@#ReadGameFolder.lua"
Directory=E:\Videos\
[MeterScript2]
Measure=Script
ScriptFile="#@#ReadGameFolder.lua"
Directory="E:\Folder 1\workStuff\"
[MeterScript3]
Measure=Script
ScriptFile="#@#ReadGameFolder.lua"
Directory=E:\Pictures\
[MeterScript4]
Measure=Script
ScriptFile="#@#ReadGameFolder.lua"
Directory=E:\Documents\
[MeterScript5]
Measure=Script
ScriptFile="#@#ReadGameFolder.lua"
Directory=E:\Downloads\
[MeterScript6]
Measure=Script
ScriptFile="#@#ReadGameFolder.lua"
Directory="E:\Folder 1\"
[MeterFolder]
Meter = Image
ImageName = #@#FLDFLD
LeftmouseDownAction = [!CommandMeasure "MeterScript6" "CreateList()"]
LeftmouseUpAction = [!RainmeterActivateConfig "GUIPlate\GameMenu" "games.ini"][!Refresh "GUIPlate\GameMenu"]
x = 0
y = 0
[MeterDownloads]
Meter = Image
ImageName = #@#DNLFLD
LeftmouseDownAction = [!CommandMeasure "MeterScript5" "CreateList()"]
LeftmouseUpAction = [!RainmeterActivateConfig "GUIPlate\GameMenu" "games.ini"][!Refresh "GUIPlate\GameMenu"]
x = 30
y = 0
[MeterDocuments]
Meter = Image
ImageName = #@#DOCFLD
LeftmouseDownAction = [!CommandMeasure "MeterScript4" "CreateList()"]
LeftmouseUpAction = [!RainmeterActivateConfig "GUIPlate\GameMenu" "games.ini"][!Refresh "GUIPlate\GameMenu"]
x = 60
y = 0
[MeterPictures]
Meter = Image
ImageName = #@#PICFLD
LeftmouseDownAction = [!CommandMeasure "MeterScript3" "CreateList()"]
LeftmouseUpAction = [!RainmeterActivateConfig "GUIPlate\GameMenu" "games.ini"][!Refresh "GUIPlate\GameMenu"]
x = 90
y = 0
[MeterWork]
Meter = Image
ImageName = #@#WRKFLD
LeftmouseDownAction = [!CommandMeasure "MeterScript2" "CreateList()"]
LeftmouseUpAction = [!RainmeterActivateConfig "GUIPlate\GameMenu" "games.ini"][!Refresh "GUIPlate\GameMenu"]
x = 120
y = 0
[MeterVideos]
Meter = Image
ImageName = #@#VIDFLD
LeftmouseDownAction = [!CommandMeasure "MeterScript1" "CreateList()"]
LeftmouseUpAction = [!RainmeterActivateConfig "GUIPlate\GameMenu" "games.ini"][!Refresh "GUIPlate\GameMenu"]
x = 150
y = 0
Also, if anyone has any Ideas about removing the batch script call, Please PM me, as I have looked into everything I know.