Jump to content

Strange Behavior of Listview in all Tabs


Recommended Posts

I have a List view i loaded into a Tab...

once loaded its showing in all Tabs...

here is my full code :

#include <ButtonConstants.au3>
#include <ComboConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <GUIListBox.au3>
#include <GuiListView.au3>
#include <StaticConstants.au3>
#include <TabConstants.au3>
#include <WindowsConstants.au3>
#include <File.au3>
#include <Array.au3>
#include <Process.au3>
#include <Constants.au3>
#include <String.au3>
#include <Array.au3>


$Form1 = GUICreate("0", 601, 401, 186, 114)


Global $favoritesPath = @ScriptDir & "\listings\favorites.ini"
; Set flag to indicate double click in ListView




; --------------   Channel Guide Tab --------------


$plugins = GUICtrlCreateTab(8, 8, 580, 336)
$Guide = GUICtrlCreateTabItem("Channel Guide ")




; Need to open XML to display
$Button10 = GUICtrlCreateButton("Open XML", 32, 56, 75, 25)
GUICtrlSetFont(-1, 8, 400, 0, "Arial")


; Refreshes the XML opened up 
$Button12 = GUICtrlCreateButton("Refresh", 120, 56, 75, 25)
GUICtrlSetFont(-1, 8, 400, 0, "Arial")


; add the XML from above 
$List1 = GUICtrlCreateListView("ID|Name", 31, 89, 529, 230)


; ----------------    Favorites Tab    --------------
$TabSheet2 = GUICtrlCreateTabItem("Favorites")


; Adds dialog 
GUICtrlCreateLabel("Add Video feed To Your Favorites", 144, 64, 287, 26)
GUICtrlSetFont(-1, 12, 400, 0, "Arial")


; Add video Name
$Label1 = GUICtrlCreateLabel(" Name :", 72, 112, 67, 22)
GUICtrlSetFont(-1, 12, 400, 0, "Arial")
$Input1 = GUICtrlCreateInput("", 144, 112, 361, 22)
GUICtrlSetFont(-1, 12, 400, 0, "Arial")


; Add quality
$Label2 = GUICtrlCreateLabel("URL :", 88, 152, 43, 22)
GUICtrlSetFont(-1, 12, 400, 0, "Arial")
$Input2 = GUICtrlCreateInput("", 144, 152, 361, 22)
GUICtrlSetFont(-1, 12, 400, 0, "Arial")


; Add quality
$Label3 = GUICtrlCreateLabel("Quality :", 72, 192, 59, 22)
GUICtrlSetFont(-1, 12, 400, 0, "Arial")
$Input3 = GUICtrlCreateInput("", 144, 192, 361, 22)
GUICtrlSetFont(-1, 12, 400, 0, "Arial")


; Adds dialog
$Label4 = GUICtrlCreateLabel("NOTE:  and is set to 'High'", 56, 280, 483, 19)
GUICtrlSetFont(-1, 9, 400, 0, "Arial")


; Now lets save to favorites XML  
$Button9 = GUICtrlCreateButton("Save", 432, 224, 75, 25)
GUICtrlSetFont(-1, 9, 400, 0, "Arial")


; clear 
$Button14 = GUICtrlCreateButton("Clear", 346, 224, 75, 25)
GUICtrlSetFont(-1, 9, 400, 0, "Arial")




; ------------    Plugins Tab --------------------
$TabSheet3 = GUICtrlCreateTabItem("Plugins")


; gets Listing of files in plugin folder BY  extension 
$Label11 = GUICtrlCreateLabel("Available Plugins", 32, 68, 185, 18)
GUICtrlSetFont(-1, 12, 400, 0, "Arial") 


$List2 = GUICtrlCreateList("", 32, 88, 521, 174)
GUICtrlSetFont(-1, 12, 400, 0, "Arial")


Local $FileList = _FileListToArray("plugins", "*.bat*")


For $i = 1 To $FileList[0]
        GUICtrlSetData($List2, RemoveExt(GetFileName($FileList[$i])))
    Next


; Gets updates all Plugins in plugins folder 
$Button11 = GUICtrlCreateButton("Refresh Plugins", 456, 288, 90, 25)
GUICtrlSetFont(-1, 8, 400, 0, "Arial")


; Launc website 
$Button13 = GUICtrlCreateButton("Get More Plugins", 360, 288, 90, 25)
GUICtrlSetFont(-1, 8, 400, 0, "Arial")


; Settings page
$TabSheet1 = GUICtrlCreateTabItem("Settings")
GUICtrlCreateGroup(" Program Settings ", 24, 64, 545, 115)


