after doing a DatabaseUpdate program shuts down
Posted: Tue May 28, 2024 1:48 am
No errors are returned from anything, but after the DatabaseUpdate, it does the FinishDatabaseQuery and closedatabase. When it returns to the main loop it quits, without an error. Any thoughts?
Pi3Settings.pbf
Pi3Settings.pb
Pi3Settings.pbf
Code: Select all
; Form Designer for Purebasic - 6.10
; Warning: this file uses a strict syntax, if you edit it, make sure to respect the Form Designer limitation or it won't be opened again.
;
; This code is automatically generated by the FormDesigner.
; Manual modification is possible to adjust existing commands, but anything else will be dropped when the code is compiled.
; Event procedures needs to be put in another source file.
;
Global Window_0
Global ExplorerList_0, ListIcon_0
Procedure OpenWindow_0(x = 0, y = 0, width = 490, height = 390)
Window_0 = OpenWindow(#PB_Any, x, y, width, height, "Pi3 Settings", #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_ScreenCentered)
ExplorerList_0 = ExplorerListGadget(#PB_Any, 10, 10, 460, 160, "", #PB_Explorer_AlwaysShowSelection | #PB_Explorer_GridLines | #PB_Explorer_FullRowSelect | #PB_Explorer_NoFolders | #PB_Explorer_NoParentFolder | #PB_Explorer_NoDirectoryChange | #PB_Explorer_NoDriveRequester | #PB_Explorer_AutoSort)
ListIcon_0 = ListIconGadget(#PB_Any, 10, 180, 460, 200, "Column 1", 100, #PB_ListIcon_GridLines | #PB_ListIcon_FullRowSelect | #PB_ListIcon_AlwaysShowSelection)
EndProcedure
Procedure Window_0_Events(event)
Select event
Case #PB_Event_CloseWindow
ProcedureReturn #False
Case #PB_Event_Menu
Select EventMenu()
EndSelect
Case #PB_Event_Gadget
Select EventGadget()
EndSelect
EndSelect
ProcedureReturn #True
EndProcedure
Code: Select all
EnableExplicit
XIncludeFile "Pi3Settings.pbf"
Declare.i ProcDb(filename$)
Declare FixClipListRefresh(filename$)
UseSQLiteDatabase()
OpenWindow_0()
SetGadgetItemAttribute(ExplorerList_0, 0, #PB_Explorer_ColumnWidth , 130, 3)
RemoveGadgetColumn(listicon_0, 0)
Define w = GadgetWidth(listicon_0)
AddGadgetColumn(listicon_0, 0,"Setting", w/2)
AddGadgetColumn(listicon_0, 1,"Value", w/2)
;AddGadgetColumn(listicon_0, 1,"Count", 100)
Debug GetCurrentDirectory()
SetGadgetText(ExplorerList_0, GetCurrentDirectory() + "*.pi3")
Define event
Define CurForm
Define EvntType
Define GadgetNumber
Define i,txt$
;OnErrorGoto(?ErrorHandler)
Repeat
Event = WaitWindowEvent()
EvntType = EventType()
Select EventWindow()
Case window_0
Select event
Case #PB_Event_CloseWindow
Break
Case #PB_Event_Gadget
GadgetNumber = EventGadget()
Select GadgetNumber
Case ExplorerList_0
If EvntType = #PB_EventType_Change
i = GetGadgetState(GadgetNumber)
If i < 0:Break:EndIf
txt$ = GetGadgetItemText(GadgetNumber,i)
If ProcDb(txt$) < 0:Continue:EndIf
FixClipListRefresh(txt$)
EndIf
EndSelect
EndSelect
EndSelect
ForEver
End
Procedure.i ProcDb(filename$)
ClearGadgetItems(listicon_0)
If Len(filename$) = 0:ProcedureReturn:EndIf
If OpenDatabase(0, filename$, "", "",#PB_Database_SQLite) = 0:ProcedureReturn:EndIf
If DatabaseQuery(0, "SELECT * FROM Settings") = 0
FinishDatabaseQuery(0)
CloseDatabase(0)
ProcedureReturn
EndIf
Protected NewList Settings$()
While NextDatabaseRow(0)
AddElement(Settings$())
Settings$() = GetDatabaseString(0, 0)+Chr(10)+GetDatabaseString(0,1)
Wend
FinishDatabaseQuery(0)
CloseDatabase(0)
SortList(settings$(),#PB_Sort_Ascending | #PB_Sort_NoCase)
Protected sel = -1
Protected index
ForEach Settings$()
AddGadgetItem(listicon_0, -1, settings$())
If FindString(Settings$(),"Cliplist Refresh",0,#PB_String_NoCase)
sel = index
EndIf
index = index + 1
Next
If sel = -1:ProcedureReturn:EndIf
SetGadgetItemState(listicon_0, sel, #PB_ListIcon_Selected )
SendMessage_(GadgetID(listicon_0), #LVM_SCROLL, 0, sel*18)
SetActiveGadget(listicon_0)
Protected txt$ = GetGadgetItemText(listicon_0,sel,1)
If Abs(Val(txt$)) <> 2
ProcedureReturn -1
Else
ProcedureReturn sel
EndIf
EndProcedure
Procedure FixClipListRefresh(filename$)
Protected cmd$ = "Insert or Replace into Settings(Setting,Data) VALUES ('Cliplist Refresh','0')"
If OpenDatabase(1, filename$, "", "",#PB_Database_SQLite)
If DatabaseUpdate(1, cmd$) <> 0
MessageRequester("Pi3 Settings","Changed 'Cliplist Refresh' from FTP to Serial")
Else
MessageRequester("Pi3 Settings", "Database error: " + DatabaseError())
EndIf
FinishDatabaseQuery(1)
CloseDatabase(1)
EndIf
EndProcedure