Anzeige:
Ergebnis 1 bis 6 von 6

Thema: antwort eines nicht modales Dialog GTK2+

  1. #1
    Registrierter Benutzer
    Registriert seit
    24.05.2012
    Beiträge
    21

    antwort eines nicht modales Dialog GTK2+

    Hallo!
    ich habe ein non modales Dialog mit 2 Buttons: OK und abbrechen.
    Der Benutzer muss das Dialog nicht darauf klicken, aber wenn er es schließt, möchte ich wissen mit welchem Button er das geschlossen hat.
    Ich mache es so:
    Code:
    dialog = gtk_message_dialog_new(parent, GTK_DIALOG_DESTROY_WITH_PARENT, messageType, GTK_BUTTONS_OK_CANCEL, "%s", meldung);
    g_signal_connect_swapped(nm_local.info_dialog, "response", G_CALLBACK (cb_on_close_non_modal), dialog);
    Code:
    static gboolean  cb_on_close_non_modal(GtkWidget *widget, gpointer data)
    {
    
    
    // hier unterscheiden, was für ein Button gedrückt wurde
    switch (response)
    {
    case GTK_BUTTON_OK: do this
    break;
    
    case GTK_BUTTON_CANCEL: do that
    break;
    
    }
    
    return FALSE;
    }
    In der Funktion cb_on_close_non_modal möchte ich gern unterscheiden, ob der Benutzer "OK" oder "Cancel" gedrückt hat.

    Ich kann die Funktion response = gtk_dialog_run (GTK_DIALOG (dialog));
    NICHT benutzen, weil ich ein non modales Dialog möchte.

    Kann mir jemand sagen, woher ich die Antwort des Benutzers bekommen kann?

    Danke im Voraus für Eure Hilfe

  2. #2
    Registrierter Benutzer Avatar von sommerfee
    Registriert seit
    02.07.2006
    Beiträge
    1.604
    Zitat Zitat von MBoerner Beitrag anzeigen
    static gboolean cb_on_close_non_modal(GtkWidget *widget, gpointer data)
    Die Funktionsdeklaration ist nicht korrekt. "response" erwartet eine Funktion des Types
    Code:
    void user_function( GtkDialog *dialog, gint arg1, gpointer user_data);
    In arg1 befindet sich der gesuchte Rückgabewert.

  3. #3
    Registrierter Benutzer
    Registriert seit
    24.05.2012
    Beiträge
    21

    Danke schön!

    Danke schön!
    ich habe inzwischen die Funktionsdeklaration wie folgt geändert:

    Code:
    static gboolean  cb_on_close_warning_non_modal(GtkWidget *widget, GtkResponseType response , gpointer data)
    Das funktioniert gut!


    Woher weiß ich eigentlich, welche Funktionsdeklaration ich nehmen kann. Es ändert sich ständig, je nach signal, aber ich habe bisher keine Auflistung gefunden, welches Signal welche Argumente mitliefern.

    Vielen Dank für die Hilfe

  4. #4
    Registrierter Benutzer Avatar von sommerfee
    Registriert seit
    02.07.2006
    Beiträge
    1.604
    Zitat Zitat von MBoerner Beitrag anzeigen
    aber ich habe bisher keine Auflistung gefunden, welches Signal welche Argumente mitliefern.
    Die zu den Signalen passende Funktionsdeklaration findet sich in der Dokumentation. Zum Beispiel:

    https://developer.gnome.org/gtk2/stable/GtkDialog.html

    Schaut man dort unter "Signal Details", findet man dort (ganz unten) den zu "response" passenden Funktionsprototypen.

  5. #5
    Registrierter Benutzer
    Registriert seit
    24.05.2012
    Beiträge
    21

    Ja aber

    Ja das stimmt, aber daraus schaffe ich es nie abzuleiten, in welcher Reihenfolge die Parameter anzugeben sind.
    Zum Beispiel in meinem Fall:
    Code:
    static gboolean  cb_on_close_warning_non_modal(GtkWidget *widget, GtkResponseType response , gpointer data)
    da gibt es die Parameter widget, response und data. Widget ist klar und data auch.
    Aber in der Beschreibung steht, dass es beide folgende signals gibt
    "close" : Action
    "response" : Run Last
    aber nicht, welche Parameter man da übergeben bekommt, wenn man eine callback Funktion schreibt, jedenfalls finde ich das nicht. Und deswegen muss ich immer nach Beispielen suchen.
    Kannst du mir sagen, wie du das machst?

    Danke schön!

  6. #6
    Registrierter Benutzer
    Registriert seit
    24.05.2012
    Beiträge
    21

    Ach doch!! ganz unten

    wie du sagstest ganz unten, danke schön!!
    Ich hatte das völlig übersehen.

    Vielen Dank und schönes Wochenende!

    MBoerner

Lesezeichen

Berechtigungen

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