tittoproject Posted October 20, 2006 Share Posted October 20, 2006 I'm trying to write a simple tray menu that reads items from a .ini file (called "itemslist.ini") and show them. From this tray menu I can also add or delete items. Everything works fine, but I've this problem: I can't understand how to refresh the tray menu once a item is added or removed. The code of the tray menu is: expandcollapse popupOpt('TrayMenuMode', 1) $ItemsList = @ScriptDir & '\itemslist.ini' If Not FileExists($ItemsList) Then IniWrite($ItemsList, 'Items', 'Item1', 'Test') EndIf $Items = IniReadSection($ItemsList, 'Items') $NI = $Items[0][0] Global $ItemMenu[$NI + 1][4] For $i = 1 To $NI $ItemMenu[$i][1] = TrayCreateMenu($Items[$i][0]) $ItemMenu[$i][2] = TrayCreateItem('Show', $ItemMenu[$i][1]) $ItemMenu[$i][3] = TrayCreateItem('Delete', $ItemMenu[$i][1]) TrayCreateItem('') Next $NewItem = TrayCreateItem('New Item') TrayCreateItem('') $ShowItemsList = TrayCreateItem('Items List') TrayCreateItem('') $ExitItem = TrayCreateItem('Exit') TraySetState() While 1 $msg = TrayGetMsg() Select Case $msg = 0 ContinueLoop Case $msg = $ExitItem ExitLoop Case $msg = $NewItem $Key = InputBox('New Item', "Enter New Item's Name", '') $Value = InputBox('New Item', "Enter New Item's Value", '') IniWrite($ItemsList, 'Items', $Key, $Value) Case $msg = $ShowItemsList Run(@ComSpec & ' /c "' & $ItemsList & '"', '', @SW_HIDE) Case Else For $i = 1 To $NI Select Case $msg = $ItemMenu[$i][2] MsgBox(0, $Items[$i][0], $Items[$i][1]) Case $msg = $ItemMenu[$i][3] IniDelete($ItemsList, 'Items', $Items[$i][0]) EndSelect Next EndSelect WEnd Exit Link to comment Share on other sites More sharing options...
Valuater Posted October 20, 2006 Share Posted October 20, 2006 just played with it... but this should do the trick expandcollapse popupOpt('TrayMenuMode', 1) Global $ItemsList = @ScriptDir & '\itemslist.ini' Global $Items, $ItemMenu[1], $ItemsMain[9] If Not FileExists($ItemsList) Then IniWrite($ItemsList, 'Items', 'Main Menu', 'Required - do not remove') IniWrite($ItemsList, 'Items', 'Notepad', 'notepad.exe') EndIf _SetTrayMenu() While 1 $msg = TrayGetMsg() Select Case $msg = 0 ContinueLoop Case $msg = $ItemsMain[2] ; 'New Item' _SetTrayMenu(2) Case $msg = $ItemsMain[3] ; 'Remove Item' _SetTrayMenu(3) Case $msg = $ItemsMain[4] ; 'View All Items' Run(@ComSpec & ' /c "' & $ItemsList & '"', '', @SW_HIDE) Case $msg = $ItemsMain[5] ; 'Exit' Exit Case Else For $i = 2 To UBound($ItemMenu) - 1 ; If $msg = $ItemMenu[$i]Then Call($Items[$i][1]) ; call value ? If $msg = $ItemMenu[$i]Then Run($Items[$i][1]) ; run value ? ; If $msg = $ItemMenu[$i]Then DoWhatYouWith($Items[$i][1]) ; ??? value? Next EndSelect WEnd Func _SetTrayMenu($TStart = 0) If $TStart = 3 Then $Key = InputBox('Remove Item', "Enter Old Item's Name", '') If $Key <> "" Then For $i = 2 To UBound($ItemMenu) - 1 If $Key = $Items[$i][0] Then IniDelete($ItemsList, 'Items', $Key) $TStart = 1 EndIf Next If $TStart = 3 Then MsgBox(64, "Sorry", "the Item *" & $Key & "* was not found in the list ", 3) Return EndIf Else Return EndIf EndIf If $TStart = 2 Then $Key = InputBox('New Item', "Enter New Item's Name", '') $Value = InputBox('New Item', "Enter New Item's Value", '') If $Key <> "" And $Value <> "" Then IniWrite($ItemsList, 'Items', $Key, $Value) $TStart = 1 Else Return EndIf EndIf If $TStart = 1 Then For $x = 1 To UBound($ItemsMain) - 1 TrayItemDelete($ItemsMain[$x]) Next For $i = 1 To UBound($ItemMenu) - 1 TrayItemDelete($ItemMenu[$i]) Next EndIf $Items = IniReadSection($ItemsList, 'Items') ReDim $ItemMenu[UBound($Items)] $ItemMenu[1] = TrayCreateItem($Items[1][0]) $ItemsMain[6] = TrayCreateItem('') For $i = 2 To UBound($ItemMenu) - 1 $ItemMenu[$i] = TrayCreateItem($Items[$i][0]) Next $ItemsMain[7] = TrayCreateItem('') $ItemsMain[1] = TrayCreateMenu('Config Menu') $ItemsMain[2] = TrayCreateItem('New Item', $ItemsMain[1]) $ItemsMain[3] = TrayCreateItem('Remove Item', $ItemsMain[1]) $ItemsMain[4] = TrayCreateItem('View All Items', $ItemsMain[1]) $ItemsMain[8] = TrayCreateItem('') $ItemsMain[5] = TrayCreateItem('Exit') TraySetState() EndFunc ;==>_SetTrayMenu 8) Link to comment Share on other sites More sharing options...
tittoproject Posted October 21, 2006 Author Share Posted October 21, 2006 just played with it... but this should do the trickThank you very much! It's exactly what I need! Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now