vaccinewars

be a doctor and try to vaccinate the world
git clone git://src.adamsgaard.dk/vaccinewars # fast
git clone https://src.adamsgaard.dk/vaccinewars.git # slow
Log | Files | Refs | README | LICENSE Back to index

commit 5923e75b8649a3a8f822de277a58e03160fc0510
parent 8489be5297890ee645af9829744b84dc55b9223d
Author: Ben Webb <ben@salilab.org>
Date:   Sat,  6 Apr 2002 19:53:12 +0000

GTK+ options dialog now honours the MinVal Globals attribute for lists,
so it cannot be used to create blank Locations or Drugs lists.


Diffstat:
Msrc/gui_client/optdialog.c | 21++++++++++++++++++---
1 file changed, 18 insertions(+), 3 deletions(-)

diff --git a/src/gui_client/optdialog.c b/src/gui_client/optdialog.c @@ -315,11 +315,14 @@ static void swap_rows(GtkCList *clist, gint selrow, gint swaprow, static void list_delete(GtkWidget *widget, gchar *structname) { GtkCList *clist; + int minlistlength; clist = GTK_CLIST(gtk_object_get_data(GTK_OBJECT(widget), "clist")); g_assert(clist); + minlistlength = GPOINTER_TO_INT(gtk_object_get_data(GTK_OBJECT(clist), + "minlistlength")); - if (clist->rows > 1 && clist->selection) { + if (clist->rows > minlistlength && clist->selection) { GSList *listpt; int row = GPOINTER_TO_INT(clist->selection->data); @@ -415,12 +418,15 @@ static void list_row_select(GtkCList *clist, gint row, gint column, { GSList *listpt; GtkWidget *delbut, *upbut, *downbut; + int minlistlength; + minlistlength = GPOINTER_TO_INT(gtk_object_get_data(GTK_OBJECT(clist), + "minlistlength")); delbut = GTK_WIDGET(gtk_object_get_data(GTK_OBJECT(clist), "delete")); upbut = GTK_WIDGET(gtk_object_get_data(GTK_OBJECT(clist), "up")); downbut = GTK_WIDGET(gtk_object_get_data(GTK_OBJECT(clist), "down")); g_assert(delbut && upbut && downbut); - gtk_widget_set_sensitive(delbut, TRUE); + gtk_widget_set_sensitive(delbut, clist->rows > minlistlength); gtk_widget_set_sensitive(upbut, row > 0); gtk_widget_set_sensitive(downbut, row < clist->rows - 1); @@ -577,7 +583,7 @@ static GtkWidget *CreateList(gchar *structname, struct ConfigMembers *members) { GtkWidget *hbox, *vbox, *hbbox, *clist, *scrollwin, *button, *table; gchar *titles[3]; - int ind; + int ind, minlistlength = 0; gint i, row, nummembers; struct GLOBALS *gvar; struct ConfigMembers namemember = { "Name", "Name" }; @@ -587,6 +593,13 @@ static GtkWidget *CreateList(gchar *structname, struct ConfigMembers *members) gvar = &Globals[ind]; g_assert(gvar->StringVal && gvar->MaxIndex); + for (i = 0; i < NUMGLOB; i++) { + if (Globals[i].StructListPt == gvar->StructListPt + && Globals[i].ResizeFunc) { + minlistlength = Globals[i].MinVal; + } + } + nummembers = 0; while (members && members[nummembers].label) { nummembers++; @@ -627,6 +640,8 @@ static GtkWidget *CreateList(gchar *structname, struct ConfigMembers *members) gtk_widget_set_sensitive(button, FALSE); gtk_object_set_data(GTK_OBJECT(button), "clist", clist); gtk_object_set_data(GTK_OBJECT(clist), "delete", button); + gtk_object_set_data(GTK_OBJECT(clist), "minlistlength", + GINT_TO_POINTER(minlistlength)); gtk_signal_connect(GTK_OBJECT(button), "clicked", GTK_SIGNAL_FUNC(list_delete), structname); gtk_box_pack_start(GTK_BOX(hbbox), button, TRUE, TRUE, 0);