A simple choice dialog won't work...

2015-05-07 Thread Richard Shann
I wanted to pop up two buttons for the user to choose between two
options (primary and secondary), returning true or false depending
which was chosen. I tried this

gboolean
choose_option (gchar *title, gchar * primary, gchar * secondary)
{
  GtkWidget *dialog;
  dialog = gtk_dialog_new_with_buttons (title, 
GTK_WINDOW (Denemo.window), 
(GtkDialogFlags) (GTK_DIALOG_MODAL | 
GTK_DIALOG_DESTROY_WITH_PARENT),
primary, GTK_RESPONSE_ACCEPT,
secondary,GTK_RESPONSE_REJECT,
NULL);
  g_signal_connect_swapped (dialog, response, G_CALLBACK 
(gtk_widget_destroy), dialog);
  
  return (gtk_dialog_run (GTK_DIALOG (dialog)) == GTK_RESPONSE_ACCEPT);
}

but it seems to return 0 for both button presses. What am I doing wrong?

I'm using GTK3 on a Debian stable installation.

Richard


___
gtk-app-devel-list mailing list
gtk-app-devel-list@gnome.org
https://mail.gnome.org/mailman/listinfo/gtk-app-devel-list


Re: A simple choice dialog won't work...

2015-05-07 Thread Stefan Salewski
On Thu, 2015-05-07 at 13:02 +0100, Richard Shann wrote:

From https://developer.gnome.org/gtk3/stable/GtkDialog.html

GTK_RESPONSE_REJECT Generic response id, not used by GTK+ dialogs
GTK_RESPONSE_ACCEPT Generic response id, not used by GTK+ dialogs

Maybe try

GTK_RESPONSE_OK and GTK_RESPONSE_CANCEL

If that does not help, I may test your code next weekend --guess I have
to add a few lines to get a working example.

 I wanted to pop up two buttons for the user to choose between two
 options (primary and secondary), returning true or false depending
 which was chosen. I tried this
 
 gboolean
 choose_option (gchar *title, gchar * primary, gchar * secondary)
 {
   GtkWidget *dialog;
   dialog = gtk_dialog_new_with_buttons (title, 
   GTK_WINDOW (Denemo.window), 
   (GtkDialogFlags) (GTK_DIALOG_MODAL | 
 GTK_DIALOG_DESTROY_WITH_PARENT),
 primary, GTK_RESPONSE_ACCEPT,
   secondary,GTK_RESPONSE_REJECT,
   NULL);
   g_signal_connect_swapped (dialog, response, G_CALLBACK 
 (gtk_widget_destroy), dialog);
   
   return (gtk_dialog_run (GTK_DIALOG (dialog)) == GTK_RESPONSE_ACCEPT);
 }
 
 but it seems to return 0 for both button presses. What am I doing wrong?
 
 I'm using GTK3 on a Debian stable installation.
 
 Richard
 
 
 ___
 gtk-app-devel-list mailing list
 gtk-app-devel-list@gnome.org
 https://mail.gnome.org/mailman/listinfo/gtk-app-devel-list


___
gtk-app-devel-list mailing list
gtk-app-devel-list@gnome.org
https://mail.gnome.org/mailman/listinfo/gtk-app-devel-list


Re: A simple choice dialog won't work...

2015-05-07 Thread Stefan Salewski
On Thu, 2015-05-07 at 16:02 +0100, Richard Shann wrote:
 After experimenting with a different bit of code, I think I've found
 the
 cause of the problem: doing the widget destroy by responding to the
 response signal seems to be ruining the return value.

That is interesting. Indeed I had a feeling in that direction -- but not
an exact idea what may went wrong. Unfortunately testing that takes a
few minutes of time, and I am not really experienced with plain C code,
I generally use Ruby or Nim.

___
gtk-app-devel-list mailing list
gtk-app-devel-list@gnome.org
https://mail.gnome.org/mailman/listinfo/gtk-app-devel-list


Re: A simple choice dialog won't work...

2015-05-07 Thread Richard Shann
On Thu, 2015-05-07 at 16:21 +0200, Stefan Salewski wrote:
 On Thu, 2015-05-07 at 13:02 +0100, Richard Shann wrote:
 
 From https://developer.gnome.org/gtk3/stable/GtkDialog.html
 
 GTK_RESPONSE_REJECT Generic response id, not used by GTK+ dialogs
 GTK_RESPONSE_ACCEPT Generic response id, not used by GTK+ dialogs
 
 Maybe try
 
 GTK_RESPONSE_OK and GTK_RESPONSE_CANCEL

Hmm, I wonder what that means - Generic response id ... I understood
that the idea of the pairs in the trailing arguments of
gtk_dialog_new_with_buttons () was that the button with the given text
would return the paired response id. I tried the ones you suggested, and
also two positive values with the same result.

After experimenting with a different bit of code, I think I've found the
cause of the problem: doing the widget destroy by responding to the
response signal seems to be ruining the return value.
So, I seem to be back on track - the code that works is below.
Thank you for your prompt response!

Richard

gboolean
choose_option (gchar *title, gchar * primary, gchar * secondary)
{
  GtkWidget *dialog;
  gboolean r;
  dialog = gtk_dialog_new_with_buttons (title, GTK_WINDOW (Denemo.window), 
(GtkDialogFlags) (GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT), 
  primary, 
GTK_RESPONSE_ACCEPT, secondary, GTK_RESPONSE_REJECT, NULL);
  //g_signal_connect_swapped (dialog, response, G_CALLBACK 
(gtk_widget_destroy), dialog);
  r = (gtk_dialog_run (GTK_DIALOG (dialog)) == GTK_RESPONSE_ACCEPT);
  gtk_widget_destroy (dialog);
  return r; 
}

___
gtk-app-devel-list mailing list
gtk-app-devel-list@gnome.org
https://mail.gnome.org/mailman/listinfo/gtk-app-devel-list