Neue Webseite in zweitem Webgadget ?

Anfängerfragen zum Programmieren mit PureBasic.
DerProgrammierer78
Beiträge: 126
Registriert: 24.10.2004 21:11
Wohnort: Ahlen

Neue Webseite in zweitem Webgadget ?

Beitrag von DerProgrammierer78 »

Hallo zusammen ... ich wieder ... :mrgreen:

Gibt es eine Möglichkeit, wenn ich in einem Fenster 2 Webgadgets habe, dass wenn ich im einen einen Link anklicke, dass dieser Link nicht im IE, sondern in dem zweiten Webgadget geöffnet wird ????

Ich beschäftige mich derzeit sehr viel mit den Webgadgets (Habe das sehr lange vernachlässigt) und versuche gerade eine Art kleiner Browser mit Tab-System zu programmieren ...
Der Computer ist der beste Freund des Menschen.
Aber wer so viele Freunde hat wie ich vergrault damit jede Frau!!!!!!! ;-)
Benutzeravatar
edel
Beiträge: 3667
Registriert: 28.07.2005 12:39
Computerausstattung: GameBoy
Kontaktdaten:

Beitrag von edel »

Code: Alles auswählen

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


hWnd = OpenWindow(0,#PB_Ignore,#PB_Ignore,640,480,"leer",#WS_OVERLAPPEDWINDOW)

CreateGadgetList(hWnd)
WebGadget(0,0,0,640,230,"google.de")
WebGadget(1,0,235,640,480,"")
SetGadgetAttribute(0,#PB_Web_NavigationCallback,@NavigationCallback())

Repeat
   event = WaitWindowEvent()
   
Until event = #PB_Event_CloseWindow 
DerProgrammierer78
Beiträge: 126
Registriert: 24.10.2004 21:11
Wohnort: Ahlen

Beitrag von DerProgrammierer78 »

Danke ... Das funktioniert super .... :mrgreen:

Nur habe ich ein Problem damit ...

Der öffnet generell JEDE Seite im 2. Webgadget ...

Ich muss mich entschuldigen, dass ich meine Frage nicht präzise genug gestellt habe ...

Es geht um folgendes Problem ...

Ich habe zwei Webgadgets (fürs erste...) und in vielen Fällen wie hier z.B. bei deinem Beispiel wird ja vieles im gleichen Webgadget gemacht. Aber wenn ich nun auf eine Seite komme, die die nächste Seite in einem neuen Fenster öffnet. Dann startet der mir den IE und öffnet diese da. Wie mache ich es, dass er mir nur die abfängt und im nächsten Webgadget öffnet, die in einem neuen Fenster geöffnet werden ?

Sorry nochmal, dass meine Fragestellung so unpräzise war und danke für deine Hilfe ...
Der Computer ist der beste Freund des Menschen.
Aber wer so viele Freunde hat wie ich vergrault damit jede Frau!!!!!!! ;-)
DerProgrammierer78
Beiträge: 126
Registriert: 24.10.2004 21:11
Wohnort: Ahlen

Beitrag von DerProgrammierer78 »

Ich habe nun im Internet mal nach dem Befehl #PB_Web_NavigationCallback gesucht, den du benutzt hast, und eine Seite gefunden mit vielen Befehlen.

Code: Alles auswählen

Callback format:
Procedure ScintillaCallBack(EditorWindow.l, EditorGadget.l, *scinotify.SCNotification, lParam.l)
EndProcedure


- added: Lots of new Stuff for the WebGadget
SetGadgetItemText(#Web, #PB_Web_HtmlCode, Code$) - stream new code into the gadget
GetGadgetItemText(#Web, #PB_Web_HtmlCode) - get all code inside the gadget
GetGadgetItemText(#Web, #PB_Web_PageTitle) - get title string for the currently displayed page
GetGadgetItemText(#Web, #PB_Web_StatusMessage) - get the current message for the browser statusbar
GetGadgetItemText(#Web, #PB_Web_SelectedText) - get all currently selected text

New EventType() values for the WebGadget
#PB_EventType_TitleChange ; page title changed
#PB_EventType_StatusChange ; statusbar message changed
#PB_EventType_PopupWindow ; a popup was blocked (only if popups are blocked)
#PB_EventType_DownloadStart ; loading a page started
#PB_EventType_DownloadProgress ; loading progress changed (see Progress, ProgressMax below)
#PB_EventType_DownloadEnd ; loading finished (or aborted)
#PB_EventType_PopupMenu ; the popup menu is requested (only if the IE menu is blocked)

For Get/SetGadgetAttribute():
#PB_Web_BlockPopups ; block popup windows
#PB_Web_BlockPopupMenu ; block IE menu (the above event is fired to allow a custom menu)
#PB_Web_NavigationCallback ; set a callback to trace (and prevent) navigation (See example)
#PB_Web_Progress ; at a DownloadProgress event, get the downloaded data (readonly) may be 0 if unknown
#PB_Web_ProgressMax ; at a DownloadProgress event, get the total size (readonly) may be 0 if unknown
#PB_Web_Busy ; check if the Gadget is busy loading/rendering (readonly)
#PB_Web_ScrollX ; get/set the X scroll position
#PB_Web_ScrollY ; get/set the Y scroll position
Mal schaun was ich damit anfangen kann ...

Evtl. kann ich mein Problem ja damit lösen ..:) :mrgreen:
Der Computer ist der beste Freund des Menschen.
Aber wer so viele Freunde hat wie ich vergrault damit jede Frau!!!!!!! ;-)
Benutzeravatar
PureLust
Beiträge: 1145
Registriert: 21.07.2005 00:02
Computerausstattung: Hab aktuell im Grunde nur noch 'nen Lenovo Yoga 2 Pro im Einsatz.
Wohnort: am schönen Niederrhein

Beitrag von PureLust »

DerProgrammierer78 hat geschrieben:Ich habe nun im Internet mal nach dem Befehl #PB_Web_NavigationCallback gesucht, den du benutzt hast, und eine Seite gefunden mit vielen Befehlen.
... [schnipp] ...

Mal schaun was ich damit anfangen kann ...

Evtl. kann ich mein Problem ja damit lösen ..:) :mrgreen:
Naja ... Du hättest ja vielleicht auch einfach nur mal in die aktuelle Hilfe zur 4.10-Beta2 unter "WebGadget" nachzuschauen brauchen - da steht das nämlich alles drin. :roll:

Wie auch immer - ich habe gerade mal versucht Dir dazu was zu machen.
Habe dann aber festgestellt, dass der Navigation_Callback gar keinen Callback bekommt, wenn man einen Link anklickt der in einem neuen Fenster geöffnet werden soll (also entweder über Angabe von "target=" im Link oder eben durch "Rechtsklick->In neuem Fenster öffnen").

Somit kann man solche Links also (momentan?) garnicht abfangen bzw. in ein bestimmtes WebGadget umleiten.
Bei solchen Links wird also (momentan) in jedem Fall ein neues IE-Fenster geöffnet.
[Dynamic-Dialogs] - komplexe dynamische GUIs einfach erstellen
[DeFlicker] - Fenster flimmerfrei resizen
[WinFX] - Window Effekte (inkl. 'durchklickbares' Window)
Benutzeravatar
edel
Beiträge: 3667
Registriert: 28.07.2005 12:39
Computerausstattung: GameBoy
Kontaktdaten:

Beitrag von edel »

DerProgrammierer78 hat geschrieben:Danke ... Das funktioniert super .... :mrgreen:

Nur habe ich ein Problem damit ...

Der öffnet generell JEDE Seite im 2. Webgadget ...
.
Ich muss mich entschuldigen, dass ich meine Frage nicht präzise genug gestellt habe ...
[...]
Mein Beispiel sollte dir auch nur eine Denkanstoss geben,
und dir zeigen wie man eine Seite im 2. Fenster anzeigen
lassen koennte. Programmieren musst du schon selber.

@PureLust
Das geht, aber wohl nur ueber das Interface. Z.B. Link Attribute
auslesen und entsprechend reagieren. Freak hat dazu sicherlich
schon einmal hier oder im englischem Forum etwas gepostet.
Benutzeravatar
PureLust
Beiträge: 1145
Registriert: 21.07.2005 00:02
Computerausstattung: Hab aktuell im Grunde nur noch 'nen Lenovo Yoga 2 Pro im Einsatz.
Wohnort: am schönen Niederrhein

Beitrag von PureLust »

edel hat geschrieben:@PureLust
Das geht, aber wohl nur ueber das Interface. Z.B. Link Attribute auslesen und entsprechend reagieren.
Ich weiss jetzt nicht genau ob Du das gleiche meinst, aber ich habe halt versucht in dem CallBack den zur URL gehörenden Link im HTML-Quellcode zu finden und abzufragen ob dort "target=" drin vorkommt.
Aber wie gesagt, in einem solchen Fall kommt erst garkein Callback - ging also auf diese Weise nicht.
edel hat geschrieben:Freak hat dazu sicherlich schon einmal hier oder im englischem Forum etwas gepostet.
Ich habe schon des öfteren gelesen dass er wohl schon recht viele tolle Beispiele zum WebGadget veröffentlicht hat und darin (wie auch in so vielen anderen Dingen) ein echter Meister ist.
Alles von ihm dazu gefunden (geschweige denn verstanden) habe ich aber mit Sicherheit noch nicht.
Da ich mich aber momentan mit dem Einloggen in bzw. Abrufen und Auswerten von Webseiten beschäftigen muss, versuche ich gerade mich da tiefer rein zu arbeiten.
Ich hoffe mal, dass meine Versuche von Erfolg gekrönt werden. :roll:
[Dynamic-Dialogs] - komplexe dynamische GUIs einfach erstellen
[DeFlicker] - Fenster flimmerfrei resizen
[WinFX] - Window Effekte (inkl. 'durchklickbares' Window)
Benutzeravatar
Bisonte
Beiträge: 2468
Registriert: 01.04.2007 20:18

Beitrag von Bisonte »

Die Konstante : #PB_Web_NavigationCallback gibts in der 4.02 nicht...
ganz zu schweigen von der 3.30

Wie geht das dann in der "NichtBeta" von PB ?

Geschweige denn das das Webgadget ein SetGadgetAttribut() unterstützt...

Habe auch grad das problem,das immer der IE geöffnet wird, soll aber lieber
mein Webgadget für herhalten ;)

Anders ausgedrückt :

Wie fange ich die Links ab, die ein neues Fenster öffnen, bzw. wie veranlasse
ich das Webgadget dazu alle Links nur in diesem einen Webgadget zu öffnen ?
Antworten