Webgadget NavigationCallback abschalten?

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Velindos
Beiträge: 598
Registriert: 15.11.2010 10:56

Webgadget NavigationCallback abschalten?

Beitrag von Velindos »

Hallo Leute,

mir ist nicht klar wie man den NavigationCallback abschaltet. Versuchte schon einiges ging aber nicht, vielleicht hat jemanden einen Tip.

Code: Alles auswählen

Procedure NavigationCallback(Gadget, Url$) 
    If Url$= "http://www.purebasic.com/news.php" 
      MessageRequester("", "No news today!") 
      ProcedureReturn #False 
    Else 
      ProcedureReturn #True 
    EndIf 
  EndProcedure 
  
  If OpenWindow(0, 0, 0, 600, 300, "WebGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered) 
    WebGadget(0, 10, 10, 580, 280, "http://www.purebasic.com") 
    SetGadgetAttribute(0, #PB_Web_NavigationCallback, @NavigationCallback())
    Repeat 
    Until WaitWindowEvent() = #PB_Event_CloseWindow 
  EndIf

Gruss ... Velindos
Windows 7/8/8.1/10 (32/64-Bit) |Ubuntu 10.4 (64-Bit) |Purebasic 5.71 LTS (32/64-Bit)
Benutzeravatar
CodeCommander
Beiträge: 213
Registriert: 02.03.2014 16:06

Beitrag von CodeCommander »

~ DELETE ~
Zuletzt geändert von CodeCommander am 18.01.2015 14:56, insgesamt 1-mal geändert.
~ DELETE ~
Benutzeravatar
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: Webgadget NavigationCallback abschalten?

Beitrag von Kiffi »

Code: Alles auswählen

SetGadgetAttribute(0, #PB_Web_NavigationCallback, #Null)
Grüße ... Peter
a²+b²=mc²
Benutzeravatar
Velindos
Beiträge: 598
Registriert: 15.11.2010 10:56

Re: Webgadget NavigationCallback abschalten?

Beitrag von Velindos »

Hallo, Danke für den TIP. Geht, aber... wenn ich die neue Seite geladen habe bringe ich das Ding nich zum laufen.

Code: Alles auswählen

Enumeration
   #PurbasicSeite
   #WebDeSeite
EndEnumeration


Procedure NavigationCallback(Gadget, Url$)
   Static start = 0
      If Not start ; ersten aufruf durchlassen
         start = 1
         SetGadgetText(1,Url$)
         ProcedureReturn #False
      ElseIf start; jeden weiteren aufruf an das 2 Webgaget leiten
         SetGadgetText(1,Url$)
         ProcedureReturn #False
      Else
         ProcedureReturn #True 
      EndIf
EndProcedure

   If OpenWindow(0, 0, 0, 600, 300, "WebGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
      WebGadget(0, 10, 10, 200, 280, "http://www.purebasic.com")
      WebGadget(1, 210, 10, 380, 280, "")
      SetGadgetAttribute(0, #PB_Web_NavigationCallback, @NavigationCallback())
      
      AddKeyboardShortcut (0, #PB_Shortcut_Control | #PB_Shortcut_B, #PurbasicSeite)                         ; Shortcut einschalten
      AddKeyboardShortcut (0, #PB_Shortcut_Control | #PB_Shortcut_N, #WebDeSeite)                            ; Shortcut einschalten
      
      Repeat
         EventID = WaitWindowEvent() ; Wartet bis ein Ereignis auftritt am Fenster(Window)
         
         Select EventID
               
            Case #PB_Event_Menu ; <<< Ereigniss am Menu
               Select EventMenu()
                     
                  Case #PurbasicSeite
                     SetGadgetAttribute(0, #PB_Web_NavigationCallback, #Null)
                     SetGadgetText(0,"http://www.purebasic.com")
                     SetGadgetAttribute(0, #PB_Web_NavigationCallback, #True)
                  Case #WebDeSeite
                     SetGadgetAttribute(0, #PB_Web_NavigationCallback, #Null)
                     SetGadgetText(0,"http://www.web.de")
                     SetGadgetAttribute(0, #PB_Web_NavigationCallback, #True)
                     
               EndSelect
         EndSelect
      Until WaitWindowEvent() = #PB_Event_CloseWindow
   EndIf
Hab versucht es mit True wieder einzuschalten aber will und will nicht! Was mache ich Falsch oder wo stehe ich auf der Leitung!

Gruss ... Velindos
Windows 7/8/8.1/10 (32/64-Bit) |Ubuntu 10.4 (64-Bit) |Purebasic 5.71 LTS (32/64-Bit)
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8809
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

Re: Webgadget NavigationCallback abschalten?

Beitrag von NicTheQuick »

Du musst dann natürlich wieder 'SetGadgetAttribute(0, #PB_Web_NavigationCallback, @NavigationCallback())' aufrufen.
Benutzeravatar
Velindos
Beiträge: 598
Registriert: 15.11.2010 10:56

Re: Webgadget NavigationCallback abschalten?

Beitrag von Velindos »

Hallo Leute,
habe mal was zusammengeboot was läuft. Wenn Ihr noch Tips oder Verbesserungen habt wäre ich Dankbar.

Code: Alles auswählen

Enumeration
   #PurbasicSeite
   #WebDeSeite
EndEnumeration

Global start
Global SiteLoaded = 0
Procedure.i WebGadgetBusy(pbnr)
   Protected event
   While WindowEvent()
   Wend
   While GetGadgetAttribute(pbnr, #PB_Web_Busy)
      event = WindowEvent()
         If event = #WM_KEYDOWN
               If EventwParam() = #VK_ESCAPE
                  ProcedureReturn #S_FALSE
               EndIf
         EndIf
      Delay(1)
   Wend
   ProcedureReturn #S_OK
EndProcedure

Procedure NavigationCallback(Gadget, Url$)
   ;    Static start = 0
      If Not start ; ersten aufruf durchlassen
         start = 1
         SetGadgetText(1,Url$)
         ProcedureReturn #False
      ElseIf start; jeden weiteren aufruf an das 2 Webgaget leiten
         SetGadgetText(1,Url$)
         ProcedureReturn #False
      Else
         ProcedureReturn #True 
      EndIf
EndProcedure

   If OpenWindow(0, 0, 0, 600, 300, "WebGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
      WebGadget(0, 10, 10, 200, 280, "http://www.purebasic.com")
      WebGadget(1, 210, 10, 380, 280, "")
      SetGadgetAttribute(0, #PB_Web_NavigationCallback, @NavigationCallback())
      
      AddKeyboardShortcut (0, #PB_Shortcut_Control | #PB_Shortcut_B, #PurbasicSeite)                         ; Shortcut einschalten
      AddKeyboardShortcut (0, #PB_Shortcut_Control | #PB_Shortcut_N, #WebDeSeite)                            ; Shortcut einschalten
      
      Repeat
         EventID = WaitWindowEvent() ; Wartet bis ein Ereignis auftritt am Fenster(Window)
         Select EventID
               
            Case #PB_Event_Menu ; <<< Ereigniss am Menu
               Select EventMenu()
                  Case #PurbasicSeite
                     SetGadgetAttribute(0, #PB_Web_NavigationCallback, #Null)
                     SetGadgetText(0,"http://www.purebasic.com")
                        If WebGadgetBusy(0)     =  #S_OK                                                  ; Webgadget Status zurücksetzen!
                           start = 0
                           SetGadgetAttribute(0, #PB_Web_NavigationCallback, @NavigationCallback())
                        EndIf
                     
                  Case #WebDeSeite
                     SetGadgetAttribute(0, #PB_Web_NavigationCallback, #Null)
                     SetGadgetText(0,"http://www.web.de")
                        If  WebGadgetBusy(0) =  #S_OK                                        ; Webgadget Status zurücksetzen!
                           start = 0
                           SetGadgetAttribute(0, #PB_Web_NavigationCallback, @NavigationCallback())
                        EndIf
                     
               EndSelect
         EndSelect
      Until WaitWindowEvent() = #PB_Event_CloseWindow
   EndIf
Gruss ... Velindos
Windows 7/8/8.1/10 (32/64-Bit) |Ubuntu 10.4 (64-Bit) |Purebasic 5.71 LTS (32/64-Bit)
Antworten