; add your token here
GUICtrlCreateLabel("Token", 32, 80, 35, 17)
GUICtrlCreateInput("", 32, 96, 505, 21)


; add IP Port for streamer
$Labe20 = GUICtrlCreateLabel("Port # ( Default is 8080)", 32, 128, 116, 17)
GUICtrlCreateInput("8080", 32, 144, 121, 21)


; streaming preference
Local $idStream = GUICtrlCreateCombo("Protocol", 184, 144, 145, 25, BitOR($CBS_DROPDOWN,$CBS_AUTOHSCROLL))
$Label10 = GUICtrlCreateLabel("Preferred Streaming Protocol", 184, 128, 139, 17)
GUICtrlSetData($idStream , "RTMP|HLS", "RTMP")


; Now Lets save to programSettings.ini
$Button7 = GUICtrlCreateButton("Save", 456, 140, 75, 25)


; create Group Video Settings


GUICtrlCreateGroup("", -99, -99, 1, 1)
$Group2 = GUICtrlCreateGroup(" Video Settings ", 24, 216, 545, 115)


; FPS 
Local $idFPS = GUICtrlCreateCombo("", 32, 256, 95, 25, BitOR($CBS_DROPDOWN,$CBS_AUTOHSCROLL))
$Label5 = GUICtrlCreateLabel("FPS", 32, 240, 24, 17)
GUICtrlSetData($idFPS, "15|24.97|25|29.97|30", "15")


; Width
Local $idWidth = GUICtrlCreateCombo("", 136, 256, 95, 25, BitOR($CBS_DROPDOWN,$CBS_AUTOHSCROLL))
$Label6 = GUICtrlCreateLabel("Width", 136, 240, 32, 17)
GUICtrlSetData($idWidth, "320|640|720|1080", "320")


; Height
Local $idHeight = GUICtrlCreateCombo("", 240, 256, 95, 25, BitOR($CBS_DROPDOWN,$CBS_AUTOHSCROLL))
$Label7 = GUICtrlCreateLabel("Height", 240, 240, 35, 17)
GUICtrlSetData($idHeight, "240|480|1080|1920", "240")


; Video Bit Rate
Local $idVBR = GUICtrlCreateCombo("", 344, 256, 100, 25, BitOR($CBS_DROPDOWN,$CBS_AUTOHSCROLL))
$Label8 = GUICtrlCreateLabel("Video Bit Rate", 344, 240, 72, 17)
GUICtrlSetData($idVBR, "300|600|800|1000|1500|2000", "300")


; Audio Bit Rate
Local $idABR = GUICtrlCreateCombo("", 456, 256, 95, 25, BitOR($CBS_DROPDOWN,$CBS_AUTOHSCROLL))
$Label9 = GUICtrlCreateLabel("Audio Bit Rate", 456, 240, 72, 17)
GUICtrlSetData($idABR, "96|128|192|256", "96")


GUICtrlCreateGroup("", -99, -99, 1, 1)
; Now Lets save to videoSettings.ini
$Button8 = GUICtrlCreateButton("Save", 456, 288, 75, 25)
GUICtrlCreateTabItem("")


; --------------         ends settings page    ----------------------------




; -------------   Buttons on Bottom of Tabs ----------------------------
$Button1 = GUICtrlCreateButton("Watch", 14, 360, 75, 25)




$Button2 = GUICtrlCreateButton("Stop All", 94, 360, 75, 25)




$Button3 = GUICtrlCreateButton("Record", 336, 360, 75, 25)




$Button5 = GUICtrlCreateButton("Stream", 416, 360, 75, 25)




$Button6 = GUICtrlCreateButton("Add to favorites", 496, 360, 91, 25)




; ------------------  Functions  ---------------------------


Func RemoveExt($Input)
Local $ExtArray = StringSplit($Input, ".")
Return StringReplace($Input, "." & $ExtArray[$ExtArray[0]], "", -1)
EndFunc


Func RemoveExtRegExp($Input)
Return StringRegExpReplace($Input, "\.[^.]*$", "")
EndFunc


Func GetFileName($Input)
Local $PathArray = StringSplit($Input, "\/")
Return $PathArray[$PathArray[0]]
EndFunc


Func WM_NOTIFY($hWnd, $MsgID, $wParam, $lParam)
Local $tagNMHDR, $event, $hwndFrom, $code
$tagNMHDR = DllStructCreate("int;int;int", $lParam)
If @error Then Return 0
$code = DllStructGetData($tagNMHDR, 3)
If $wParam = $List1 And $code = -3 And _GUICtrlListView_GetSelectedCount($List1) > 0 Then ;Put code here to deal with the double click
$col_value = _GUICtrlListView_GetItemText($List1, _GUICtrlListView_GetNextItem($List1), 0)


