Jump to content

Tab control glitch/bug?


Recommended Posts

So I was writing a program to sort my collection of animes yesterday and I stumbled upon this glitch.

Basically, I have a TabControl with 3 tabs: each tab has a ListBox of the same size at the same position (just in case, style: BitOR($LBS_NOTIFY,$LBS_SORT,$WS_VSCROLL), font is Arial)

On the first tab I have a ListBox filled with about 22 lines. Each line represents an anime folder on my ext. hdd. Each anime folder has a 'season' folder inside it, and inside each season folder the respective episodes. So it's like:

Anime Folder \ Season 1 Folder \ [episodes]

When the anime list is filled and I update the seasons list with the season folders (by clicking on an item in the anime list), this happens: as the seasons list is updated and items are being added in the list, it covers the anime list. I can 'fix' this by scrolling up and down in the anime list, so the other list disappears.

Why is that happening? Is it due to my code or is it a bug in autoit?

"The story of a blade is linked in Blood." 

―Yasuo

 

Link to comment
Share on other sites

  • Moderators

megablox,

My money would be firmly on your code. :D

So why not post it so we can help you find out if it is? ;)

M23

Public_Domain.png.2d871819fcb9957cf44f4514551a2935.png Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind

Open spoiler to see my UDFs:

Spoiler

ArrayMultiColSort ---- Sort arrays on multiple columns
ChooseFileFolder ---- Single and multiple selections from specified path treeview listing
Date_Time_Convert -- Easily convert date/time formats, including the language used
ExtMsgBox --------- A highly customisable replacement for MsgBox
GUIExtender -------- Extend and retract multiple sections within a GUI
GUIFrame ---------- Subdivide GUIs into many adjustable frames
GUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView items
GUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeView
Marquee ----------- Scrolling tickertape GUIs
NoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxes
Notify ------------- Small notifications on the edge of the display
Scrollbars ----------Automatically sized scrollbars with a single command
StringSize ---------- Automatically size controls to fit text
Toast -------------- Small GUIs which pop out of the notification area

 

Link to comment
Share on other sites

Here's the code

#include <Array.au3>
#include <ButtonConstants.au3>
#include <GuiConstantsEx.au3>
#include <GuiListBox.au3>
#include <GuiTab.au3>
#include <StaticConstants.au3>
#include <TabConstants.au3>
#include "udf\RecFileListToArray.au3"
#include <WinAPI.au3>
#include <WindowsConstants.au3>


;~ HotKeySet("1", "show1")
;~ HotKeySet("2", "show2")
;~ HotKeySet("3", "show3")
;~ HotKeySet("q", "hide1")
;~ HotKeySet("w", "hide2")
;~ HotKeySet("e", "hide3")


Opt("GUIOnEventMode", 1)

Global $currentRating=0, $configured=False, $firstRun=True, $defaultVideoDir, $updateOnLaunch, $askUpdateOnLaunch, $resumeFromLastVideo, $breakPlaylist, $defaultPlayer
Global $currentSelection=0, $canBeRated=False, $numberOfAnimes, $currentTab


$Form1 = GUICreate("Anime DB 2.0", 689, 358, 178, 124)
$mSettings = GUICtrlCreateMenu("&Settings")
$smOpenSettings = GUICtrlCreateMenuItem("Open settings dialog", $mSettings)
GUICtrlSetOnEvent(-1, "openSettingsWindow")
$oTab1 = GUICtrlCreateTab(0, 0, 417, 329)
$tList = GUICtrlCreateTabItem("List of animes")
$animeList = GUICtrlCreateList("", 8, 32, 401, 280, BitOR($LBS_NOTIFY,$LBS_SORT,$WS_VSCROLL), 0)
GUICtrlSetOnEvent(-1, "updateSeasonsList")
GUICtrlSetFont(-1, 8, 400, 0, "Arial")
$seasonList = GUICtrlCreateList("", 8, 32, 401, 280, BitOR($LBS_NOTIFY,$LBS_SORT,$WS_VSCROLL), 0)
GUICtrlSetFont(-1, 8, 400, 0, "Arial")
$episodesList = GUICtrlCreateList("", 8, 32, 401, 280, BitOR($LBS_NOTIFY,$LBS_SORT,$WS_VSCROLL), 0)
GUICtrlSetFont(-1, 8, 400, 0, "Arial")
$tSeasons = GUICtrlCreateTabItem("Seasons")
$tEpisodes = GUICtrlCreateTabItem("Episodes")
GUICtrlCreateTabItem("")
$Group1 = GUICtrlCreateGroup("General Informations", 424, 16, 257, 313)
$cover = GUICtrlCreatePic("res\not_available.bmp", 552, 32, 124, 172)
$star1 = GUICtrlCreatePic("res\passive_square.bmp", 432, 40, 13, 13)
GUICtrlSetOnEvent(-1, "star1")
$star2 = GUICtrlCreatePic("res\passive_square.bmp", 445, 40, 13, 13)
GUICtrlSetOnEvent(-1, "star2")
$star3 = GUICtrlCreatePic("res\passive_square.bmp", 458, 40, 13, 13)
GUICtrlSetOnEvent(-1, "star3")
$star4 = GUICtrlCreatePic("res\passive_square.bmp", 471, 40, 13, 13)
GUICtrlSetOnEvent(-1, "star4")
$star5 = GUICtrlCreatePic("res\passive_square.bmp", 484, 40, 13, 13)
GUICtrlSetOnEvent(-1, "star5")
GUICtrlCreateGroup("", -99, -99, 1, 1)
GUISetOnEvent($GUI_EVENT_CLOSE, "close")
GUISetState(@SW_SHOW)


