Code: Alles auswählen
;- Window Constants
;
Enumeration
#Window_0
EndEnumeration
;- Gadget Constants
;
Enumeration
#Text_00
#Text_10
#Text_20
#Text_30
#Text_40
#Text_50
#USER_READ
#GROUP_READ
#WORLD_READ
#USER_WRITE
#GROUP_WRITE
#WORLD_WRITE
#USER_RUN
#GROUP_RUN
#WORLD_RUN
#NUMERIC
#WORDS
#OK
EndEnumeration
Procedure.s Open_Chmod(chmod.s)
If OpenWindow(0, 0, 0, 320, 240, #PB_Window_SystemMenu | #PB_Window_TitleBar | #PB_Window_ScreenCentered , "CHMOD")
If CreateGadgetList(WindowID())
TextGadget(#Text_00, 10, 40, 80, 20, "Owner:")
TextGadget(#Text_10, 10, 70, 80, 20, "Group:")
TextGadget(#Text_20, 10, 100, 80, 20, "World:")
TextGadget(#Text_30, 120, 10, 50, 20, "Read", #PB_Text_Center)
TextGadget(#Text_40, 190, 10, 50, 20, "Write", #PB_Text_Center)
TextGadget(#Text_50, 260, 10, 50, 20, "Run", #PB_Text_Center)
CheckBoxGadget(#USER_READ, 140, 40, 20, 20, "")
CheckBoxGadget(#GROUP_READ, 140, 70, 20, 20, "")
CheckBoxGadget(#WORLD_READ, 140, 100, 20, 20, "")
CheckBoxGadget(#USER_WRITE, 210, 40, 20, 20, "")
CheckBoxGadget(#GROUP_WRITE, 210, 70, 20, 20, "")
CheckBoxGadget(#WORLD_WRITE, 210, 100, 20, 20, "")
CheckBoxGadget(#USER_RUN, 280, 40, 20, 20, "")
CheckBoxGadget(#GROUP_RUN, 280, 70, 20, 20, "")
CheckBoxGadget(#WORLD_RUN, 280, 100, 20, 20, "")
StringGadget(#NUMERIC, 10, 150, 300, 20, "000", #ESB_DISABLE_RIGHT)
StringGadget(#WORDS, 10, 180, 300, 20, chmod, #ESB_DISABLE_RIGHT)
ButtonGadget(#OK, 10, 210, 300, 20, "OK")
If Trim(chmod) = ""
SetGadgetText(#WORDS, "----------")
EndIf
Repeat
Event = WaitWindowEvent()
Select Event
Case #PB_Event_CloseWindow
Q = 1
Case #PB_Event_Gadget
GID = EventGadgetID()
If GID = #OK
chmod = GetGadgetText(#NUMERIC)
Q = 1
ElseIf GID >= #USER_READ And GID <= #WORLD_RUN
User1.s = Str(GetGadgetState(#USER_READ)*4+GetGadgetState(#USER_WRITE)*2+GetGadgetState(#USER_RUN)*1)
Group1.s = Str(GetGadgetState(#GROUP_READ)*4+GetGadgetState(#GROUP_WRITE)*2+GetGadgetState(#GROUP_RUN)*1)
World1.s = Str(GetGadgetState(#WORLD_READ)*4+GetGadgetState(#WORLD_WRITE)*2+GetGadgetState(#WORLD_RUN)*1)
SetGadgetText(#NUMERIC, User1+Group1+World1)
Num.s = GetGadgetText(#NUMERIC)
User2.l = Val(Mid(Num, 1, 1))
Group2.l = Val(Mid(Num, 2, 1))
World2.l = Val(Mid(Num, 3, 1))
Txt.s = GetGadgetText(#WORDS)
If User2 & 4
PokeB(@Txt+1, 'r')
Else
PokeB(@Txt+1, '-')
EndIf
If User2 & 2
PokeB(@Txt+2, 'w')
Else
PokeB(@Txt+2, '-')
EndIf
If User2 & 1
PokeB(@Txt+3, 'x')
Else
PokeB(@Txt+3, '-')
EndIf
If Group2 & 4
PokeB(@Txt+4, 'r')
Else
PokeB(@Txt+4, '-')
EndIf
If Group2 & 2
PokeB(@Txt+5, 'w')
Else
PokeB(@Txt+5, '-')
EndIf
If Group2 & 1
PokeB(@Txt+6, 'x')
Else
PokeB(@Txt+6, '-')
EndIf
If World2 & 4
PokeB(@Txt+7, 'r')
Else
PokeB(@Txt+7, '-')
EndIf
If World2 & 2
PokeB(@Txt+8, 'w')
Else
PokeB(@Txt+8, '-')
EndIf
If World2 & 1
PokeB(@Txt+9, 'x')
Else
PokeB(@Txt+9, '-')
EndIf
SetGadgetText(#WORDS, Txt)
ElseIf GID = #NUMERIC
Num.s = GetGadgetText(#NUMERIC)
User2.l = Val(Mid(Num, 1, 1))
Group2.l = Val(Mid(Num, 2, 1))
World2.l = Val(Mid(Num, 3, 1))
SetGadgetState(#USER_READ , User2 & 4)
SetGadgetState(#USER_WRITE , User2 & 2)
SetGadgetState(#USER_RUN , User2 & 1)
SetGadgetState(#GROUP_READ , Group2 & 4)
SetGadgetState(#GROUP_WRITE, Group2 & 2)
SetGadgetState(#GROUP_RUN , Group2 & 1)
SetGadgetState(#WORLD_READ , World2 & 4)
SetGadgetState(#WORLD_WRITE, World2 & 2)
SetGadgetState(#WORLD_RUN , World2 & 1)
Txt.s = GetGadgetText(#WORDS)
If User2 & 4
PokeB(@Txt+1, 'r')
Else
PokeB(@Txt+1, '-')
EndIf
If User2 & 2
PokeB(@Txt+2, 'w')
Else
PokeB(@Txt+2, '-')
EndIf
If User2 & 1
PokeB(@Txt+3, 'x')
Else
PokeB(@Txt+3, '-')
EndIf
If Group2 & 4
PokeB(@Txt+4, 'r')
Else
PokeB(@Txt+4, '-')
EndIf
If Group2 & 2
PokeB(@Txt+5, 'w')
Else
PokeB(@Txt+5, '-')
EndIf
If Group2 & 1
PokeB(@Txt+6, 'x')
Else
PokeB(@Txt+6, '-')
EndIf
If World2 & 4
PokeB(@Txt+7, 'r')
Else
PokeB(@Txt+7, '-')
EndIf
If World2 & 2
PokeB(@Txt+8, 'w')
Else
PokeB(@Txt+8, '-')
EndIf
If World2 & 1
PokeB(@Txt+9, 'x')
Else
PokeB(@Txt+9, '-')
EndIf
SetGadgetText(#WORDS, Txt)
Else
Word.s = GetGadgetText(#WORDS)
User1.s = Mid(Word, 2, 3)
Group1.s = Mid(Word, 5, 3)
World1.s = Mid(Word, 8, 3)
If Mid(User1, 1, 1) = "r" : SetGadgetState(#USER_READ , 1) : Else : SetGadgetState(#USER_READ , 0) : EndIf
If Mid(User1, 2, 1) = "w" : SetGadgetState(#USER_WRITE , 1) : Else : SetGadgetState(#USER_WRITE , 0) : EndIf
If Mid(User1, 3, 1) = "x" Or Mid(User1, 3, 1) = "s" : SetGadgetState(#USER_RUN , 1) : Else : SetGadgetState(#USER_RUN , 0) : EndIf
If Mid(Group1, 1, 1) = "r" : SetGadgetState(#GROUP_READ , 1) : Else : SetGadgetState(#GROUP_READ , 0) : EndIf
If Mid(Group1, 2, 1) = "w" : SetGadgetState(#GROUP_WRITE , 1) : Else : SetGadgetState(#GROUP_WRITE , 0) : EndIf
If Mid(Group1, 3, 1) = "x" Or Mid(Group1, 3, 1) = "s" : SetGadgetState(#GROUP_RUN , 1) : Else : SetGadgetState(#GROUP_RUN , 0) : EndIf
If Mid(World1, 1, 1) = "r" : SetGadgetState(#WORLD_READ , 1) : Else : SetGadgetState(#WORLD_READ , 0) : EndIf
If Mid(World1, 2, 1) = "w" : SetGadgetState(#WORLD_WRITE , 1) : Else : SetGadgetState(#WORLD_WRITE , 0) : EndIf
If Mid(World1, 3, 1) = "x" Or Mid(World1, 3, 1) = "s" : SetGadgetState(#WORLD_RUN , 1) : Else : SetGadgetState(#WORLD_RUN , 0) : EndIf
EndIf
EndSelect
Until Q = 1
EndIf
EndIf
ProcedureReturn chmod
EndProcedure
Open_Chmod("")