RE: dialog widget problem



Somewhat related to below.  I have my dialog widget in its own function 
now.  Hence , all the callbacks and widget creation are in a single 
function .  Is this a bad idea?  See the code (simplified...taken out 
hopefully extraneous code)

VOID dialog_create(SHARED_WINDOW *tasks)
{
  GtkWidget *dialog_win;
  GtkWidget *dialog_label;
  GtkWidget *dialog_ok

  dialog_win = gtk_dialog_new();
  gtk_widget_set_usize(dialog_win, 250,250);
  dialog_label=gtk_label_new("WARNING some text here \n");
  dialog_ok = gtk_button_new_with_label("OK");
  gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialog_win)->vbox), dialog_label,
                               FALSE,FALSE,NO_PADDING);
  gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialog_win)->action_area), 
dialog_ok,
                               FALSE,FALSE,NO_PADDING);

  gtk_signal_connect_object(GTK_OBJECT(dialog_ok),"clicked",
 
                                        GTK_SIGNAL_FUNC(gtk_widget_hide)  
,GTK_OBJECT(dialog_win));
  gtk_signal_connect_object(GTK_OBJECT(dialog_win),"delete-event",
 
                                        GTK_SIGNAL_FUNC(dialog_delete_ev  
ent),NULL);
  gtk_signal_connect(GTK_OBJECT(dialog_win),"destroy",
 
                                        GTK_SIGNAL_FUNC(utics_destroy),N  
ULL);

  gtk_widget_show(dialog_ok);
  gtk_widget_show(dialog_label);
  gtk_widget_show(dialog_win);
  tasks->dialog_win = dialog_win;
  tasks->dialog_create = TRUE;

}

Here is the dialog_delete_event function.

gint dialog_delete_event(GtkWidget *widget,
                                    GdkEvent *event,
                                    gpointer data)
{
  g_print("dialog delete event occurred\n");
  gtk_widget_hide(widget);

  return(TRUE);
}

void destroy(GtkWidget *widget),
                  gpointer data)
{
  gtk_widget_hide(widget);

}


The gtk_signal_connect_object(GTK_OBJECT(dialog_ok),"clicked",
 
                                        GTK_SIGNAL_FUNC(gtk_widget_hide)  
,GTK_OBJECT(dialog_win));
works great without noticible problems but the other ones do not work. 
 When I try to close the window via the window manager, the menu for the 
window dissappears but the dialog box remains.  Any noticible reasons why? 
 Maybe the above code will help.  I want the dialog box to dissaprear and 
not be destroyed when the user closes the window via the window menu. 
 (command ALT - F4).  Any ideas why it is not working.  Thanks ahead of 
time for your help.

Matt


-----Original Message-----
From:	Dugas, Alan [SMTP:alan dugas analog com]
Sent:	Monday, October 30, 2000 6:51 PM
To:	gtk-list gnome org; Matt Eisemann
Subject:	RE: dialog widget problem

The code looks OK to me, however, you may be running into a scoping issue
with dialog_win depending on where you use gtk_signal_connect(). 
 Otherwise,
I think I'd need to see more of your code to figure out what's going on.




				-- Stupid Genius
> ----------
> From: 	Matt Eisemann[SMTP:meisemann dsrnet com]
> Sent: 	Monday, October 30, 2000 6:23 PM
> To: 	'Dugas, Alan'; gtk-list gnome org
> Subject: 	RE: dialog widget problem
>
> You were right.  For some reason it needed gtk_signal_connect_object.  If
> I
> want to also have a window delete handler in case they close the window
> via
> window mgr does the following look right given the variable names I have
> used already.
>
> gtk_signal_connect(GTK_OBJECT(dialog_win),"delete_event",
>
>
> GTK_SIGNAL_FUNC(utics_ok_delete_handler),NULL);
>
> gboolean utics_ok_delete_handler(GtkWidget *widget, GdkEvent *event,
>                                                   gpointer user_data)
> {
>   gtk_widget_hide(widget);
>   return(TRUE);
> }
>
> Actually, i just tried it and I got a core dump.  Anything look wrong
> above.  Thanks ahead of time for your help.
>
> Matt
>
>
>
> -----Original Message-----
> From:	Dugas, Alan [SMTP:alan dugas analog com]
> Sent:	Monday, October 30, 2000 5:58 PM
> To:	gtk-list gnome org; Matt Eisemann
> Subject:	RE: dialog widget problem
>
> Just a thought...  It appears the problem has to do with
> gtk_signal_connect()
> passing it's first argument to gtk_widget_hide() whereas I think your
> trying to
> pass the last argument instead.  Try using gtk_signal_connect_object(), 
it
>
> will
> change the order of the argments passed to the callback function so that
> the
> last argument to gtk_signal_connect_object() is passed as the first
> argument to
> gtk_widget_hide() instead.
>
>
>
> 				-- Stupid Genius
>
> > ----------
> > From: 	Matt Eisemann[SMTP:meisemann dsrnet com]
> > Sent: 	Monday, October 30, 2000 5:09 PM
> > To: 	gtk-list gnome org
> > Subject: 	dialog widget problem
> >
> > Currently I am creating an application, but there is something wrong
> with
> > the callback that hides the widget or something is wrong in my logic.
>  Here
> > is a bit of code below which so should give some idea of what I am
> doing.
> >  The main window calls a dialog box when a certain flag is set.  I want 
> the
> > user to be able to push the "OK" button and hide the dialog window and
> > reset the flag back to FALSE.  I hopefully left out extraneous
> information
> > and code.
> >
> > void some_function(... )
> > {
> >
> >   .....
> >
> >
> >
> >   if(tasks->dead_tasks == TRUE)
> >   {
> >     gtk_widget_show_all(tasks->dialog_win);
> >     tasks->dead_tasks = FALSE;
> >   }
> > }
> >
> >
> >
> > int main(INT argc, CHAR *argv[])
> > {
> >   ...
> >   dialog_win = gtk_dialog_new();
> >   dialog_label = gtk_label_new("WARNING.  There is something wrong. 
 ");
> >   dialog_ok = gtk_button_new_with_label("OK");
> >   gtk_window_set_title(GTK_WINDOW(dialog_win),"dead tasks");
> >
> > 
 gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialog_win)->vbox),dialog_label,F
>
> > ALSE,FALSE,NO_PADDING);
> > 
  gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialog_win)->action_area),dialog
>
> > _ok, FALSE,FALSE, NO_PADDING);
> >
> >   gtk_signal_connect(GTK_OBJECT(dialog_ok),"clicked",
> >
> > 
                              GTK_SIGNAL_FUNC(gtk_widget_hide),GTK_OBJEC
>
> > T(dialog_win));
> >  }
> >   The code works somewthat above but the problem is that the OK button
> > disappears and not the whole window.
> >
> >
> > _______________________________________________
> > gtk-list mailing list
> > gtk-list gnome org
> > http://mail.gnome.org/mailman/listinfo/gtk-list
> >
>
>
> _______________________________________________
> gtk-list mailing list
> gtk-list gnome org
> http://mail.gnome.org/mailman/listinfo/gtk-list
> 





[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]