Code-Schnippsel für die POIObserver-Integration

  • Ich stelle hier mal ein paar Code-Schnippsel zur Verfügung, mit denen Skinner relativ einfach eine elegante POIObserver-Integration in ihrer Skin bewerkstelligen können.


    • Grafische Anzeigen des POIObserver aktivieren/deaktivieren
      Dies ist empfehlenswert, um zu vermeiden, daß sich eine optische Warnung des Observers vor ein Menü o.ä. schiebt. Es erflgt nach wie vor eine akustische Warnung!


      Voraussetzung hierfür ist natürlich, daß Eure Skin ein permanent mitlaufendes Script beinhaltet, das weiß, ob die Karte, der Kompaß oder eine andere Ansicht angezeigt wird.


      Grafische Popups deaktivieren und evtl. bestehende ausblenden:


      Grafische Popups wieder aktivieren:


      Hinweis:
      Die If-Clause
      If (RegValueExists ("HKCU", "Software\<Deine Skin>", "POIO"))
      EndIf
      dient dazu, diese Umschaltung nur bei eingeschaltetem POIObserver vorzunehmen und zwar auch nur genau dann, wenn Ihr in Eurer Skin auch eine solche Einstellung vorseht. Statt dem Registry-Key kann natürlich auch eine INI-Datei ausgewertet werden ...
      Wenn Ihr keine Einstellung zum Ein- oder Ausschalten des POIObservers vorsehen wollt, dann sollte diese äußere If-Clause entfallen. Die innere If-Clause

      Code
      ObsActive = SendMessage( "POI Observer", 1024, 201, 0 )
      
      
      				If ( ObsActive > 1 )
      				EndIf


      sorgt nämlich bereits dafür, daß die Befehle nur dann an den POIObserver geschickt werden, wenn dieser aktiviert ist.


      Wer ganz sicher sein will, daß der POIObserver überhaupt läuft bevor er Befehle dorthin schickt, kann auch noch ganz außen oder innerhalb der ersten If-Clause so darauf prüfen:

      Code
      If WndExists ("POI Observer")
      				EndIf


    • POIObserver komplett deaktivieren/aktivieren
      Insbesondere wenn Ihr eine komplette Unterstützung einbaut, also auch einen Schalter zum Ein-/Ausschalten des POIObservers, dann muß die Skin natürlich auch noch den Observer aus- und vor allem wieder einschalten, wenn der entsprechende Knopf betätigt wird :)


      Code
      # POI-Observer
      				If not (RegValueExists ("HKCU", "Software\<Deine Skin>", "POIO"))
      					If WndExists ("POI Observer")
      						SendMessage( "POI Observer", 1024, 2, 0 )
      					EndIf
      				Else
      					If WndExists ("POI Observer")
      						SendMessage( "POI Observer", 1024, 1, 0 )
      					EndIf
      				EndIf


      Dieser Beispielcode aktiviert/deaktiviert den POIObserver lediglich, beendet oder startet ihn aber nicht. Wer auch dazu Code-Beispiele benötigt, kann mich gerne fragen.

    • Panik-Funktion
      1. POIObserver beenden:

      Code
      Close ("POI Observer")
      While ( WndExists ("POI Observer"))
      	Sleep ( 50 )
      EndWhile


      2. Die verfängliche Datei mit den Blitzerdaten heißt Blitzer.obs oder observer.obs und befindet sich direkt im POIObserver-Verzeichnis oder im Unterverzeichnis Obss davon. Praktisch alle Lösungen, den POIObserver zu installieren (GPW-POIObs-Installer und mein POIObs-CAB-Builder) installieren den POIObserver nach "MFD\navigation\POIObserver" oder "SC\POIObserver". Diese sollte gelöscht werden.
      Der Einfachheit halber kann auch gleich das ganze Verzeichnis gelöscht werden, da es unter GoPal kaum eine sinnvolle Anwendung für den Observer gibt, außer vor Blitzern zu warnen.


      3. Da der POIObserver keine POIs in der Karte einblenden kann, wird er oft zusammen mit einem entsprechenden POI-Overlay für GoPal verwendet. Dieses heißt praktisch immer nfBlitzer.psf und befindet sich in einem der MapRegions-Verzeichnisse.
      Aber vorsicht, diese Datei kann nicht gelöscht werden, während GoPal läuft.
      Also erst GoPal abschießen, dann die nfBlitzer.psf löschen und danach das Navi resetten.

  • Ach ja:
    Meinen Code kann generell jeder verwursten "as he deems fit".

  • Monika

    Hat das Label [GoPal 5.x] hinzugefügt.