$Form2 = GUICreate("Settings", 385, 253, 470, 205, -1, -1, $Form1)
$ConfigWinLabel = GUICtrlCreateLabel("This is the settings window - in here you can change how the program works.", 8, 8, 367, 17)
$Label2 = GUICtrlCreateLabel("Default video directory", 8, 40, 110, 17, $WS_BORDER)
$iVideoDir = GUICtrlCreateInput("None selected.", 8, 64, 257, 21)
GUICtrlSetOnEvent(-1, "checkOK")
GUICtrlSetState(-1, $GUI_DISABLE)
$browseVideoDir = GUICtrlCreateButton("Browse...", 272, 62, 75, 25)
GUICtrlSetOnEvent(-1, "browseVideoDir")
$videoDirPic = GUICtrlCreatePic("G:\Projects\AnimeDB 2.0\res\no.bmp", 352, 60, 30, 30)
$Label3 = GUICtrlCreateLabel("Update lists on launch", 8, 99, 110, 17, $WS_BORDER)
$Checkbox1 = GUICtrlCreateCheckbox("", 128, 99, 17, 17)
GUICtrlSetOnEvent(-1, "switchStatus1")
$Label4 = GUICtrlCreateLabel("Ask to update lists on launch", 8, 122, 142, 17, $WS_BORDER)
$Checkbox2 = GUICtrlCreateCheckbox("", 158, 122, 17, 17)
GUICtrlSetOnEvent(-1, "switchStatus2")
$Label1 = GUICtrlCreateLabel("Automatically resume from where I left last time", 8, 145, 222, 17, $WS_BORDER)
$Checkbox3 = GUICtrlCreateCheckbox("", 236, 145, 17, 17)
$Label5 = GUICtrlCreateLabel("Break playlist key", 8, 168, 86, 17, $WS_BORDER)
$Input1 = GUICtrlCreateInput("0", 104, 168, 41, 21)
$Label6 = GUICtrlCreateLabel("Default media player", 8, 193, 166, 17, $WS_BORDER)
$Group1 = GUICtrlCreateGroup("", 176, 186, 105, 25)
$Radio1 = GUICtrlCreateRadio("WMP", 176, 192, 49, 17)
$Radio2 = GUICtrlCreateRadio("VLC", 232, 192, 49, 17)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Button1 = GUICtrlCreateButton("OK", 152, 165, 35, 25)
GUICtrlSetOnEvent(-1, "checkOK")
$Pic1 = GUICtrlCreatePic("G:\Projects\AnimeDB 2.0\res\no.bmp", 193, 167, 22, 22)
$Pic2 = GUICtrlCreatePic("G:\Projects\AnimeDB 2.0\res\no.bmp", 289, 190, 22, 22)
$Button2 = GUICtrlCreateButton("Save and close", 0, 224, 163, 25)
GUICtrlSetOnEvent(-1, "saveAndClose")
$Button3 = GUICtrlCreateButton("Close and discard", 221, 224, 163, 25)
GUICtrlSetOnEvent(-1, "discardAndClose")
GUISetOnEvent($GUI_EVENT_CLOSE, "closeSettings")


;notes
;
;find out a way to hide the other lists when you are on another one.
;hide other lists when in a specific tab?

;test area

;~ GUICtrlSetState($seasonList, $GUI_HIDE)
;~ GUICtrlSetState($episodesList, $GUI_HIDE)

Func show1()
GUICtrlSetState($animeList, $GUI_SHOW)
EndFunc
Func show2()
GUICtrlSetState($seasonList, $GUI_SHOW)
EndFunc
Func show3()
GUICtrlSetState($episodesList, $GUI_SHOW)
EndFunc
Func hide1()
GUICtrlSetState($animeList, $GUI_HIDE)
EndFunc
Func hide2()
GUICtrlSetState($seasonList, $GUI_HIDE)
EndFunc
Func hide3()
GUICtrlSetState($episodesList, $GUI_HIDE)
EndFunc


;end test area

