#!/boot/home/config/bin/yab
REM Genealogie - BFS Image Creator
REM by Christian Albrecht
REM Requires yab v 1.0
REM 2006
Localize
screenWidth = peek("desktopwidth")
screenHeight = peek("desktopheight")
CheckBFSSize=0
bfssize$=""
bfsname$=""
bfsimage$=""
REM ######Configdatei prüfen######
configfolder$="BFSIC"
configfolder_check$=system$("find /boot/home/config/settings/BFSIC\n")
configfolder_ready$=system$("basename "+configfolder_check$)
if(configfolder$=configfolder_ready$)then
configdatei$="config.cfg\n"
configdatei_check$=system$("find /boot/home/config/settings/BFSIC/config.cfg\n")
configdatei_ready$=system$("basename "+configdatei_check$)
if(configdatei$=configdatei_ready$)then
configload()
else
anlegen = open("/boot/home/config/settings/BFSIC/config.cfg", "w")
print #anlegen 1
print #anlegen 200
close(anlegen)
configload()
endif
else
Output$=system$("mkdir /boot/home/config/settings/BFSIC")
configdatei$="config.cfg\n"
configdatei_check$=system$("find /boot/home/config/settings/BFSIC/config.cfg\n")
configdatei_ready$=system$("basename "+configdatei_check$)
if(configdatei$=configdatei_ready$)then
configload()
else
anlegen = open("/boot/home/config/settings/BFSIC/config.cfg", "w")
print #anlegen 1
print #anlegen 200
close(anlegen)
configload()
endif
endif
REM ######Freien Speicher ermitteln######
DiskFree()
MNTDisk$="mnt\n"
MNTFind$=system$("find /mnt")
MNTReady$=system$("basename "+MNTFind$)
if(MNTDisk$=MNTReady$)then
info$="mount"
else
info$="unmount"
endif
REM ######Hauptfenster######
window open ((screenWidth/2)-175), ((screenHeight/2)-175) to ((screenWidth/2)+175), ((screenHeight/2)+175), "View_BFSCreator", "BeSly Software - Create BFS Image"
window set "View_BFSCreator", "MinimumTo", 350,350
window set "View_BFSCreator", "MaximumTo", 350,350
inhalt()
dim part$(1)
inloop = true
while(inloop)
msg$ = message$
if (split(msg$, part$(), ":|") > 2) then
PartOne$=part$(1)
PartTwo$ = part$(2)
PartThree$ = part$(3)
fi
if (split(msg$, part$(), ":|") > 3) then
PartFour$ = part$(4)
fi
if (msg$ <> "")
switch msg$
case translate$("View_BFSCreator:_QuitRequested")+"|"
window close "BFSCreator"
break
case translate$("View_ISO:Main:Quit")+"|"
window close "BFSCreator"
break
case "ISOsize:"+PartTwo$+"|"
if(val(PartTwo$)>MaxSize)then
TEXTCONTROL CLEAR "ImageSize"
TEXTCONTROL SET "ImageSize", str$(MaxSize-security)
SLIDER SET "ISOsize", MaxSize-security
else
if(val(PartTwo$)>MaxSize-security)then
SLIDER COLOR "ISOsize", "barcolor", 233,99,71
TEXTCONTROL CLEAR "ImageSize"
TEXTCONTROL SET "ImageSize", PartTwo$
elseif(val(PartTwo$)<MaxSize-security)
SLIDER COLOR "ISOsize", "barcolor", 102,205,170
TEXTCONTROL CLEAR "ImageSize"
TEXTCONTROL set "ImageSize", PartTwo$
endif
endif
break
case "ImageSize:"+PartTwo$+"|"
Value$ = TEXTCONTROL GET$ "ImageSize"
SLIDER SET "ISOsize", val(Value$)
break
case "create|"
menu set translate$("Image"), translate$("Image Mount"), "Disable", "View_ISO"
menu set translate$("Image"), translate$("Image Unmount"), "Disable", "View_ISO"
view 20,320 to 320,330, "DrawView", "View_ISO"
draw set "BgColor", 255,255,255, "DrawView"
draw set "HighColor", 108,166,205,"DrawView"
draw set 0, "HighSolidFill"
draw text 98, 10, translate$("working in progress"), "DrawView"
bfssize$=textcontrol get$ "ImageSize"
bfsname$=textcontrol get$ "ImageName"
if(val(bfssize$)>(MaxSize-security))then
securityinfo()
else
bfsimage$ = FILEPANEL "Save-File", "Save", "/boot/home", bfsname$+".image"
imageerstellen(bfssize$)
endif
break
case "ready|"
CheckBFSSize=0
Output$=system$("IconTool "+bfsimage$+" Build STD_ICON 1 -1 SVG /boot/beos/etc/icons/svg/harddrive.svg")
view remove "View_ISO"
DiskFree()
inhalt()
MNTDisk$="mnt\n"
MNTFind$=system$("find /mnt")
MNTReady$=system$("basename "+MNTFind$)
if(MNTDisk$=MNTReady$)then
info$="mount"
else
info$="unmount"
endif
if(info$="mount")then
view remove "View_Button"
view 0,260 to 350,300, "View_Button", "View_ISO"
button 120,10 TO 230,30, "ImageUnmount", translate$("Image Unmount"), "View_Button"
tooltip "ImageUnmount", translate$("You have allready mount an Imagefile, please unmount it befor mounting")
window close "View_Ready"
else
view remove "View_Button"
view 0,260 to 350,300, "View_Button", "View_ISO"
button 120,10 TO 230,30, "ImageMount", translate$("Image Mount"), "View_Button"
window close "View_Ready"
endif
break
case "ImageMount|"
Output$=system$("mkdir /mnt")
Outpur$=system$("mount -t bfs "+bfsimage$+" /mnt")
view remove "View_Button"
view 0,260 to 350,300, "View_Button", "View_ISO"
button 120,10 TO 230,30, "ImageUnmount", translate$("Image Unmount"), "View_Button"
info$="mount"
break
case "ImageUnmount|"
Output$=system$("unmount /mnt")
Output$=system$("rm -r /mnt")
view remove "View_Button"
view 0,260 to 350,300, "View_Button", "View_ISO"
button 120,10 TO 230,30, "ImageMount", translate$("Image Mount"), "View_Button"
info$="unmount"
break
case translate$("View_ISO:Image:Image Mount")+"|"
LoadImage$=filepanel "Load-File-and-Directory", translate$("Load Imagefile"), "/boot/home/"
Output$=system$("mkdir /mnt")
Outpur$=system$("mount -t bfs "+LoadImage$+" /mnt")
menu set translate$("Image"), translate$("Image Mount"), "Disable", "View_ISO"
menu set translate$("Image"), translate$("Image Unmount"), "Enable", "View_ISO"
info$="mount"
view remove "View_ISO"
inhalt()
break
case translate$("View_ISO:Image:Image Unmount")+"|"
Output$=system$("unmount /mnt")
Output$=system$("rm -r /mnt")
menu set translate$("Image"), translate$("Image Mount"), "Enable", "View_ISO"
menu set translate$("Image"), translate$("Image Unmount"), "Disable", "View_ISO"
info$="unmount"
view remove "View_ISO"
inhalt()
break
case translate$("View_ISO:Main:New")+"|"
CheckBFSSize=0
bfssize$=""
bfsname$=""
bfsimage$=""
view remove "View_ISO"
DiskFree()
inhalt()
break
case translate$("View_ISO:Main:About")+"|"
about()
break
case translate$("View_ISO:Main:Settings")+"|"
settings()
break
case "close|"
window close "View_About"
break
case "inform:OFF|"
inform=0
break
case "inform:ON|"
inform=1
break
case "fastlaunch:OFF|"
Output$=system$("rm /boot/home/config/FastLaunch/BFSImageCreator")
break
case "fastlaunch:ON|"
Output$=system$("ln -s /boot/apps/Tools/BeSly_BFSImageCreator/BFSImageCreator /boot/home/config/FastLaunch
")
break
case "save_settings|"
security$=textcontrol get$ "securityspace"
if(val(security$)<100)then
textcontrol set "securityspace", "100"
else
security=val(security$)
anlegen = open("/boot/home/config/settings/BFSIC/config.cfg", "w")
print #anlegen inform
print #anlegen security
close(anlegen)
configload()
window close "View_Settings"
endif
break
case "cancel_settings|"
window close "View_Settings"
break
case "cancel_securityinfo|"
window close "View_Ready"
break
case "yes_securityinfo|"
window close "View_Ready"
bfsimage$ = FILEPANEL "Save-File", "Save", "/boot/home", bfsname$+".image"
imageerstellen()
break
default:
end switch
if(window count<1) inloop = false
sleep 0.1
wend
REM ######Inhalt des Hauptfensters######
sub inhalt()
view 0,0 to 350, 350, "View_ISO", "View_BFSCreator"
null()
menu "Main", "New", "", "View_ISO"
menu "Main", "About", "", "View_ISO"
menu "Main", "Settings", "", "View_ISO"
menu "Main", "Quit", "", "View_ISO"
menu "Image", "Image Mount", "", "View_ISO"
menu "Image", "Image Unmount", "", "View_ISO"
if(info$="mount")then
menu set "Image", "Image Mount", "Disable", "View_ISO"
menu set "Image", "Image Unmount", "Enable", "View_ISO"
elseif(info$="unmount")then
menu set "Image", "Image Mount", "Enable", "View_ISO"
menu set "Image", "Image Unmount", "Disable", "View_ISO"
endif
UsedSpace=val(HarddriveSize$)*1024-val(FreeSpace$)*1024
draw set "HighColor", 102,205,170,"View_ISO"
draw set 0, "HighSolidFill"
draw rect 10,30 to val(FS$(1)),70, "View_ISO"
draw set "HighColor", 233,99,71,"View_ISO"
draw set 0, "HighSolidFill"
draw rect val(FS$(1)) ,30 to 340,70, "View_ISO"
SLIDER 10,80 TO 340,90, "ISOsize", translate$("Image size"), 0, MaxHD, "View_ISO"
SLIDER LABEL "ISOsize", "0", str$(MaxHD)
SLIDER COLOR "ISOsize", "fillcolor", 240,255,240
SLIDER COLOR "ISOsize", "barcolor", 102,205,170
draw set "HighColor", 0,0,0,"View_ISO"
draw text 10, 180, translate$("Size of the Imagefile: "), "View_ISO"
TEXTCONTROL 160,165 TO 260,185, "ImageSize", bfssize$, "", "View_ISO"
draw text 270, 180, "MB", "View_ISO"
draw text 10, 210, translate$("Name of the Imagefile: "), "View_ISO"
TEXTCONTROL 160,195 TO 260,215, "ImageName", bfsname$, "", "View_ISO"
draw text 270, 210, ".Image", "View_ISO"
view 0,260 to 350,300, "View_Button", "View_ISO"
BUTTON 120,10 TO 230,30, "create", translate$("create"), "View_Button"
end sub
REM ######Freien Festplattenspeicher ermitteln######
sub DiskFree()
DiskFree$=System$("df /boot")
n=0
m=0
dim DiskFreeSplit$(1)
n=split(DiskFree$, DiskFreeSplit$(),"\n")
for m= 1 to n+1
DiskFree$=DiskFreeSplit$(9)
DiskFreeCutLeft$=left$(DiskFree$, len(DiskFree$)-14)
HarddriveSize$=right$(DiskFreeCutLeft$, len(DiskFreeCutLeft$)-20)
MaxHD=val(HarddriveSize$)*1000
break
next m
DiskFree$=System$("df /boot")
n=0
m=0
dim SpaceFreeSplit$(1)
n=split(DiskFree$, SpaceFreeSplit$(),"\n")
for m= 1 to n+1
DiskFree$=SpaceFreeSplit$(10)
SpaceFreeCutLeft$=left$(DiskFree$, len(DiskFree$)-14)
FreeSpace$=right$(SpaceFreeCutLeft$, len(SpaceFreeCutLeft$)-20)
MaxSize= val(FreeSpace$)*1024
break
next m
rechner()
end sub
REM ######Medien Groesze errechnen######
sub rechner()
ProzentReal=(MaxSize*100)/MaxHD
FreeSpace=(340*ProzentReal)/100
n=0
dim FS$(1)
n=split(str$(FreeSpace), FS$(), ".")
end sub
REM ######Imageadatei erstellen######
sub imageerstellen(bfssize$)
o=0
BalkenPosition=0
Output$=system$("/boot/beos/bin/dd if=/dev/zero of="+bfsimage$+" bs=1024k count="+bfssize$+"&")
for o = 1 to 500
if(val(CheckSize$)>1000)then
BalkenPosition=BPB+10
endif
view remove "DrawView"
view 20,320 to 320,330, "DrawView", "View_ISO"
draw set "BgColor", 255,255,255, "DrawView"
draw set "HighColor", 108,166,205,"DrawView"
draw set 0, "HighSolidFill"
draw text 98, 10, translate$("working in progress"), "DrawView"
draw rect 0,0 to BalkenPosition,20, "DrawView"
statusbalken()
wait 1
if(CS=val(bfssize$))then
draw set "BgColor", 108,166,205, "DrawView"
Output$=system$("mkbfs 2048 "+bfsimage$+"; sync")
window open ((screenWidth/2)-130), ((screenHeight/2)-100) to ((screenWidth/2)+130), ((screenHeight/2)+100), "View_Ready", "Ready"
window set "View_Ready", "MinimumTo", 260,200
window set "View_Ready", "MaximumTo", 260,200
window set "View_Ready", "look", "modal"
draw text 10, 20, translate$("Image created"), "View_Ready"
draw text 10, 60, translate$("Name: ")+bfsname$+".image", "View_Ready"
draw text 10, 80, translate$("Size: ")+bfssize$+" MB", "View_Ready"
draw text 10, 100, translate$("Path: ")+bfsimage$, "View_Ready"
draw text 10, 120, translate$("Filesystem: BFS"), "View_Ready"
BUTTON 90,160 TO 170,180, "ready", translate$("ok"), "View_Ready"
break
endif
if(o=500)then
o=0
endif
next o
if(inform=1)then
Output$=system$("inform --title 'BFS Image Creator' 'BFS Image created'")
endif
end sub
REM ######Fortschrittsbalken######
sub statusbalken()
CheckSize$=system$("ls -sh "+bfsimage$)
CS=val(CheckSize$)
if(val(CheckSize$)>1000)then
if(val(CheckSize$)>1.0)then
CheckBFSSize=1
BalkenPosition=BPB
endif
endif
if(CheckBFSSize=1)then
CheckSize$=system$("ls -sh "+bfsimage$)
CS=val(CheckSize$)
CS=CS*1000
ProzentImageSize=(CS*100)/val(bfssize$)
PIS$=str$(ProzentImageSize,"%9.0f")
PIS=val(PIS$)
BPB=BalkenPosition
BalkenPosition=(300*PIS)/100
else
CheckSize$=str$(CS,"%9.0f")
ProzentImageSize=(CS*100)/val(bfssize$)
PIS$=str$(ProzentImageSize,"%9.0f")
PIS=val(PIS$)
BPB=BalkenPosition
BalkenPosition=(300*PIS)/100
if(val(CheckSize$)>1000)then
BalkenPosition=BPB
endif
endif
end sub
REM #####Sicherheitsspeicherbereich#####
sub securityinfo()
window open ((screenWidth/2)-130), ((screenHeight/2)-100) to ((screenWidth/2)+130), ((screenHeight/2)+100), "View_Ready", "Info"
window set "View_Ready", "MinimumTo", 260,200
window set "View_Ready", "MaximumTo", 260,200
window set "View_Ready", "look", "modal"
textedit 20,20 TO 240,130, "Text_Ausgabe", 0, "View_Ready"
textedit color "Text_Ausgabe", "bgcolor", 216,216,216
textedit set "Text_Ausgabe", "editable", false
textedit add "Text_Ausgabe", translate$("The adjusted image size crosses the adjusted safety area.")
textedit add "Text_Ausgabe", "\n"
textedit add "Text_Ausgabe", translate$("This can be freeze your system or you can lost data.")
textedit add "Text_Ausgabe", "\n"
textedit add "Text_Ausgabe", " \n"
textedit add "Text_Ausgabe", translate$("Do you want to provide the image file with this attitude?")
textedit color "Text_Ausgabe", "color1", "ISOImageCreator"
TEXTEDIT SET "Text_Ausgabe", "font", "system-plain"
BUTTON 20,160 TO 120,180, "cancel_securityinfo", translate$("cancel"), "View_Ready"
BUTTON 140,160 TO 240,180, "yes_securityinfo", translate$("accept"), "View_Ready"
end sub
REM ######Zuruecksetzen######
sub null()
CheckBFSSize=0
info$=""
o=0
BalkenPosition=0
MNTDisk$="mnt\n"
MNTFind$=system$("find /mnt")
MNTReady$=system$("basename "+MNTFind$)
if(MNTDisk$=MNTReady$)then
info$="mount"
else
info$="unmount"
endif
end sub
REM ######Ueber######
sub about()
window open ((screenWidth/2)-130), ((screenHeight/2)-100) to ((screenWidth/2)+130), ((screenHeight/2)+100), "View_About", "About"
window set "View_About", "MinimumTo", 260,200
window set "View_About", "MaximumTo", 260,200
window set "View_About", "look", "modal"
draw text 15, 25, "BFS Image Creator", "View_About"
draw text 15, 60, "Version: ", "View_About"
draw text 130, 60, "1.3 / 06.10.2006", "View_About"
draw text 15, 80, translate$("Developer: "), "View_About"
draw text 130,80, "Christian Albrecht", "View_About"
draw text 15, 100, translate$("Nickname: "), "View_About"
draw text 130, 100, "Lelldorin", "View_About"
draw text 15, 120, translate$("Homepage: "), "View_About"
texturl 130,112, "Homepage", "http://www.besly.de", "http://www.besly.de", "View_About"
BUTTON 90,160 TO 170,180, "close", translate$("close"), "View_About"
end sub
REM ######Einstellungen######
sub settings()
window open ((screenWidth/2)-150), ((screenHeight/2)-100) to ((screenWidth/2)+150), ((screenHeight/2)+100), "View_Settings", "Settings"
window set "View_Settings", "MinimumTo", 260,200
window set "View_Settings", "MaximumTo", 260,200
window set "View_Settings", "look", "modal"
draw text 10, 20, "Settings", "View_Settings"
CHECKBOX 10,40, "inform", translate$("Use Infopopper"), inform, "View_Settings"
draw text 10, 100, translate$("Size of security free space: "), "View_Settings"
TEXTCONTROL 180,85 TO 230,100, "securityspace", "" , str$(security), "View_Settings"
draw text 230, 100, " MB", "View_Settings"
CHECKBOX 10,60, "fastlaunch", translate$("Link into FastLaunch"), fastlaunch, "View_Settings"
BUTTON 20,150 TO 120,170, "cancel_settings", translate$("cancel"), "View_Settings"
BUTTON 140,150 TO 240,170, "save_settings", translate$("save"), "View_Settings"
end sub
sub configload()
REM ######Configdatei auslesen######
configload$="/boot/home/config/settings/BFSIC/config.cfg"
auslesen=open(configload$, "r")
x=0
while (not EOF(auslesen))
x=x+1
dim config$(x)
line input #auslesen b$
config$(x)=b$
wend
close(auslesen)
inform=val(config$(1))
security=val(config$(2))
end sub
|