Global GoogleFileID$ Procedure ReadFileCallback(Status, Filename$, File, SizeRead) Select Status Case #PB_Status_Loaded Debug "File #" + File + " loaded" SetGadgetText(0, ReadString(0, #PB_File_IgnoreEOL)) CloseFile(0) Case #PB_Status_Error ; File loading has failed Debug "Error when loading file #" + File EndSelect EndProcedure Procedure SaveFileCallback(Status, Filename$, File, SizeRead) Select Status Case #PB_Status_Saved Debug "File #" + File + " saved" Debug Filename$ Case #PB_Status_Error ; File saving has failed Debug "Error when saving file #" + File EndSelect EndProcedure Procedure OnSelectedFiles() While NextSelectedFile() GoogleFileID$ = SelectedFileID() ReadFile(0, GoogleFileID$, @ReadFileCallback(), #PB_GoogleDriveFile) Wend EndProcedure Procedure OnOpenFile() OpenFileRequester("", @OnSelectedFiles(), #PB_Requester_GoogleDrive) EndProcedure Procedure OnNewFile() SetGadgetText(0, "") GoogleFileID$ = "" EndProcedure Procedure OnSaveFile() If GoogleFileID$ Debug "Existing file will be modified" Result = CreateFile(0, GoogleFileID$, @SaveFileCallback(), #PB_GoogleDriveFile) Else Debug "A new file will be created (New file.txt)" Result = CreateFile(0, "New file.txt", @SaveFileCallback()) ; Create a new file on the drive EndIf If Result WriteString(0, GetGadgetText(0)) ExportFile(0, "application/octet-stream", #PB_GoogleDriveFile) EndIf EndProcedure Procedure Start() OpenWindow(0, 10, 10, 600, 400, "SpiderEditor", #PB_Window_ScreenCentered) CreateMenu(0, WindowID(0)) ; Create an empty menu to have the keyboard event working ; Create our toolbar ; CreateToolBar(0, WindowID(0)) ToolBarImageButton(0, ImageID(0)) ToolBarImageButton(1, ImageID(1)) ToolBarImageButton(2, ImageID(2)) EditorGadget(0, 0, 0, 600, 370) BindMenuEvent(0, 0, @OnNewFile()) BindMenuEvent(0, 1, @OnOpenFile()) BindMenuEvent(0, 2, @OnSaveFile()) AddKeyboardShortcut(0, #PB_Shortcut_Control | #PB_Shortcut_N, 0) AddKeyboardShortcut(0, #PB_Shortcut_Control | #PB_Shortcut_O, 1) AddKeyboardShortcut(0, #PB_Shortcut_Control | #PB_Shortcut_S, 2) EndProcedure Procedure GoogleDriveReady() Debug "Google drive ready to use.." EndProcedure Procedure Loading(Type, Filename$) Static NbLoadedElements NbLoadedElements+1 If NbLoadedElements = 3 ; Finished the loading of all images, we can start the application Start() EndIf EndProcedure UseGoogleDrive("568545051626-vlffi940ra93pmb3pl3tq1eaueejje7h", "AIzaSyAp_978UH3YhI4czaGaFmWWvN14AJgNfVQ", @GoogleDriveReady()) ; Register the loading event before calling any resource load command BindEvent(#PB_Event_Loading, @Loading()) LoadImage(0, "Data/ToolBar/New.png") LoadImage(1, "Data/ToolBar/Open.png") LoadImage(2, "Data/ToolBar/Save.png")