$xml=FileRead($xmlName)
$sSearch=_StringBetween($xml,"ID='" & $col_value & "'","/>")
$sResult=_ArrayToString($sSearch,"")


Local $splitXML = StringSplit($sResult, "'")
For $i = 1 To $splitXML[0]
Next
$rURL = $splitXML[2]
$rName = $splitXML[4]
$rQuality = $splitXML[6]
ConsoleWrite($rQuality & @CRLF)
    
If $rQuality = ' quality=' then
$realQuality =  $splitXML[7]
msgbox(0, "Quality is 7", $realQuality & @CRLF)
Else
$realQuality =  $splitXML[6]
msgbox(0, "Quality is 6",  $realQuality & @CRLF)
EndIf
endif
Return $GUI_RUNDEFMSG
EndFunc


; --------------  button functions ----------------------------


GUISetState(@SW_SHOW)


; Look for double clicks
GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY")




While 1
$MSG = GUIGetMsg()
Select
Case $MSG = $GUI_EVENT_CLOSE
Exitloop


Case $MSG = $Button1 ; watch


Case $MSG = $Button2 ; Stop all Button




Case $MSG = $Button3 ; recording Button




Case $MSG = $Button5 ; streaming Button


Case $MSG = $Button6 ; save to favorites Button


$col_value = _GUICtrlListView_GetItemText($List1, _GUICtrlListView_GetNextItem($List1), 1)
msgbox (0, "You Selected This Video Feed", $col_value) 
; FileWriteLine("listings\favorites.xml",'')


Case $MSG = $Button7 ; save to programSettings.ini




Case $MSG = $Button8 ; save to videoSettings.ini 


Case $MSG = $Button9 ; save to favroites.xml 
$URL = GUICtrlRead($Input2)
$name = GUICtrlRead($Input1)
$quality = GUICtrlRead($Input3)
$favXML = "listings\favs.xml"


If GuiCtrlRead($Input1) = "" Then
MsgBox (0,"Empty", "Name can't Be empty, Try again")
ElseIf GuiCtrlRead($Input2) = "" Then
MsgBox (0,"Empty", "URL can't Be empty, Try again") 
ElseIf GuiCtrlRead($Input3) = "" Then
MsgBox (0,"Empty", "Quality can't Be empty, Try again") 
Else
Local $iCountLines = _FileCountLines($favXML) ; Retrieve the number of lines in the current script.
$ID = $iCountLines + 1


FileWriteLine($favXML, "<channel ID='" & $ID & "' url='" & $URL & "' name='" & $name & "' quality='" & $quality & "'/>""")


GUICtrlSetData($Input1, "")
GUICtrlSetData($Input2, "")
GUICtrlSetData($Input3, "")


; Run("listings\createFavorites.bat")
MsgBox(0, "", "Saved to Favorites!")
EndIf


Case $MSG = $Button10 ; Need to open XML to display 


$openXML = FileOpenDialog("Choose a file", @ScriptDir & "\listings", "XML (*.xml)", 1 + 4 )
If @error Then
MsgBox(0,"","No File(s) chosen")
Else


$openXML = StringReplace($openXML, "|", @CRLF)
Dim $xmlName = $openXML


MsgBox(0,"IpTvMyWay v2.0","You chose " & $xmlName)


_GUICtrlListView_DeleteAllItems($List1)
$sRead = FileRead($openXML)


Global $aID = StringRegExp($sRead, "(?i)ID='(.*?)'", 3)
Global $aName = StringRegExp($sRead, "(?i)name='(.*?)'", 3)
Global $aQuality= StringRegExp($sRead, "(?i)quality='(.*?)'", 3)
Global $aUrl= StringRegExp($sRead, "(?i)url='(.*?)'", 3)




$iUbound = UBound($aID)
If UBound($aName) > $iUbound Then $iUbound = UBound($aName)


$List1 = GUICtrlCreateListView("ID|Name",31, 89, 529, 230)


For $i = 0 To $iUbound - 1
$strData = ""
If UBound($aID) > $i Then $strData &= $aID[$i]
If UBound($aName) > $i Then $strData &= "|" & $aName[$i]
_GUICtrlListView_SetColumnWidth($List1, 0, 40)
_GUICtrlListView_SetColumnWidth($List1, 1, 440)
GUICtrlCreateListViewItem($strData, $List1)
GUICtrlSetFont(-1, 10, 400, 0, "Arial")
Next
EndIf