Switch FileExists("data\cfg.ini")
Case 0
GUISetState(@SW_SHOW, $Form2)
WinActivate($Form2, "")
Do
If WinActive($Form2) == 0 Then
WinActivate($Form2)
WinFlash($Form2, "", 10, 50)
EndIf
Until $configured=True
$firstRun=False
ConsoleWrite("Closing window."&@CRLF)
Case Else
$firstRun=False
ConsoleWrite("Loading configuration."&@CRLF)
$defaultVideoDir = IniRead("data\cfg.ini", "main", "sv.VideoDirectory", "default")
$updateOnLaunch = IniRead("data\cfg.ini", "lists", "bv.UpdateOnLaunch", 1)
$askUpdateOnLaunch = IniRead("data\cfg.ini", "lists", "bv.AskUpdateOnLaunch", 0)
$resumeFromLastVideo = IniRead("data\cfg.ini", "media", "bv.AutomaticResume", 0)
$breakPlaylist = IniRead("data\cfg.ini", "keys", "hk.InterruptPlaylist", "Q")
$defaultPlayer = IniRead("data\cfg.ini", "media", "bv.MediaAgent", "VLC")
GUICtrlSetData($iVideoDir, $defaultVideoDir)

If $askUpdateOnLaunch == 1 And $updateOnLaunch == 1 Then
Local $x=checkOK(1)
Switch $x
Case Not 0
Local $brokenrequest= MsgBox(20, "Corrupt configuration file", "There was an error while loading the configuration file: it appears to be corrupted. Do you want to delete it or manually reconfigure it?"&@CRLF&"Yes: delete and restore"&@CRLF&"No: manual restore")
Switch $brokenrequest
Case 6
MsgBox(64, "Restoring configuration", "Anime DB 2.0 will now be restored to defaults. The program will automatically restart.")
ConsoleWrite("Deleting configuration file"&@CRLF)
FileDelete("data\cfg.ini")
Run("restoreadb.exe") ;don't forget to edit the source of restoreadb
Case 7
ConsoleWrite("User opted for manual reconfiguration."&@CRLF)
MsgBox(48, "Warning", "Anime DB 2.0 aborted the loading process because the save file was corrupt. The program will now close.")
Exit
EndSwitch
EndSwitch
EndIf

Switch $updateOnLaunch
Case 1
GUICtrlSetState($Checkbox1, $GUI_CHECKED)
switchStatus1()
EndSwitch

Switch $askUpdateOnLaunch
Case 1
GUICtrlSetState($Checkbox2, $GUI_CHECKED)
switchStatus2()
EndSwitch

