Jump to content

Recommended Posts

Posted (edited)

Hi there,

I'm working on a script that has the ability to save and load from .cgf files (ContextGen File, came up with the extension myself :)) And they look like this:

Unreal Tournament 2004
+1 Play Unreal Tournament 2004
=1
+1 Servers
+2 WOH
+3 lol
=3
+2 FFM
+2 IT's NL
+1 Demo Recording
+2 Start VirtualDub
=2

The first line is the title of the current project

In this file the lines that start with = are seperators and + are lines with text.

The numbers indicitate that the items are subitems from the previous number which is one lower.

So it will have to come out something like this:

Play Unreal Tournament 2004
[Seperator]
---- Servers
-------- WOH
------------ lol
------------ [Seperator]
-------- FFM
-------- IT's NL
---- Demo Recording
-------- Start VirtualDub

The problem is that I can't get the items under the right parent. I tried some methods but I can't get it to work. This is what I want:

_readCFG ( $LatestCFG )

Func _readCFG ( $CFGPath )
    Global $hItem[_FileCountLines ( $CFGPath )+1] = [""], $CurrentTree = 1
    $hFile = FileOpen ( $CFGPath, 0 )
    GUICtrlSetData ( $CFGName, FileReadLine ( $hFile, 1 ) )

    For $i = 2 To _FileCountLines ( $CFGPath ) Step 1
        $fRead = FileReadLine ( $hFile, $i )
        If StringLeft ( $fRead, 1 ) == "+" Then
            $sText = StringTrimLeft ( $fRead, 3 )
        ElseIf StringLeft ( $fRead, 1 ) == "=" Then
            $sText = "[Seperator]"
        EndIf
        
        If StringMid ( $fRead, 2, 1 ) == 1 Then
            $hParent = $hTree
        Else
            ; ....?
        EndIf

        $hItem[$i] = GUICtrlCreateTreeViewItem ( $sText, $hParent )
    Next
EndFunc

The full code so far and the Unreal Tournament 2004.cgf are included in the attachments.

Anyone can come up with a algorithm that correctly imports the .cgf file into the treeview in the main GUI?

Thanks in advance,

Rawox

ContextGen.rar

Edited by Rawox
Posted (edited)

Well, nevermind I got it already :)

Func _readCFG ( $CFGPath )
    Global $hItem[_FileCountLines ( $CFGPath )+1] = [""]
    Local $CurLvl = 0, $hParent, $CurrentTree, $cLine
    $hFile = FileOpen ( $CFGPath, 0 )
    GUICtrlSetData ( $CFGName, FileReadLine ( $hFile, 1 ) )

    For $i = 2 To _FileCountLines ( $CFGPath ) Step 1
        $fRead = FileReadLine ( $hFile, $i )
        If StringLeft ( $fRead, 1 ) == "+" Then
            $sText = StringTrimLeft ( $fRead, 3 )
        ElseIf StringLeft ( $fRead, 1 ) == "=" Then
            $sText = "[Seperator]"
        EndIf

        If StringMid ( $fRead, 2, 1 ) == 0 Then
            $hParent = $hTree
            $CurLvl = 0
        ElseIf StringMid ( $fRead, 2, 1 ) > 0 Then
            If StringMid ( $fRead, 2, 1 ) < $CurLvl Then
                $CurrentTree = StringSplit ( _GUICtrlTreeView_GetTree ( $hTree, $hItem[$i-1] ), "|" )
                $j = 1
                While 1
                    $cLine = FileReadLine ( $hFile, $j )
                    If $cLine = ( "+" & StringMid ( $fRead, 2, 1) - 1 & " " & $CurrentTree[StringMid ( $fRead, 2, 1)] ) Then ExitLoop
                    If @Error = -1 Then ExitLoop
                    $j += 1
                WEnd
                $hParent = $hItem[$j]
            ElseIf StringMid ( $fRead, 2, 1 ) > $CurLvl Then
                $hParent = $hItem[$i-1]
            EndIf
        EndIf

        $hItem[$i] = GUICtrlCreateTreeViewItem ( $sText, $hParent )
        $CurLvl = _GUICtrlTreeView_Level ( $hTree, $hItem[$i] )
    Next
    GUICtrlSetState ( $hTree, $GUI_FOCUS )
    FileClose ( $hFile )
EndFunc
Edited by Rawox

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...