Case $MSG = $Button11 ; Gets updates all Plugins in plugins folder 


Case $MSG = $Button12 ; Refreshes the XML opened up 


_GUICtrlListView_DeleteAllItems($List1)
$sRead = FileRead($openXML)


Global $aID = StringRegExp($sRead, "(?i)ID='(.*?)'", 3)
Global $aName = StringRegExp($sRead, "(?i)name='(.*?)'", 3)
Global $aQuality= StringRegExp($sRead, "(?i)quality='(.*?)'", 3)
Global $aUrl= StringRegExp($sRead, "(?i)url='(.*?)'", 3)




$iUbound = UBound($aID)
If UBound($aName) > $iUbound Then $iUbound = UBound($aName)


$List1 = GUICtrlCreateListView("ID|Name", 31, 89, 529, 230)


For $i = 0 To $iUbound - 1
$strData = ""
If UBound($aID) > $i Then $strData &= $aID[$i]
If UBound($aName) > $i Then $strData &= "|" & $aName[$i]
_GUICtrlListView_SetColumnWidth($List1, 0, 40)
_GUICtrlListView_SetColumnWidth($List1, 1, 440)
GUICtrlCreateListViewItem($strData, $List1)
GUICtrlSetFont(-1, 10, 400, 0, "Arial")
Next


Case $MSG = $Button13 ; launches website


Case $MSG = $Button14 ; clears favorites
GUICtrlSetData($Input1, "")
GUICtrlSetData($Input2, "")
GUICtrlSetData($Input3, "")
MsgBox(0, "", "Form Cleared!")


EndSelect
Wend


; Deregister "Click on ListView function"
GUIRegisterMsg($WM_NOTIFY, "")

i am sure it has something to do with setting "focus" or something like that but i do not see anything like this in the forum.

Thank you

 
Link to comment
Share on other sites

You created the Listview $list1 twice, once in the Channel Guide tab creation section and again in your message loop.

If I posted any code, assume that code was written using the latest release version unless stated otherwise. Also, if it doesn't work on XP I can't help with that because I don't have access to XP, and I'm not going to.
Give a programmer the correct code and he can do his work for a day. Teach a programmer to debug and he can do his work for a lifetime - by Chirag Gude
How to ask questions the smart way!

I hereby grant any person the right to use any code I post, that I am the original author of, on the autoitscript.com forums, unless I've specifically stated otherwise in the code or the thread post. If you do use my code all I ask, as a courtesy, is to make note of where you got it from.

Back up and restore Windows user files _Array.au3 - Modified array functions that include support for 2D arrays.  -  ColorChooser - An add-on for SciTE that pops up a color dialog so you can select and paste a color code into a script.  -  Customizable Splashscreen GUI w/Progress Bar - Create a custom "splash screen" GUI with a progress bar and custom label.  -  _FileGetProperty - Retrieve the properties of a file  -  SciTE Toolbar - A toolbar demo for use with the SciTE editor  -  GUIRegisterMsg demo - Demo script to show how to use the Windows messages to interact with controls and your GUI.  -   Latin Square password generator

Link to comment
Share on other sites

Just delete all the items, as you do, and then just create new listview items using the original listview. The way you're doing it now, you'r creating not 1 a limitless number of listviews in the same GUI without deleting any of the previous ones. There's no need to recreate the listview, as it already exists and in the correct tab, just use the one you already created at the start.

If I posted any code, assume that code was written using the latest release version unless stated otherwise. Also, if it doesn't work on XP I can't help with that because I don't have access to XP, and I'm not going to.
Give a programmer the correct code and he can do his work for a day. Teach a programmer to debug and he can do his work for a lifetime - by Chirag Gude
How to ask questions the smart way!

I hereby grant any person the right to use any code I post, that I am the original author of, on the autoitscript.com forums, unless I've specifically stated otherwise in the code or the thread post. If you do use my code all I ask, as a courtesy, is to make note of where you got it from.

Back up and restore Windows user files _Array.au3 - Modified array functions that include support for 2D arrays.  -  ColorChooser - An add-on for SciTE that pops up a color dialog so you can select and paste a color code into a script.  -  Customizable Splashscreen GUI w/Progress Bar - Create a custom "splash screen" GUI with a progress bar and custom label.  -  _FileGetProperty - Retrieve the properties of a file  -  SciTE Toolbar - A toolbar demo for use with the SciTE editor  -  GUIRegisterMsg demo - Demo script to show how to use the Windows messages to interact with controls and your GUI.  -   Latin Square password generator

Link to comment
Share on other sites

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
 Share

×
×
  • Create New...