Switch $resumeFromLastVideo
Case 1
GUICtrlSetState($Checkbox3, $GUI_CHECKED)
EndSwitch
GUICtrlSetData($Input1, $breakPlaylist)
Switch $defaultPlayer
Case "VLC"
GUICtrlSetState($Radio2, $GUI_CHECKED)
Case "WMP"
GUICtrlSetState($Radio1, $GUI_CHECKED)
EndSwitch
Local $x=checkOK()
Switch $x
Case Not 0
Local $brokenrequest= MsgBox(20, "Corrupt configuration file", "There was an error while loading the configuration file: it appears to be corrupted. Do you want to delete it or manually reconfigure it?"&@CRLF&"Yes: delete and restore"&@CRLF&"No: manual restore")
Switch $brokenrequest
Case 6
MsgBox(64, "Restoring configuration", "Anime DB 2.0 will now be restored to defaults. The program will automatically restart.")
ConsoleWrite("Deleting configuration file"&@CRLF)
FileDelete("data\cfg.ini")
Run("restoreadb.exe") ;don't forget to edit the source of restoreadb
Case 7
ConsoleWrite("User opted for manual reconfiguration."&@CRLF)
MsgBox(48, "Warning", "Anime DB 2.0 aborted the loading process because the save file was corrupt. The program will now close.")
Exit
EndSwitch
EndSwitch
ConsoleWrite("Configuration loaded."&@CRLF)
Switch $updateOnLaunch
Case 1
ConsoleWrite("Updating lists."&@CRLF)
Local $list_of_anime_folders = _RecFileListToArray($defaultVideoDir, "*")
$numberOfAnimes=$list_of_anime_folders[0]
For $i=1 To UBound($list_of_anime_folders)-1 Step 1
GUICtrlSetData($animeList, $list_of_anime_folders[$i]&"|")
Switch FileExists("data\"&$list_of_anime_folders[$i])
Case 0
ConsoleWrite("Creating data folder for new entry '"&$list_of_anime_folders[$i]&"'"&@CRLF)
DirCreate("data\"&StringLower($list_of_anime_folders[$i]))
IniWrite("data\"&StringLower($list_of_anime_folders[$i])&"\data.ini", "main", "rating", 0)
IniWrite("data\"&StringLower($list_of_anime_folders[$i])&"\data.ini", "main", "picture","cover.bmp")
EndSwitch
Next
ConsoleWrite("Done updating anime list."&@CRLF)
EndSwitch
EndSwitch

Func updateSeasonsList()
;~ ConsoleWrite("Hidden control state value: "&$GUI_HIDE&"; Visible control state value: "&$GUI_SHOW&@CRLF)
;~ ConsoleWrite("animeList status: "&GUICtrlGetState($animeList)&@CRLF&"seasonList status: "&GUICtrlGetState($seasonList)&@CRLF&"episodeList status: "&GUICtrlGetState($episodesList)&@CRLF)
$currentSelection=_GUICtrlListBox_GetCurSel($animeList)+1
Local $list_of_selected_anime_seasons = _RecFileListToArray($defaultVideoDir&"\"&GUICtrlRead($animeList), "*")
ConsoleWrite("Updating list 2."&@CRLF)
GUICtrlSetData($seasonList, "")
For $i=1 To UBound($list_of_selected_anime_seasons)-1 Step 1
GUICtrlSetData($seasonList, $list_of_selected_anime_seasons[$i]&"|")
IniWrite("data\"&StringLower(GUICtrlread($animeList))&"\data.ini", "main", $list_of_selected_anime_seasons[$i]&"_rating", 0)
Next
;~ ConsoleWrite("selected: "&$currentSelection&@CRLF)
ConsoleWrite("Updated list 2."&@CRLF)
EndFunc

Func updateEpisodesList()
EndFunc

Func switchStatus1()
If GUICtrlRead($Checkbox1) == $GUI_CHECKED Then
GUICtrlSetState($Checkbox2, $GUI_DISABLE)
GUICtrlSetData($Checkbox2, $GUI_UNCHECKED)
Else
GUICtrlSetState($Checkbox2, $GUI_ENABLE)
EndIf
EndFunc

Func switchStatus2()
If GUICtrlRead($Checkbox2) == $GUI_CHECKED Then
GUICtrlSetState($Checkbox1, $GUI_DISABLE)
GUICtrlSetData($Checkbox1, $GUI_UNCHECKED)
Else
GUICtrlSetState($Checkbox1, $GUI_ENABLE)
EndIf
EndFunc

Func checkOK($forceError=0)
Switch $forceError
Case 0
Local $error=0
If FileExists(GUICtrlRead($iVideoDir)) == 0 Then
GUICtrlSetImage($videoDirPic, "")
GUICtrlSetImage($videoDirPic, "res\no.bmp")
$error=$error+1
Else
GUICtrlSetImage($videoDirPic, "")
GUICtrlSetImage($videoDirPic, "res\ok.bmp")
EndIf
If StringIsAlpha(GUICtrlRead($Input1)) == 1 And StringLen(GUICtrlRead($Input1)) == 1 Then
GUICtrlSetImage($Pic1, "")
GUICtrlSetImage($Pic1, "res\ok.bmp")
Else
GUICtrlSetImage($Pic1, "")
GUICtrlSetImage($Pic1, "res\no.bmp")
$error=$error+2
EndIf
If (GUICtrlRead($Radio1) Or GUICtrlRead($Radio2)) Then
Switch GUICtrlRead($Radio1)
Case $GUI_CHECKED
If FileExists("C:\Program Files (x86)\Windows Media Player\wmplayer.exe") == 0 Then
$error=4
GUICtrlSetImage($Pic2, "")
GUICtrlSetImage($Pic2, "res\no.bmp")
EndIf
EndSwitch
Switch GUICtrlRead($Radio2)
Case $GUI_CHECKED
If FileExists("C:\Program Files (x86)\VideoLAN\VLC\vlc.exe") == 0 Then
Switch FileExists("C:\Program Files (x86)\VideoLAN\VLC\vlc.exe")
Case 0
$error=5
GUICtrlSetImage($Pic2, "")
GUICtrlSetImage($Pic2, "res\no.bmp")
Case Else
GUICtrlSetImage($Pic2, "")
GUICtrlSetImage($Pic2, "res\ok.bmp")
EndSwitch
Else
GUICtrlSetImage($Pic2, "")
GUICtrlSetImage($Pic2, "res\ok.bmp")
EndIf
EndSwitch
Else
GUICtrlSetImage($Pic2, "")
GUICtrlSetImage($Pic2, "res\no.bmp")
$error=$error+3
EndIf
Case 1
$error="forced"
EndSwitch
Return $error
EndFunc

Func browseVideoDir()
Local $brw=FileSelectFolder("Select the default video folder to use.", "")
If @error Then
ConsoleWrite("abort"&@CRLF)
Else
GUICtrlSetData($iVideoDir, $brw)
EndIf
checkOK()
EndFunc

Func close()
If $firstRun==False Then Exit
EndFunc

Func closeSettings()
If $firstRun == False Then
GUISetState(@SW_HIDE, $Form2)
Else
MsgBox(16, "Error", "You need to configure the program first!")
EndIf
EndFunc

Func star1()
If $canBeRated Then
ConsoleWrite("Updating rating for anime "&GUICtrlRead($animeList)&@CRLF)
$currentRating=1
IniWrite("data\"&StringLower(GUICtrlRead($animeList))&"\data.ini", "main", "rating", $currentRating)
forceUpdate()
EndIf
EndFunc

Func star2()
If $canBeRated Then
ConsoleWrite("Updating rating for anime "&GUICtrlRead($animeList)&@CRLF)
$currentRating=2
IniWrite("data\"&StringLower(GUICtrlRead($animeList))&"\data.ini", "main", "rating", $currentRating)
forceUpdate()
EndIf
EndFunc

Func star3()
If $canBeRated Then
ConsoleWrite("Updating rating for anime "&GUICtrlRead($animeList)&@CRLF)
$currentRating=3
IniWrite("data\"&StringLower(GUICtrlRead($animeList))&"\data.ini", "main", "rating", $currentRating)
forceUpdate()
EndIf
EndFunc

Func star4()
If $canBeRated Then
ConsoleWrite("Updating rating for anime "&GUICtrlRead($animeList)&@CRLF)
$currentRating=4
IniWrite("data\"&StringLower(GUICtrlRead($animeList))&"\data.ini", "main", "rating", $currentRating)
forceUpdate()
EndIf
EndFunc

Func star5()
If $canBeRated Then
ConsoleWrite("Updating rating for anime "&GUICtrlRead($animeList)&@CRLF)
$currentRating=5
IniWrite("data\"&StringLower(GUICtrlRead($animeList))&"\data.ini", "main", "rating", $currentRating)
forceUpdate()
EndIf
EndFunc

Func openSettingsWindow()
GUISetState(@SW_SHOW, $Form2)
EndFunc

Func saveAndClose()
Local $result=checkOK()
Switch $result
Case 0
$configured=True
GUISetState(@SW_HIDE, $Form2)
IniWrite("data\cfg.ini", "main", "sv.VideoDirectory", GUICtrlRead($iVideoDir))
IniWrite("data\cfg.ini", "keys", "hk.InterruptPlaylist", StringUpper(GUICtrlRead($Input1)))
Switch GUICtrlRead($Checkbox1)
Case $GUI_CHECKED
IniWrite("data\cfg.ini", "lists", "bv.UpdateOnLaunch", 1)
Case Else
IniWrite("data\cfg.ini", "lists", "bv.UpdateOnLaunch", 0)
EndSwitch
Switch GUICtrlRead($Checkbox2)
Case $GUI_CHECKED
IniWrite("data\cfg.ini", "lists", "bv.AskUpdateOnLaunch", 1)
Case Else
IniWrite("data\cfg.ini", "lists", "bv.AskUpdateOnLaunch", 0)
EndSwitch
Switch GUICtrlread($Checkbox3)
Case $GUI_CHECKED
IniWrite("data\cfg.ini", "media", "bv.AutomaticResume", 1)
case Else
IniWrite("data\cfg.ini", "media", "bv.AutomaticResume", 0)
EndSwitch
Switch GUICtrlRead($Radio1)
Case $GUI_CHECKED
IniWrite("data\cfg.ini", "media", "sv.MediaAgent", "WMP")
Case Else
IniWrite("data\cfg.ini", "media", "sv.MediaAgent", "VLC")
EndSwitch
Case 1
MsgBox(16, "Error", "Invalid directory.")
Case 2
MsgBox(16, "Error", "You can't use "&GUICtrlRead($Input1)&" as a playlist-breaking key. Only alphabetical characters allowed (no space). Use the OK button to verify if the key you want can be used.")
Case 3
MsgBox(16, "Error", "No media player selected.")
Case Else
MsgBox(16, "Error ["&$result&"]", "Some fields weren't filled or were filled with invalid data. Please remember that the given directory MUST be valid and that the key you use must consist of a single alphabetical character.")
EndSwitch
EndFunc

Func discardAndClose()
Switch $firstRun
Case True
MsgBox(16, "Error", "You need to configure the program first!")
Case Else
$configured=True
GUISetState(@SW_HIDE, $Form2)
EndSwitch
EndFunc
Func forceUpdate()
Local $stars[5]
$stars[0] = $star1
$stars[1] = $star2
$stars[2] = $star3
$stars[3] = $star4
$stars[4] = $star5
Switch $currentRating
Case 0
GUICtrlSetImage($star1, "res\passive_square.bmp")
GUICtrlSetImage($star2, "res\passive_square.bmp")
GUICtrlSetImage($star3, "res\passive_square.bmp")
GUICtrlSetImage($star4, "res\passive_square.bmp")
GUICtrlSetImage($star5, "res\passive_square.bmp")
Case 1
GUICtrlSetImage($star1, "res\selected_square.bmp")
For $i = 1 To 4 Step 1
GUICtrlSetImage($stars[$i], "res\passive_square.bmp")
Next
Case 2
GUICtrlSetImage($star1, "res\selected_square.bmp")
GUICtrlSetImage($star2, "res\selected_square.bmp")
For $i = 2 To 4 Step 1
GUICtrlSetImage($stars[$i], "res\passive_square.bmp")
Next
Case 3
GUICtrlSetImage($star1, "res\selected_square.bmp")
GUICtrlSetImage($star2, "res\selected_square.bmp")
GUICtrlSetImage($star3, "res\selected_square.bmp")
For $i = 3 To 4 Step 1
GUICtrlSetImage($stars[$i], "res\passive_square.bmp")
Next
Case 4
GUICtrlSetImage($star1, "res\selected_square.bmp")
GUICtrlSetImage($star2, "res\selected_square.bmp")
GUICtrlSetImage($star3, "res\selected_square.bmp")
GUICtrlSetImage($star4, "res\selected_square.bmp")
GUICtrlSetImage($star5, "res\passive_square.bmp")
Case 5
GUICtrlSetImage($star1, "res\selected_square.bmp")
GUICtrlSetImage($star2, "res\selected_square.bmp")
GUICtrlSetImage($star3, "res\selected_square.bmp")
GUICtrlSetImage($star4, "res\selected_square.bmp")
GUICtrlSetImage($star5, "res\selected_square.bmp")
EndSwitch
EndFunc ;===================> forceUpdate

While 1
$currentTab=_GUICtrlTab_GetCurSel($oTab1)
Switch $currentSelection
Case 0
$canBeRated=False
Case Else
Local $animeName = GUICtrlRead($animeList)
$canBeRated=True
$currentRating=IniRead("data\"&StringLower($animeName)&"\data.ini", "main", "rating", 0)
EndSwitch
Switch $canBeRated
Case True
; Allow stars to be selected, making them golden [aka STARS_SELECT]
Local $stars[5]
$stars[0] = $star1
$stars[1] = $star2
$stars[2] = $star3
$stars[3] = $star4
$stars[4] = $star5
Switch $currentRating
Case 0
GUICtrlSetImage($star1, "res\passive_square.bmp")
GUICtrlSetImage($star2, "res\passive_square.bmp")
GUICtrlSetImage($star3, "res\passive_square.bmp")
GUICtrlSetImage($star4, "res\passive_square.bmp")
GUICtrlSetImage($star5, "res\passive_square.bmp")
Case 1
GUICtrlSetImage($star1, "res\selected_square.bmp")
For $i = 1 To 4 Step 1
GUICtrlSetImage($stars[$i], "res\passive_square.bmp")
Next
Case 2
GUICtrlSetImage($star1, "res\selected_square.bmp")
GUICtrlSetImage($star2, "res\selected_square.bmp")
For $i = 2 To 4 Step 1
GUICtrlSetImage($stars[$i], "res\passive_square.bmp")
Next
Case 3
GUICtrlSetImage($star1, "res\selected_square.bmp")
GUICtrlSetImage($star2, "res\selected_square.bmp")
GUICtrlSetImage($star3, "res\selected_square.bmp")
For $i = 3 To 4 Step 1
GUICtrlSetImage($stars[$i], "res\passive_square.bmp")
Next
Case 4
GUICtrlSetImage($star1, "res\selected_square.bmp")
GUICtrlSetImage($star2, "res\selected_square.bmp")
GUICtrlSetImage($star3, "res\selected_square.bmp")
GUICtrlSetImage($star4, "res\selected_square.bmp")
GUICtrlSetImage($star5, "res\passive_square.bmp")
Case 5
GUICtrlSetImage($star1, "res\selected_square.bmp")
GUICtrlSetImage($star2, "res\selected_square.bmp")
GUICtrlSetImage($star3, "res\selected_square.bmp")
GUICtrlSetImage($star4, "res\selected_square.bmp")
GUICtrlSetImage($star5, "res\selected_square.bmp")
EndSwitch
; ===============================================================================> STARS_SELECT

; Update the stars when mouse hovers over them [aka STARS_UPDATE]
$mouseHoverOn=GUIGetCursorInfo($Form1)
If $mouseHoverOn[4] > ($star1)-1 and $mouseHoverOn[4] < ($star5)+1 Then
Switch $mouseHoverOn[4]
Case $star1
While $mouseHoverOn[4] == $star1
$mouseHoverOn=GUIGetCursorInfo($Form1)
If $currentRating < 1 Then GUICtrlSetImage($star1, "res\active_square.bmp")
WEnd
If $currentRating < 1 Then GUICtrlSetImage($star1, "res\passive_square.bmp")
If $currentRating < 2 Then GUICtrlSetImage($star2, "res\passive_square.bmp")
If $currentRating < 3 Then GUICtrlSetImage($star3, "res\passive_square.bmp")
If $currentRating < 4 Then GUICtrlSetImage($star4, "res\passive_square.bmp")
If $currentRating < 5 Then GUICtrlSetImage($star5, "res\passive_square.bmp")
Case $star2
While $mouseHoverOn[4] == $star2
$mouseHoverOn=GUIGetCursorInfo($Form1)
If $currentRating < 1 Then GUICtrlSetImage($star1, "res\active_square.bmp")
If $currentRating < 2 Then GUICtrlSetImage($star2, "res\active_square.bmp")
WEnd
If $currentRating < 1 Then GUICtrlSetImage($star1, "res\passive_square.bmp")
If $currentRating < 2 Then GUICtrlSetImage($star2, "res\passive_square.bmp")
If $currentRating < 3 Then GUICtrlSetImage($star3, "res\passive_square.bmp")
If $currentRating < 4 Then GUICtrlSetImage($star4, "res\passive_square.bmp")
If $currentRating < 5 Then GUICtrlSetImage($star5, "res\passive_square.bmp")
Case $star3
While $mouseHoverOn[4] == $star3
$mouseHoverOn=GUIGetCursorInfo($Form1)
If $currentRating < 1 Then GUICtrlSetImage($star1, "res\active_square.bmp")
If $currentRating < 2 Then GUICtrlSetImage($star2, "res\active_square.bmp")
If $currentRating < 3 Then GUICtrlSetImage($star3, "res\active_square.bmp")
WEnd
If $currentRating < 1 Then GUICtrlSetImage($star1, "res\passive_square.bmp")
If $currentRating < 2 Then GUICtrlSetImage($star2, "res\passive_square.bmp")
If $currentRating < 3 Then GUICtrlSetImage($star3, "res\passive_square.bmp")
If $currentRating < 4 Then GUICtrlSetImage($star4, "res\passive_square.bmp")
If $currentRating < 5 Then GUICtrlSetImage($star5, "res\passive_square.bmp")
Case $star4
While $mouseHoverOn[4] == $star4
$mouseHoverOn=GUIGetCursorInfo($Form1)
If $currentRating < 1 Then GUICtrlSetImage($star1, "res\active_square.bmp")
If $currentRating < 2 Then GUICtrlSetImage($star2, "res\active_square.bmp")
If $currentRating < 3 Then GUICtrlSetImage($star3, "res\active_square.bmp")
If $currentRating < 4 Then GUICtrlSetImage($star4, "res\active_square.bmp")
WEnd
If $currentRating < 1 Then GUICtrlSetImage($star1, "res\passive_square.bmp")
If $currentRating < 2 Then GUICtrlSetImage($star2, "res\passive_square.bmp")
If $currentRating < 3 Then GUICtrlSetImage($star3, "res\passive_square.bmp")
If $currentRating < 4 Then GUICtrlSetImage($star4, "res\passive_square.bmp")
If $currentRating < 5 Then GUICtrlSetImage($star5, "res\passive_square.bmp")
Case $star5
While $mouseHoverOn[4] == $star5
$mouseHoverOn=GUIGetCursorInfo($Form1)
If $currentRating < 1 Then GUICtrlSetImage($star1, "res\active_square.bmp")
If $currentRating < 2 Then GUICtrlSetImage($star2, "res\active_square.bmp")
If $currentRating < 3 Then GUICtrlSetImage($star3, "res\active_square.bmp")
If $currentRating < 4 Then GUICtrlSetImage($star4, "res\active_square.bmp")
If $currentRating < 5 Then GUICtrlSetImage($star5, "res\active_square.bmp")
WEnd
If $currentRating < 1 Then GUICtrlSetImage($star1, "res\passive_square.bmp")
If $currentRating < 2 Then GUICtrlSetImage($star2, "res\passive_square.bmp")
If $currentRating < 3 Then GUICtrlSetImage($star3, "res\passive_square.bmp")
If $currentRating < 4 Then GUICtrlSetImage($star4, "res\passive_square.bmp")
If $currentRating < 5 Then GUICtrlSetImage($star5, "res\passive_square.bmp")
EndSwitch
EndIf
; ===============================================================================> STARS_UPDATE
EndSwitch
If $currentTab==0 And GUICtrlGetState($animeList) == 96 Then
GUICtrlSetState($animeList, 80)
ConsoleWrite("1st:on, ")
GUICtrlSetState($seasonList, 96)
ConsoleWrite("2nd:off, ")
GUICtrlSetState($episodesList, 96)
ConsoleWrite("3rd:off.")
ConsoleWrite(" Currently counting "&_GUICtrlListBox_GetCount($animeList)&" items in 1st list."&@CRLF)
EndIf
If $currentTab==1 And GUICtrlGetState($seasonList) == 96 Then
GUICtrlSetState($animeList, 96)
ConsoleWrite("1st:off, ")
GUICtrlSetState($seasonList, 80)
ConsoleWrite("2nd:on, ")
GUICtrlSetState($episodesList, 96)
ConsoleWrite("3rd:off.")
ConsoleWrite(" Currently counting "&_GUICtrlListBox_GetCount($seasonList)&" items in 2nd list."&@CRLF)
EndIf

;~ For $i=0 To 100 Step 1
;~ GUICtrlSetData($seasonList, $i&"|")
;~ Next
;~ For $i=0 To _GUICtrlListBox_GetCount($seasonList)-1 Step 1
;~ _GUICtrlListBox_SetCurSel($seasonList, $i)
;~ ConsoleWrite(GUICtrlRead($seasonList)&@CRLF)
;~ Next
;~ EndIf


If $currentTab==2 And GUICtrlGetState($episodesList) == 96 Then
GUICtrlSetState($animeList, 96)
ConsoleWrite("1st:off, ")
GUICtrlSetState($seasonList, 96)
ConsoleWrite("2nd:off, ")
GUICtrlSetState($episodesList, 80)
ConsoleWrite("3rd:on.")
ConsoleWrite(" Currently counting "&_GUICtrlListBox_GetCount($episodesList)&" items in 3rd list."&@CRLF)
EndIf


WEnd

Might be better here http://pastebin.com/DLw2rj8Q

Don't mind the other errors, I'm aware of them (some are caused to me using an older version of autoit when writing this :/)

Edited by megablox

"The story of a blade is linked in Blood." 

―Yasuo

 

Link to comment
Share on other sites

  • Moderators

megablox,

It is difficult to run your script as it seems very closely tied to your folder setup, but the intitial GUI creation code offers a good clue as to why you are having problems with the list controls and the tabs. ;)

You need to create the list controls inside the correct part of the tab structure - at the moment you are creating both the "Seasons" and "Episodes" lists on the final tab. Try this code and see if it fixes the problem:

$oTab1 = GUICtrlCreateTab(0, 0, 417, 329)
$tList = GUICtrlCreateTabItem("List of animes")
$animeList = GUICtrlCreateList("", 8, 32, 401, 280, BitOR($LBS_NOTIFY, $LBS_SORT, $WS_VSCROLL), 0)
GUICtrlSetOnEvent(-1, "updateSeasonsList")
GUICtrlSetFont(-1, 8, 400, 0, "Arial")
$tSeasons = GUICtrlCreateTabItem("Seasons")
$seasonList = GUICtrlCreateList("", 8, 32, 401, 280, BitOR($LBS_NOTIFY, $LBS_SORT, $WS_VSCROLL), 0)
GUICtrlSetFont(-1, 8, 400, 0, "Arial")
$tEpisodes = GUICtrlCreateTabItem("Episodes")
$episodesList = GUICtrlCreateList("", 8, 32, 401, 280, BitOR($LBS_NOTIFY, $LBS_SORT, $WS_VSCROLL), 0)
GUICtrlSetFont(-1, 8, 400, 0, "Arial")
GUICtrlCreateTabItem("")

Any luck? :)

M23

Public_Domain.png.2d871819fcb9957cf44f4514551a2935.png Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind

Open spoiler to see my UDFs:

Spoiler

ArrayMultiColSort ---- Sort arrays on multiple columns
ChooseFileFolder ---- Single and multiple selections from specified path treeview listing
Date_Time_Convert -- Easily convert date/time formats, including the language used
ExtMsgBox --------- A highly customisable replacement for MsgBox
GUIExtender -------- Extend and retract multiple sections within a GUI
GUIFrame ---------- Subdivide GUIs into many adjustable frames
GUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView items
GUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeView
Marquee ----------- Scrolling tickertape GUIs
NoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxes
Notify ------------- Small notifications on the edge of the display
Scrollbars ----------Automatically sized scrollbars with a single command
StringSize ---------- Automatically size controls to fit text
Toast -------------- Small GUIs which pop out of the notification area

 

Link to comment
Share on other sites

  • Moderators

megablox,

Excellent - glad I could help. :)

M23

Public_Domain.png.2d871819fcb9957cf44f4514551a2935.png Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind

Open spoiler to see my UDFs:

Spoiler

ArrayMultiColSort ---- Sort arrays on multiple columns
ChooseFileFolder ---- Single and multiple selections from specified path treeview listing
Date_Time_Convert -- Easily convert date/time formats, including the language used
ExtMsgBox --------- A highly customisable replacement for MsgBox
GUIExtender -------- Extend and retract multiple sections within a GUI
GUIFrame ---------- Subdivide GUIs into many adjustable frames
GUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView items
GUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeView
Marquee ----------- Scrolling tickertape GUIs
NoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxes
Notify ------------- Small notifications on the edge of the display
Scrollbars ----------Automatically sized scrollbars with a single command
StringSize ---------- Automatically size controls to fit text
Toast -------------- Small GUIs which pop out of the notification area

 

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

  • Recently Browsing   0 members

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