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