Not sure how to update the progress bar from the main window? Around lines 42 - 63
Chopped this down from another program so this example may be more complex than it needs to be.
TIA
Code: Select all
; ------------------------------------------------------------
;  progress bar example
; ------------------------------------------------------------
; ------------------------------------------------------------
;  variables
; ------------------------------------------------------------
Global eWaitWindow.i                                                            ;;
Global eType.i                                                                  ;;
Global gActiveGadget.i                                                          ;;
Global progressBarWindow.i = 0                                                  ;;
Global gProgressBarGadget.i = 0                                                 ;;
Global gProgressBarGadgetLevel.i = 50                                           ;;
Global gDoneYet.i = 0                                                           ;;
;------------------------------------------------------------
; init a main window
;------------------------------------------------------------
Global gWinMain = OpenWindow( #PB_Any, 0, 0, 480, 320,                          ;; create a window get windowID into mainWin
_                     "winMain",                                                ;; title
_                     #PB_Window_SystemMenu |                                   ;; has system menu
_                     #PB_Window_SizeGadget |                                   ;; allow resize
_                     #PB_Window_MinimizeGadget |                               ;; has minimize button
_                     #PB_Window_MaximizeGadget |                               ;; has maximize button
_                     #PB_Window_ScreenCentered)                                ;; center the screen
;------------------------------------------------------------
; two buttons
;------------------------------------------------------------
Global gBtnPrev = ButtonGadget(#PB_Any, 305, 10, 80, 24, "DEC")                 ;; DEC
Global gBtnNext = ButtonGadget(#PB_Any, 390, 10, 80, 24, "INC")                 ;; INC
;------------------------------------------------------------
; a field
;------------------------------------------------------------
Global gFieldValue = StringGadget(#PB_Any, 40, 40, 320, 24,"")                  ;; see the current value
;------------------------------------------------------------
; progress bar
;------------------------------------------------------------
Procedure progressBar(gDoneYet)                                                 ;; this will be threaded
  If OpenWindow(0, 0, 0, 320, 20, "Progress ...",                               ;; main window for progress bar
    _                                #PB_Window_SystemMenu |                    ;;
    _                                #PB_Window_ScreenCentered |                ;;
    _                                #PB_Window_Tool |                          ;;
    _                                #PB_Window_BorderLess)                     ;;
    
    gProgressBarGadget = ProgressBarGadget(#PB_Any,                             ;; progress bar
    _                                      0,0,320,20,0,100,                    ;;
    _                                      #PB_Window_WindowCentered)           ;;
    Repeat                                                                      ;; loop begin
      SetGadgetState(gProgressBarGadget, gProgressBarGadgetLevel)               ;; set the state
      Delay (250)                                                               ;; fast enough
    Until WaitWindowEvent()=#PB_Event_CloseWindow                               ;; close option
    
    ;; ********************************************************************************************************
    ;;  must process events here???
    ;;  how do I get the window to automatically update progress bar??
    ;; ********************************************************************************************************
  EndIf                                                                         ;; end main window of progressbar
EndProcedure                                                                    ;; end procedure for progressbar
Thread = CreateThread(@progressBar(), 0)                                        ;; start the procedure
;------------------------------------------------------------
; mouse navigation
;------------------------------------------------------------
Procedure MouseNavigationLeft()
  ;-----------------------------------------------------------
  ; [Left Mouse Button] clicked
  ; find which gadget and take action
  ;-----------------------------------------------------------
  If gWin_kb_MouseButtonLeft > -1 And _                                       ;; if mouse button is clicked
      EType = 0                                                               ;; mouseUp
    
    Select (gActiveGadget)                                                    ;; which gadget sent a left click
      
      ;-----------------------------------------------------------
      ; [Left Mouse] click on Prev card button
      ;-----------------------------------------------------------
    Case gBtnPrev                                                             ;; prev Button clicked
      If gProgressBarGadgetLevel > 1                                          ;; if level is not zero
        gProgressBarGadgetLevel = gProgressBarGadgetLevel - 10                ;; subtract 10
        SetGadgetText(gFieldValue, Str(gProgressBarGadgetLevel))              ;; show number in field
      EndIf                                                                   ;; end if prev button clicked
      
      
      ;-----------------------------------------------------------
      ; [Left Mouse] click on Next card button
      ;-----------------------------------------------------------
    Case gBtnNext                                                             ;; next Button clicked  
      If gProgressBarGadgetLevel < 100                                        ;; if level is not 100
        gProgressBarGadgetLevel = gProgressBarGadgetLevel + 10                ;; add 10
        SetGadgetText(gFieldValue, Str(gProgressBarGadgetLevel))              ;; show number in field
      EndIf                                                                   ;; end if next button clicked
    EndSelect                                                                 ;; end select gadget from left click
  EndIf                                                                       ;; end if mouse button clicked
EndProcedure                                                                  ;; end procedure mouse navigation left
;------------------------------------------------------------
; event loop
;------------------------------------------------------------
Procedure EventLoop()                                                           
  ;-----------------------------------------------------------
  ; event loop
  ;-----------------------------------------------------------
  Repeat                                                                        ;; run the loop until QUIT = 1
    ;Debug (eWaitWindow.i)                                                       ;;
    ;Debug (eType.i)                                                             ;;
    ;Debug (gActiveGadget.i)                                                     ;;
    
    gWin_kb_MouseButtonLeft_LastState = gWin_kb_MouseButtonLeft                 ;; grab last state of left mouse key
    gWin_kb_MouseButtonRight_LastState = gWin_kb_MouseButtonRight               ;; grab last state of right mouse button
    gActiveGadgetLast = gActiveGadget                                           ;; grab (last) gadget that has focus
    
    ;; ---------------------------------------------------------
    ;;  grab new needed key states
    ;; ---------------------------------------------------------
    gWin_kb_MouseButtonLeft = GetAsyncKeyState_(#VK_LBUTTON)                    ;; left mouse button
    gWin_kb_MouseButtonRight = GetAsyncKeyState_(#VK_RBUTTON)                   ;; right mouse button
    
    ;;---------------------------------------------------------
    ;; grab new current events
    ;;---------------------------------------------------------
    eWaitWindow = WaitWindowEvent()                                             ;; get event ID (used for resizing)
    eType = EventType()                                                         ;; looking for mouse clicks i.e. left click
    gActiveGadget = GetActiveGadget()                                           ;; the gadget that has the current focus
    
    
    ;;-----------------------------------------------------------
    ;; Check mouse
    ;;-----------------------------------------------------------
    MouseNavigationLeft()                                                       ;; check mouse
    
    ;;-----------------------------------------------------------
    ;; Window Events
    ;;-----------------------------------------------------------
    Select eWaitWindow                                                          ;; (used for resizing, quitting, return key)
      
    Case #PB_Event_SizeWindow                                                   ;; we were resized
      
    Case #PB_Event_CloseWindow                                                  ;; If the user has pressed on the close button
      Quit = 1                                                                  ;; get ready to quit the app
      
    EndSelect                                                                   ;; end of select myEvent
    
  Until Quit = 1                                                                ;; quit is one so we can close all windows
  ;;----------------------------------------------------------
  ;; end event loop
  ;;----------------------------------------------------------
  
EndProcedure
;;------------------------------------------------------------
;; main Program
;;------------------------------------------------------------
EventLoop()                                                                     ;; done - event driven
End                                                                             ;; done - End Program (close any still open windows)

