Anzeige:
Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 15 von 18

Thema: GNOME-VFS: Objektlebenszyklus

  1. #1
    Administrator Avatar von anda_skoa
    Registriert seit
    17.11.2001
    Ort
    Graz, Österreich
    Beiträge
    5.477

    GNOME-VFS: Objektlebenszyklus

    Vielleicht kann mir jemand von den Glib/GTK/GNOME Entwicklern weiterhelfen:

    Hab folgendes Beispiel unter Verwendung der libgnomevfs:
    Code:
    int main (int argc, char **argv)
    {
      const char *output_uri_string = argv[1];
      GnomeVFSResult result;
    
      /* remember to initialize GnomeVFS! */
      if (!gnome_vfs_init ()) {
        printf ("Could not initialize GnomeVFS\n");
        return 1;
      }
    
      GnomeVFSURI* output_uri = gnome_vfs_uri_new(output_uri_string);
      const char* mime_type = gnome_vfs_get_mime_type_from_uri(output_uri);
      gnome_vfs_uri_unref(output_uri);
      
      printf("mimeType = '%s'\n", mime_type);  
    
      GnomeVFSMimeApplication* default_app =
        gnome_vfs_mime_get_default_application(mime_type);
    
      printf("app = '%s'\n", default_app->name);
    
      gnome_vfs_mime_application_free (default_app); 
    
      return 0;  
    }
    Ich bin mir da als C++ Programmierer nicht ganz sicher, ob ich alle simulierten Objekte richtig wieder frei gebe, also speziell das uri_unref

    Ist das so ausreichend um kein Memory Leak zu bekommen, oder gibt es eine passende Pseudodesktruktorfunktion wie gnome_vfs_mime_application_free für das GnomeVFSMimeApplication Objekt?

    Ciao,
    _
    Qt/KDE Entwickler
    Debian Benutzer

  2. #2
    Administrator Avatar von anda_skoa
    Registriert seit
    17.11.2001
    Ort
    Graz, Österreich
    Beiträge
    5.477
    Ich werde mal davon ausgehen, daß so alles seine Richtigkeit hat.

    Dieses simulierte OOP scheint selbst den GTK+ Leuten hier im Forum nicht ganz geheuert zu sein

    Ciao,
    _
    Qt/KDE Entwickler
    Debian Benutzer

  3. #3
    Registrierter Benutzer Avatar von [0x[90]|
    Registriert seit
    10.05.2005
    Ort
    Filderstadt
    Beiträge
    79
    Jopp, gnome_vfs_mime_application_free() gibt es, und es sollte auch verwendet werden.

  4. #4
    Administrator Avatar von anda_skoa
    Registriert seit
    17.11.2001
    Ort
    Graz, Österreich
    Beiträge
    5.477
    Alles ein Frage des Köders

    Das benutzt ich eh.
    NIcht ganz sicher war ich mir bezüglich des
    Code:
    gnome_vfs_uri_unref(output_uri);
    aber ich konnte kein gnome_vfs_uri_free finden.

    Ciao,
    _
    Qt/KDE Entwickler
    Debian Benutzer

  5. #5
    Registrierter Benutzer Avatar von [0x[90]|
    Registriert seit
    10.05.2005
    Ort
    Filderstadt
    Beiträge
    79
    Ot; Warst du nicht einmal KDE entwickler? Wie kommt man da zur Verwendung von GVFS?

  6. #6
    Administrator Avatar von anda_skoa
    Registriert seit
    17.11.2001
    Ort
    Graz, Österreich
    Beiträge
    5.477
    Ich bin nach wie vor KDE Entwickler.

    Aber ich brauche für mein QDS Projekt auch ein GNOME Plugin weil das sonst ziemlich einseitig wäre.

    Der GNOME-VFS basierte Launcher war gar nicht so schwierig und funktioniert auch fast immer.
    Falls du eine Idee hast, warum URL wie http://www.gnome.org/ nicht gestartet werden können, bzw wie man die anders behandeln muß, wäre ich sehr interessiert.

    Wenn ich dann mal rausgefunden habe wie man eine Liste der von GNOME-VFS unterstützten Protokolle bekommt, versuch ich vielleicht auch noch die Network Implementierung.

    Hilfe jederzeit willkommen

    Ciao,
    _
    Qt/KDE Entwickler
    Debian Benutzer

  7. #7
    Registrierter Benutzer Avatar von [0x[90]|
    Registriert seit
    10.05.2005
    Ort
    Filderstadt
    Beiträge
    79
    Schau dir dazu einmal vllt. die Sourcen des Programms "gnome-open" an. Dieses liest aus den Default-Einstellungen von Gnome den vom Benutzer gewaehlten Browser (oder was auch immer) und oeffnet die URL dann damit. Schau dir auch beispielsweise einmal gEdit oder eine andere Gnome Anwendung die GnomeVFS-HTTP unterstuetzt an. gEdit kann Text-Dateien ueber HTTP oeffnen.

  8. #8
    Administrator Avatar von anda_skoa
    Registriert seit
    17.11.2001
    Ort
    Graz, Österreich
    Beiträge
    5.477
    Hast du für gnome-open vielleicht einen Link ins GNOME CVS?

    Es geht auch nur um URLs, die in Verzeichnissen enden, solche die in Dateien enden funktionieren einwandfrei.

    Ciao,
    _
    Qt/KDE Entwickler
    Debian Benutzer

  9. #9
    Registrierter Benutzer Avatar von [0x[90]|
    Registriert seit
    10.05.2005
    Ort
    Filderstadt
    Beiträge
    79
    Sicher, hier, bitte.

    Bye

  10. #10
    Administrator Avatar von anda_skoa
    Registriert seit
    17.11.2001
    Ort
    Graz, Österreich
    Beiträge
    5.477
    Danke.

    Sieht nicht viel anders aus als das was ich habe, nur daß ich gnome_vfs_url_show statt gnome_url_show benutze:
    Code:
    #include <libgnomevfs/gnome-vfs.h>
    
    #include <stdio.h>
    
    int print_error (GnomeVFSResult result, const char *uri_string);
    
    int
    main (int argc, char **argv)
    {
      if (argc < 2)
      {
        printf("given an URI as commandline parameter 1\n");
        return 1;
      }
    
      const char *uri_string = gnome_vfs_make_uri_from_input(argv[1]);
      GnomeVFSResult result;
    
      if (!gnome_vfs_init ()) {
        printf ("Could not initialize GnomeVFS\n");
        return 1;
      }
    
      printf("trying gnome_vfs_url_show(%s)...\n",
             gnome_vfs_format_uri_for_display(uri_string));
    
      result = gnome_vfs_url_show(uri_string);
    
      if (result != GNOME_VFS_OK) return print_error(result, uri_string);
      printf("SUCCESS!!\n");
    
      return 0;
    }
    
    int
    print_error (GnomeVFSResult result, const char *uri_string)
    {
      const char *error_string = gnome_vfs_result_to_string (result);
      printf ("Error '%s' occured opening location '%s'\n", error_string, uri_string
    );
      return 1;
    }
    Vielleicht liegt es auch nur an meinem Setup, könntest du es mal ausprobieren?
    Ich benutzen zum kompilieren
    Code:
    gcc -Wall $(pkg-config --cflags --libs gnome-vfs-2.0) -o url_show url_show.c
    Ciao,
    _
    Qt/KDE Entwickler
    Debian Benutzer

  11. #11
    Registrierter Benutzer Avatar von [0x[90]|
    Registriert seit
    10.05.2005
    Ort
    Filderstadt
    Beiträge
    79
    Code:
    gcc -Wall ./test.c `pkg-config --cflags --libs gnome-vfs-2.0` -o test
    Funktioniert bei mir einwandfrei.

    Code:
    [devilx@xeno][~/Desktop] ./test http://www.example.com
    trying gnome_vfs_url_show(http://www.example.com)...
    SUCCESS!!
    [devilx@xeno][~/Desktop]
    Und es oeffnet sich ein neues Browsertab

  12. #12
    Administrator Avatar von anda_skoa
    Registriert seit
    17.11.2001
    Ort
    Graz, Österreich
    Beiträge
    5.477
    Dann liegt es vielleicht bei mir nur am Setup.

    Danke fürs Ausprobieren.

    Ich verwende in meinem GNOME-VFS Launcher eine leicht andere Methode.
    Ich werd versuchen das auch in ein kleines Beispiel zu extrahieren und vielleicht könntest du das dann auch nochmal testen.

    Bzw, falls ich dich dazu bewegen könnte das Qt-devel Paket zu installieren, gleich QDS?

    Ciao,
    _
    Qt/KDE Entwickler
    Debian Benutzer

  13. #13
    Registrierter Benutzer Avatar von [0x[90]|
    Registriert seit
    10.05.2005
    Ort
    Filderstadt
    Beiträge
    79
    Testen kann ich es dir gerne, aber Qt Pakete kommen mir nicht auf mein Debian. Da meckert doch mein VRMS

  14. #14
    Administrator Avatar von anda_skoa
    Registriert seit
    17.11.2001
    Ort
    Graz, Österreich
    Beiträge
    5.477
    Zitat Zitat von [0x[90]|
    Testen kann ich es dir gerne, aber Qt Pakete kommen mir nicht auf mein Debian. Da meckert doch mein VRMS
    Was ist ein VRMS?
    Setzt das irgendwie apt-get remove --purge außer Kraft?

    Das Beispiel funktionier bei mir hervorragend bei lokalen Files, oder zB http://www.gnome.org/about/why.html, aber nicht bei http://www.gnome.org/

    Code:
    #include <libgnomevfs/gnome-vfs.h>
    #include <libgnomevfs/gnome-vfs-mime.h>
    #include <libgnomevfs/gnome-vfs-mime-handlers.h>
    
    #include <stdio.h>
    
    int print_error (GnomeVFSResult result, const char *uri_string);
    
    int
    main (int argc, char **argv)
    {
      if (argc < 2)
      {
        printf("given an URI as commandline parameter 1\n");
        return 1;
      }
    
      const char *uri_string = gnome_vfs_make_uri_from_input(argv[1]);
      GnomeVFSResult result;
    
      if (!gnome_vfs_init ()) {
        printf ("Could not initialize GnomeVFS\n");
        return 1;
      }
    
      GnomeVFSURI* uri = gnome_vfs_uri_new(uri_string);
      const char* mime_type = gnome_vfs_get_mime_type_from_uri(uri);
      gnome_vfs_uri_unref(uri);
    
      printf("mime_type for (%s) = '%s'\n",
             gnome_vfs_format_uri_for_display(uri_string),
             mime_type);
    
      GnomeVFSMimeApplication* default_app =
        gnome_vfs_mime_get_default_application_for_uri(uri_string, mime_type);
    
      printf("default app = '%s'\n", (default_app ? default_app->name : "NULL"));
    
      GList* uri_list = 0;
      uri_list = g_list_append(uri_list, uri);
    
      result = gnome_vfs_mime_application_launch(default_app, uri_list);
    
      g_list_free(uri_list);
      gnome_vfs_mime_application_free(default_app);
    
      if (result != GNOME_VFS_OK) return print_error(result, uri_string);
      printf("SUCCESS!!\n");
    
      return 0;
    }
    Ciao,
    _
    Qt/KDE Entwickler
    Debian Benutzer

  15. #15
    Registrierter Benutzer Avatar von [0x[90]|
    Registriert seit
    10.05.2005
    Ort
    Filderstadt
    Beiträge
    79
    Woher hast du

    Code:
    #include <libgnomevfs/gnome-vfs-mime.h>
    ? Diese datei existiert bei mir nicht. Ausserdem ist in keiner der anderen Dateien die funktion

    Code:
    gnome_vfs_get_mime_type_from_uri
    vorhanden.

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •