Lines 52-58
Link Here
|
52 |
static int last_row_right_list = 0; |
52 |
static int last_row_right_list = 0; |
53 |
static int last_row_country_list = 0; |
53 |
static int last_row_country_list = 0; |
54 |
#endif |
54 |
#endif |
55 |
|
55 |
static void svars_select_button_pressed(); |
|
|
56 |
static void svars_clear_list(GtkWidget * widget, gpointer data); |
56 |
static void server_filter_vars_free(struct server_filter_vars* v); |
57 |
static void server_filter_vars_free(struct server_filter_vars* v); |
57 |
|
58 |
|
58 |
static int server_pass_filter (struct server *s); |
59 |
static int server_pass_filter (struct server *s); |
Lines 157-162
Link Here
|
157 |
static GtkWidget *version_contains_entry; |
158 |
static GtkWidget *version_contains_entry; |
158 |
static GtkWidget *map_contains_entry; |
159 |
static GtkWidget *map_contains_entry; |
159 |
static GtkWidget *server_name_contains_entry; |
160 |
static GtkWidget *server_name_contains_entry; |
|
|
161 |
static GtkWidget *at_least_that_num_spinner; |
160 |
#ifdef USE_GEOIP |
162 |
#ifdef USE_GEOIP |
161 |
static GtkWidget *country_left_list; |
163 |
static GtkWidget *country_left_list; |
162 |
static GtkWidget *country_right_list; |
164 |
static GtkWidget *country_right_list; |
Lines 166-171
Link Here
|
166 |
static GtkWidget *country_clear_button; |
168 |
static GtkWidget *country_clear_button; |
167 |
static GtkWidget *country_show_all_check_button; |
169 |
static GtkWidget *country_show_all_check_button; |
168 |
#endif |
170 |
#endif |
|
|
171 |
static GtkWidget *scrolledwindow_fsvars; |
172 |
static GtkWidget *svars_filter_list; |
173 |
static GtkWidget *svars_selection_button; |
174 |
static GtkWidget *svars_clear_button; |
175 |
|
176 |
|
169 |
|
177 |
|
170 |
static struct server_filter_vars* server_filter_vars_new() |
178 |
static struct server_filter_vars* server_filter_vars_new() |
171 |
{ |
179 |
{ |
Lines 183-193
Link Here
|
183 |
f->version_contains = NULL; |
191 |
f->version_contains = NULL; |
184 |
f->game_type = NULL; |
192 |
f->game_type = NULL; |
185 |
f->map_contains = NULL; |
193 |
f->map_contains = NULL; |
186 |
f->server_name_contains=NULL; |
194 |
f->server_name_contains = NULL; |
|
|
195 |
f->at_least_that_num = 0; |
187 |
#ifdef USE_GEOIP |
196 |
#ifdef USE_GEOIP |
188 |
f->countries = g_array_new (FALSE, FALSE, sizeof (int)); |
197 |
f->countries = g_array_new (FALSE, FALSE, sizeof (int)); |
189 |
#endif |
198 |
#endif |
190 |
|
199 |
f->svars = NULL; |
191 |
return f; |
200 |
return f; |
192 |
} |
201 |
} |
193 |
|
202 |
|
Lines 205-210
Link Here
|
205 |
g_array_free(v->countries,TRUE); |
214 |
g_array_free(v->countries,TRUE); |
206 |
v->countries=NULL; |
215 |
v->countries=NULL; |
207 |
#endif |
216 |
#endif |
|
|
217 |
g_strfreev(v->svars); |
218 |
v->svars = NULL; |
208 |
} |
219 |
} |
209 |
|
220 |
|
210 |
// deep copy of server_filter_vars |
221 |
// deep copy of server_filter_vars |
Lines 230-235
Link Here
|
230 |
f->game_type = g_strdup(v->game_type); |
241 |
f->game_type = g_strdup(v->game_type); |
231 |
f->map_contains = g_strdup(v->map_contains); |
242 |
f->map_contains = g_strdup(v->map_contains); |
232 |
f->server_name_contains = g_strdup(v->server_name_contains); |
243 |
f->server_name_contains = g_strdup(v->server_name_contains); |
|
|
244 |
f->at_least_that_num = v->at_least_that_num; |
233 |
#ifdef USE_GEOIP |
245 |
#ifdef USE_GEOIP |
234 |
|
246 |
|
235 |
//FIXME reserve space first, then insert |
247 |
//FIXME reserve space first, then insert |
Lines 237-243
Link Here
|
237 |
g_array_append_val (f->countries,g_array_index(v->countries,int,i)); |
249 |
g_array_append_val (f->countries,g_array_index(v->countries,int,i)); |
238 |
|
250 |
|
239 |
#endif |
251 |
#endif |
240 |
|
252 |
//g_strdupv from glib2 for compatibility with glib1 compiles (in utils.c) |
|
|
253 |
f->svars = g_strdupv2(v->svars); |
241 |
return f; |
254 |
return f; |
242 |
} |
255 |
} |
243 |
|
256 |
|
Lines 259-271
Link Here
|
259 |
printf(" game type: %s\n",f->game_type); |
272 |
printf(" game type: %s\n",f->game_type); |
260 |
printf(" map: %s\n",f->map_contains); |
273 |
printf(" map: %s\n",f->map_contains); |
261 |
printf(" server name: %s\n",f->server_name_contains); |
274 |
printf(" server name: %s\n",f->server_name_contains); |
|
|
275 |
printf(" players at least: %d\n",f->at_least_that_num); |
262 |
#ifdef USE_GEOIP |
276 |
#ifdef USE_GEOIP |
263 |
|
277 |
|
264 |
for (i =0; i< f->countries->len;i++) |
278 |
for (i =0; i< f->countries->len;i++) |
265 |
printf("country id: %d ",g_array_index(f->countries,int,i)); |
279 |
printf(" country id %d: %d \n", i + 1, g_array_index(f->countries,int,i)); |
266 |
printf("\n"); |
280 |
//printf("\n"); |
267 |
|
281 |
|
268 |
#endif |
282 |
#endif |
|
|
283 |
for (i = 0; f->svars && f->svars[i]; i++) |
284 |
printf(" custom svar %d: %s \n", i + 1, f->svars[i]); |
285 |
|
286 |
printf("\n"); |
287 |
|
269 |
} |
288 |
} |
270 |
|
289 |
|
271 |
void apply_filters (unsigned mask, struct server *s) { |
290 |
void apply_filters (unsigned mask, struct server *s) { |
Lines 381-387
Link Here
|
381 |
else if(!lowcasestrstr(s->game,filter->game_contains)) |
400 |
else if(!lowcasestrstr(s->game,filter->game_contains)) |
382 |
return FALSE; |
401 |
return FALSE; |
383 |
} |
402 |
} |
384 |
|
403 |
|
385 |
if( filter->game_type && *filter->game_type ) |
404 |
if( filter->game_type && *filter->game_type ) |
386 |
{ |
405 |
{ |
387 |
if( !s->gametype ) |
406 |
if( !s->gametype ) |
Lines 434-439
Link Here
|
434 |
|
453 |
|
435 |
#endif |
454 |
#endif |
436 |
|
455 |
|
|
|
456 |
|
457 |
/* Custom server info variables. Trying to satisfy all lines and |
458 |
comma separated values on each line. */ |
459 |
if (filter->svars != NULL ) { |
460 |
int i,y; |
461 |
char **tmp; |
462 |
char **tmp2; |
463 |
gboolean not_even_here; |
464 |
gboolean line_did_not_match; |
465 |
for (i = 0; filter->svars && filter->svars[i]; ++i) { |
466 |
//for each filtered var check if at least having it, reset the bools. |
467 |
not_even_here = TRUE; |
468 |
line_did_not_match = TRUE; |
469 |
for (info_ptr = s->info; info_ptr && *info_ptr; info_ptr += 2) { |
470 |
tmp = g_strsplit(filter->svars[i], " = ", 2); |
471 |
if (!g_ascii_strcasecmp(*info_ptr, tmp[0])) { |
472 |
//at least I have the var |
473 |
not_even_here = FALSE; |
474 |
//check comma separated values |
475 |
tmp2 = g_strsplit(tmp[1], ",", 0); |
476 |
for (y = 0; tmp2[y]; y++) { |
477 |
g_strstrip(tmp2[y]); |
478 |
if (!g_ascii_strcasecmp(info_ptr[1], tmp2[y])) { |
479 |
//matched one of the comma separated values |
480 |
line_did_not_match = FALSE; |
481 |
} |
482 |
} |
483 |
if (line_did_not_match) { |
484 |
g_strfreev(tmp2); |
485 |
g_strfreev(tmp); |
486 |
return FALSE; |
487 |
} |
488 |
g_strfreev(tmp2); |
489 |
} |
490 |
g_strfreev(tmp); |
491 |
} |
492 |
if (not_even_here) |
493 |
return FALSE; |
494 |
} |
495 |
} |
496 |
|
497 |
//At least that number of players |
498 |
if(players < filter->at_least_that_num) |
499 |
return FALSE; |
500 |
|
437 |
if( filter->server_name_contains && *filter->server_name_contains ) |
501 |
if( filter->server_name_contains && *filter->server_name_contains ) |
438 |
{ |
502 |
{ |
439 |
if( !s->name ) |
503 |
if( !s->name ) |
Lines 454-462
Link Here
|
454 |
int isdefault = FALSE; // used to determine whether key exists in config |
518 |
int isdefault = FALSE; // used to determine whether key exists in config |
455 |
char* filtername; |
519 |
char* filtername; |
456 |
|
520 |
|
457 |
#ifdef USE_GEOIP |
521 |
//#ifdef USE_GEOIP |
458 |
char *str = NULL; |
522 |
char *str = NULL; |
459 |
#endif |
523 |
//#endif |
460 |
|
524 |
|
461 |
|
525 |
|
462 |
struct server_filter_vars* filter; |
526 |
struct server_filter_vars* filter; |
Lines 490-495
Link Here
|
490 |
filter->game_type = config_get_string("game_type"); |
554 |
filter->game_type = config_get_string("game_type"); |
491 |
filter->map_contains = config_get_string("map_contains"); |
555 |
filter->map_contains = config_get_string("map_contains"); |
492 |
filter->server_name_contains = config_get_string("server_name_contains"); |
556 |
filter->server_name_contains = config_get_string("server_name_contains"); |
|
|
557 |
filter->at_least_that_num = config_get_int ("at_least_that_num=0"); |
493 |
#ifdef USE_GEOIP |
558 |
#ifdef USE_GEOIP |
494 |
|
559 |
|
495 |
/*country filter ids*/ |
560 |
/*country filter ids*/ |
Lines 511-516
Link Here
|
511 |
} |
576 |
} |
512 |
|
577 |
|
513 |
#endif |
578 |
#endif |
|
|
579 |
|
580 |
filter->svars = g_strsplit(config_get_string("svars_include"), " || ", 0); |
581 |
|
514 |
g_array_append_val(server_filters,filter); |
582 |
g_array_append_val(server_filters,filter); |
515 |
|
583 |
|
516 |
config_pop_prefix (); |
584 |
config_pop_prefix (); |
Lines 560-573
Link Here
|
560 |
{ |
628 |
{ |
561 |
#ifdef USE_GEOIP |
629 |
#ifdef USE_GEOIP |
562 |
int country_nr; |
630 |
int country_nr; |
563 |
int i; |
631 |
// int i; |
564 |
#endif |
632 |
#endif |
|
|
633 |
int i; |
565 |
|
634 |
|
566 |
struct server_filter_vars* filter = server_filter_vars_new(); |
635 |
struct server_filter_vars* filter = server_filter_vars_new(); |
567 |
if(!filter) return NULL; |
636 |
if(!filter) return NULL; |
568 |
|
637 |
|
569 |
filter->filter_retries = gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON (filter_retries_spinner)); |
638 |
filter->filter_retries = gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON (filter_retries_spinner)); |
570 |
filter->filter_ping = gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON (filter_ping_spinner)); |
639 |
filter->filter_ping = gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON (filter_ping_spinner)); |
|
|
640 |
filter->at_least_that_num = gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON (at_least_that_num_spinner)); |
571 |
filter->filter_not_full = GTK_TOGGLE_BUTTON (filter_not_full_check_button)->active; |
641 |
filter->filter_not_full = GTK_TOGGLE_BUTTON (filter_not_full_check_button)->active; |
572 |
filter->filter_not_empty = GTK_TOGGLE_BUTTON (filter_not_empty_check_button)->active; |
642 |
filter->filter_not_empty = GTK_TOGGLE_BUTTON (filter_not_empty_check_button)->active; |
573 |
filter->filter_no_password = GTK_TOGGLE_BUTTON (filter_no_password_check_button)->active; |
643 |
filter->filter_no_password = GTK_TOGGLE_BUTTON (filter_no_password_check_button)->active; |
Lines 577-583
Link Here
|
577 |
filter->game_contains = gtk_editable_get_chars (GTK_EDITABLE (game_contains_entry), 0, -1 ); |
647 |
filter->game_contains = gtk_editable_get_chars (GTK_EDITABLE (game_contains_entry), 0, -1 ); |
578 |
filter->map_contains = gtk_editable_get_chars (GTK_EDITABLE (map_contains_entry), 0, -1 ); |
648 |
filter->map_contains = gtk_editable_get_chars (GTK_EDITABLE (map_contains_entry), 0, -1 ); |
579 |
filter->server_name_contains = gtk_editable_get_chars (GTK_EDITABLE (server_name_contains_entry), 0, -1 ); |
649 |
filter->server_name_contains = gtk_editable_get_chars (GTK_EDITABLE (server_name_contains_entry), 0, -1 ); |
580 |
|
|
|
581 |
#ifdef USE_GEOIP |
650 |
#ifdef USE_GEOIP |
582 |
|
651 |
|
583 |
for (i = 0; i < last_row_country_list; ++i) { |
652 |
for (i = 0; i < last_row_country_list; ++i) { |
Lines 586-591
Link Here
|
586 |
} |
655 |
} |
587 |
|
656 |
|
588 |
#endif |
657 |
#endif |
|
|
658 |
|
659 |
if (GTK_CLIST(svars_filter_list)->rows) { |
660 |
filter->svars = (char **) g_malloc0 ((GTK_CLIST(svars_filter_list)->rows + 1)* sizeof(char*)); |
661 |
char *tmp; |
662 |
for (i = 0; i < GTK_CLIST(svars_filter_list)->rows; i++) { |
663 |
gtk_clist_get_text(GTK_CLIST(svars_filter_list), i, 0, &tmp); |
664 |
filter->svars[i] = (char *) g_malloc0 (strlen(tmp) + 1); |
665 |
strcpy(filter->svars[i], tmp); |
666 |
} |
667 |
} |
589 |
|
668 |
|
590 |
return filter; |
669 |
return filter; |
591 |
} |
670 |
} |
Lines 705-710
Link Here
|
705 |
filters[FILTER_SERVER].changed = FILTER_CHANGED; |
784 |
filters[FILTER_SERVER].changed = FILTER_CHANGED; |
706 |
} |
785 |
} |
707 |
|
786 |
|
|
|
787 |
if (oldfilter->at_least_that_num != newfilter->at_least_that_num) { |
788 |
config_set_int ("at_least_that_num", oldfilter->at_least_that_num = newfilter->at_least_that_num); |
789 |
filters[FILTER_SERVER].changed = FILTER_CHANGED; |
790 |
} |
791 |
|
708 |
/* GAMECONTAINS string values -- baa */ |
792 |
/* GAMECONTAINS string values -- baa */ |
709 |
text_changed = 0; |
793 |
text_changed = 0; |
710 |
if(newfilter->game_contains && strlen(newfilter->game_contains )){ |
794 |
if(newfilter->game_contains && strlen(newfilter->game_contains )){ |
Lines 878-883
Link Here
|
878 |
|
962 |
|
879 |
#endif |
963 |
#endif |
880 |
|
964 |
|
|
|
965 |
if (newfilter->svars != NULL) { |
966 |
config_set_string ("svars_include", g_strjoinv(" || ", newfilter->svars)); |
967 |
filters[FILTER_SERVER].changed = FILTER_CHANGED; |
968 |
} |
881 |
|
969 |
|
882 |
if (oldfilter->filter_not_full != newfilter->filter_not_full) { |
970 |
if (oldfilter->filter_not_full != newfilter->filter_not_full) { |
883 |
config_set_bool ("not full", oldfilter->filter_not_full = newfilter->filter_not_full); |
971 |
config_set_bool ("not full", oldfilter->filter_not_full = newfilter->filter_not_full); |
Lines 1083-1088
Link Here
|
1083 |
gtk_widget_set_sensitive(game_contains_entry,sensitive); |
1171 |
gtk_widget_set_sensitive(game_contains_entry,sensitive); |
1084 |
gtk_widget_set_sensitive(map_contains_entry,sensitive); |
1172 |
gtk_widget_set_sensitive(map_contains_entry,sensitive); |
1085 |
gtk_widget_set_sensitive(server_name_contains_entry,sensitive); |
1173 |
gtk_widget_set_sensitive(server_name_contains_entry,sensitive); |
|
|
1174 |
gtk_widget_set_sensitive(at_least_that_num_spinner,sensitive); |
1086 |
gtk_widget_set_sensitive(filter_ping_spinner,sensitive); |
1175 |
gtk_widget_set_sensitive(filter_ping_spinner,sensitive); |
1087 |
gtk_widget_set_sensitive(filter_retries_spinner,sensitive); |
1176 |
gtk_widget_set_sensitive(filter_retries_spinner,sensitive); |
1088 |
gtk_widget_set_sensitive(filter_not_full_check_button,sensitive); |
1177 |
gtk_widget_set_sensitive(filter_not_full_check_button,sensitive); |
Lines 1101-1106
Link Here
|
1101 |
} |
1190 |
} |
1102 |
} |
1191 |
} |
1103 |
#endif |
1192 |
#endif |
|
|
1193 |
gtk_widget_set_sensitive(svars_filter_list, sensitive); |
1194 |
gtk_widget_set_sensitive(scrolledwindow_fsvars, sensitive); |
1195 |
gtk_widget_set_sensitive(svars_selection_button, sensitive); |
1196 |
gtk_widget_set_sensitive(svars_clear_button, sensitive); |
1197 |
if (!sensitive) |
1198 |
gtk_clist_clear(GTK_CLIST(svars_filter_list)); |
1104 |
} |
1199 |
} |
1105 |
|
1200 |
|
1106 |
static void server_filter_fill_widgets(guint num) |
1201 |
static void server_filter_fill_widgets(guint num) |
Lines 1115-1121
Link Here
|
1115 |
|
1210 |
|
1116 |
struct pixmap* countrypix = NULL; |
1211 |
struct pixmap* countrypix = NULL; |
1117 |
buf[2]='\0'; |
1212 |
buf[2]='\0'; |
1118 |
#endif |
1213 |
#endif |
1119 |
|
1214 |
|
1120 |
if(num > 0) |
1215 |
if(num > 0) |
1121 |
{ |
1216 |
{ |
Lines 1152-1158
Link Here
|
1152 |
gchar *text[1] = {buf}; |
1247 |
gchar *text[1] = {buf}; |
1153 |
|
1248 |
|
1154 |
if (filter->countries != NULL) { |
1249 |
if (filter->countries != NULL) { |
1155 |
|
1250 |
|
1156 |
for (i = 0; i < filter->countries->len; ++i) { |
1251 |
for (i = 0; i < filter->countries->len; ++i) { |
1157 |
|
1252 |
|
1158 |
f_number=g_array_index(filter->countries,int,i); |
1253 |
f_number=g_array_index(filter->countries,int,i); |
Lines 1176-1184
Link Here
|
1176 |
|
1271 |
|
1177 |
#endif |
1272 |
#endif |
1178 |
|
1273 |
|
|
|
1274 |
gtk_clist_clear(GTK_CLIST(svars_filter_list)); |
1275 |
if (filter->svars) { |
1276 |
int i; |
1277 |
for (i = 0; filter->svars[i]; i++) |
1278 |
gtk_clist_append(GTK_CLIST(svars_filter_list), &filter->svars[i]); |
1279 |
} |
1280 |
|
1179 |
gtk_adjustment_set_value(gtk_spin_button_get_adjustment( |
1281 |
gtk_adjustment_set_value(gtk_spin_button_get_adjustment( |
1180 |
GTK_SPIN_BUTTON(filter_ping_spinner)),filter->filter_ping); |
1282 |
GTK_SPIN_BUTTON(filter_ping_spinner)),filter->filter_ping); |
1181 |
gtk_adjustment_set_value(gtk_spin_button_get_adjustment( |
1283 |
gtk_adjustment_set_value(gtk_spin_button_get_adjustment( |
|
|
1284 |
GTK_SPIN_BUTTON(at_least_that_num_spinner)),filter->at_least_that_num); |
1285 |
gtk_adjustment_set_value(gtk_spin_button_get_adjustment( |
1182 |
GTK_SPIN_BUTTON(filter_retries_spinner)),filter->filter_retries); |
1286 |
GTK_SPIN_BUTTON(filter_retries_spinner)),filter->filter_retries); |
1183 |
|
1287 |
|
1184 |
gtk_toggle_button_set_active ( |
1288 |
gtk_toggle_button_set_active ( |
Lines 1212-1220
Link Here
|
1212 |
GtkWidget *button; |
1316 |
GtkWidget *button; |
1213 |
GtkObject *adj; |
1317 |
GtkObject *adj; |
1214 |
|
1318 |
|
1215 |
#ifdef USE_GEOIP |
1319 |
//#ifdef USE_GEOIP |
1216 |
GtkWidget *vbuttonbox1; |
1320 |
GtkWidget *vbuttonbox1; |
1217 |
#endif |
1321 |
//#endif |
1218 |
|
1322 |
|
1219 |
|
1323 |
|
1220 |
// char label_buf[64]; |
1324 |
// char label_buf[64]; |
Lines 1296-1306
Link Here
|
1296 |
alignment = gtk_alignment_new (0.5, 0.5, 0.0, 0.0); |
1400 |
alignment = gtk_alignment_new (0.5, 0.5, 0.0, 0.0); |
1297 |
gtk_container_add (GTK_CONTAINER (frame), alignment); |
1401 |
gtk_container_add (GTK_CONTAINER (frame), alignment); |
1298 |
|
1402 |
|
1299 |
#ifdef USE_GEOIP |
1403 |
// #ifdef USE_GEOIP |
1300 |
table = gtk_table_new (8, 5, FALSE); |
1404 |
table = gtk_table_new (8, 5, FALSE); |
1301 |
#else |
1405 |
// #else |
1302 |
table = gtk_table_new (6, 5, FALSE); |
1406 |
// table = gtk_table_new (6, 5, FALSE); |
1303 |
#endif |
1407 |
// #endif |
1304 |
|
1408 |
|
1305 |
gtk_table_set_row_spacings (GTK_TABLE (table), 2); |
1409 |
gtk_table_set_row_spacings (GTK_TABLE (table), 2); |
1306 |
gtk_table_set_col_spacings (GTK_TABLE (table), 4); |
1410 |
gtk_table_set_col_spacings (GTK_TABLE (table), 4); |
Lines 1327-1334
Link Here
|
1327 |
gtk_table_attach_defaults (GTK_TABLE (table), filter_ping_spinner, 1, 2, row, row+1); |
1431 |
gtk_table_attach_defaults (GTK_TABLE (table), filter_ping_spinner, 1, 2, row, row+1); |
1328 |
gtk_widget_show (filter_ping_spinner); |
1432 |
gtk_widget_show (filter_ping_spinner); |
1329 |
|
1433 |
|
1330 |
|
1434 |
/* GAMECONTAINS Filter -- baa */ |
1331 |
/* GAMECONTAINS Filter -- baa */ |
|
|
1332 |
/* http://developer.gnome.org/doc/API/gtk/gtktable.html */ |
1435 |
/* http://developer.gnome.org/doc/API/gtk/gtktable.html */ |
1333 |
|
1436 |
|
1334 |
label = gtk_label_new (_("the game contains the string")); |
1437 |
label = gtk_label_new (_("the game contains the string")); |
Lines 1461-1466
Link Here
|
1461 |
gtk_widget_show (server_name_contains_entry); |
1564 |
gtk_widget_show (server_name_contains_entry); |
1462 |
row++; |
1565 |
row++; |
1463 |
|
1566 |
|
|
|
1567 |
|
1568 |
/* at least that num of players*/ |
1569 |
label = gtk_label_new (_("with at least that number of players")); |
1570 |
gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5); |
1571 |
gtk_table_attach (GTK_TABLE (table), label, 3, 4, row, row+1, GTK_FILL, GTK_FILL, |
1572 |
0, 0); |
1573 |
gtk_widget_show (label); |
1574 |
|
1575 |
adj = gtk_adjustment_new (0, 0, 99, 1, 100, 0); |
1576 |
|
1577 |
at_least_that_num_spinner = gtk_spin_button_new (GTK_ADJUSTMENT (adj), 0, 0); |
1578 |
gtk_spin_button_set_update_policy (GTK_SPIN_BUTTON (at_least_that_num_spinner), |
1579 |
GTK_UPDATE_ALWAYS); |
1580 |
gtk_widget_set_usize (at_least_that_num_spinner, 64, -1); |
1581 |
gtk_signal_connect_object (GTK_OBJECT (at_least_that_num_spinner), "changed", |
1582 |
GTK_SIGNAL_FUNC (server_filter_set_changed_callback), (gpointer) TRUE); |
1583 |
gtk_table_attach_defaults (GTK_TABLE (table), at_least_that_num_spinner, 4, 5, row, row+1); |
1584 |
gtk_widget_show (at_least_that_num_spinner); |
1585 |
|
1464 |
/*row=5..6*/ |
1586 |
/*row=5..6*/ |
1465 |
|
1587 |
|
1466 |
/* no password */ |
1588 |
/* no password */ |
Lines 1487-1493
Link Here
|
1487 |
gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW |
1609 |
gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW |
1488 |
(scrolledwindow_fcountry), |
1610 |
(scrolledwindow_fcountry), |
1489 |
GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC); |
1611 |
GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC); |
1490 |
|
1612 |
|
1491 |
country_filter_list = gtk_clist_new(1); |
1613 |
country_filter_list = gtk_clist_new(1); |
1492 |
gtk_clist_set_shadow_type(GTK_CLIST(country_filter_list),GTK_SHADOW_NONE); |
1614 |
gtk_clist_set_shadow_type(GTK_CLIST(country_filter_list),GTK_SHADOW_NONE); |
1493 |
gtk_widget_set_sensitive(country_filter_list,FALSE); |
1615 |
gtk_widget_set_sensitive(country_filter_list,FALSE); |
Lines 1543-1548
Link Here
|
1543 |
gtk_widget_set_usize(country_clear_button, 80, -1); |
1665 |
gtk_widget_set_usize(country_clear_button, 80, -1); |
1544 |
#endif |
1666 |
#endif |
1545 |
|
1667 |
|
|
|
1668 |
//svars |
1669 |
label = gtk_label_new(_("Custom server info variables:")); |
1670 |
gtk_table_attach_defaults(GTK_TABLE(table), label, 2, 3, 6, 7); |
1671 |
gtk_misc_set_padding(GTK_MISC(label), 0, 15); |
1672 |
gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.5); |
1673 |
gtk_widget_show(label); |
1674 |
|
1675 |
scrolledwindow_fsvars = gtk_scrolled_window_new(NULL, NULL); |
1676 |
gtk_widget_set_sensitive(scrolledwindow_fsvars,FALSE); |
1677 |
gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW |
1678 |
(scrolledwindow_fsvars), |
1679 |
GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC); |
1680 |
//char *titles[1] = { _("Svar and value") }; |
1681 |
//svars_filter_list = gtk_clist_new_with_titles(1, titles); |
1682 |
svars_filter_list = gtk_clist_new(1); |
1683 |
gtk_clist_set_shadow_type(GTK_CLIST(svars_filter_list),GTK_SHADOW_NONE); |
1684 |
gtk_widget_set_sensitive(svars_filter_list,FALSE); |
1685 |
|
1686 |
|
1687 |
gtk_clist_set_column_justification(GTK_CLIST(svars_filter_list), 0, |
1688 |
GTK_JUSTIFY_LEFT); |
1689 |
gtk_clist_set_column_width(GTK_CLIST(svars_filter_list), 0, 100); |
1690 |
gtk_scrolled_window_add_with_viewport(GTK_SCROLLED_WINDOW |
1691 |
(scrolledwindow_fsvars), |
1692 |
svars_filter_list); |
1693 |
|
1694 |
gtk_widget_set_usize(scrolledwindow_fsvars, 100, 100); |
1695 |
|
1696 |
gtk_table_attach_defaults(GTK_TABLE(table), scrolledwindow_fsvars, 2, |
1697 |
4, 7, 8); |
1698 |
gtk_widget_show(scrolledwindow_fsvars); |
1699 |
gtk_widget_show(svars_filter_list); |
1700 |
|
1701 |
|
1702 |
//svars add and clear buttons |
1703 |
vbuttonbox1 = gtk_vbutton_box_new(); |
1704 |
gtk_widget_show(vbuttonbox1); |
1705 |
gtk_table_attach_defaults(GTK_TABLE(table), vbuttonbox1, 4, 5, 7, 8); |
1706 |
gtk_button_box_set_layout(GTK_BUTTON_BOX(vbuttonbox1), |
1707 |
GTK_BUTTONBOX_START); |
1708 |
gtk_button_box_set_spacing(GTK_BUTTON_BOX(vbuttonbox1), 1); |
1709 |
gtk_button_box_set_child_size(GTK_BUTTON_BOX(vbuttonbox1), 80, 0); |
1710 |
gtk_button_box_set_child_ipadding(GTK_BUTTON_BOX(vbuttonbox1), 5, -1); |
1711 |
|
1712 |
svars_selection_button = gtk_button_new_with_label(_("add...")); |
1713 |
gtk_widget_set_sensitive(svars_selection_button,FALSE); |
1714 |
gtk_widget_show(svars_selection_button); |
1715 |
gtk_container_add(GTK_CONTAINER(vbuttonbox1), |
1716 |
svars_selection_button); |
1717 |
gtk_widget_set_usize(svars_selection_button, 80, -1); |
1718 |
gtk_signal_connect(GTK_OBJECT(svars_selection_button), "clicked", |
1719 |
GTK_SIGNAL_FUNC(svars_select_button_pressed), NULL); |
1720 |
|
1721 |
gtk_signal_connect_object(GTK_OBJECT(svars_selection_button), "clicked", |
1722 |
GTK_SIGNAL_FUNC(server_filter_set_changed_callback),(gpointer) TRUE); |
1723 |
|
1724 |
|
1725 |
svars_clear_button = gtk_button_new_with_label(_("clear")); |
1726 |
gtk_widget_set_sensitive(svars_clear_button,FALSE); |
1727 |
gtk_signal_connect(GTK_OBJECT(svars_clear_button), "clicked", |
1728 |
GTK_SIGNAL_FUNC(svars_clear_list), NULL); |
1729 |
gtk_signal_connect_object(GTK_OBJECT(svars_clear_button), "clicked", |
1730 |
GTK_SIGNAL_FUNC(server_filter_set_changed_callback),(gpointer) TRUE); |
1731 |
|
1732 |
|
1733 |
gtk_widget_show(svars_clear_button); |
1734 |
gtk_container_add(GTK_CONTAINER(vbuttonbox1), svars_clear_button); |
1735 |
gtk_widget_set_usize(svars_clear_button, 80, -1); |
1736 |
//-svars |
1737 |
|
1546 |
gtk_widget_show (table); |
1738 |
gtk_widget_show (table); |
1547 |
gtk_widget_show (alignment); |
1739 |
gtk_widget_show (alignment); |
1548 |
gtk_widget_show (frame); |
1740 |
gtk_widget_show (frame); |
Lines 2138-2143
Link Here
|
2138 |
} |
2330 |
} |
2139 |
#endif |
2331 |
#endif |
2140 |
|
2332 |
|
|
|
2333 |
static void svars_select_button_pressed() |
2334 |
{ |
2335 |
char *svar = enter_string_dialog(TRUE,_("Enter a server variable")); |
2336 |
char *value; |
2337 |
if (svar) |
2338 |
value = enter_string_dialog(TRUE,_("Enter its value, comma separated values allowed (e.g. abc or 0,2,7)")); |
2339 |
if (svar && value) { |
2340 |
g_strstrip(value); |
2341 |
gchar *sv = g_strconcat(svar, " = ", value, NULL); |
2342 |
gtk_clist_append(GTK_CLIST(svars_filter_list), &sv); |
2343 |
g_free(sv); |
2344 |
g_free(value); |
2345 |
} |
2346 |
g_free(svar); |
2347 |
} |
2348 |
|
2349 |
static void svars_clear_list(GtkWidget * widget, gpointer data) |
2350 |
{ |
2351 |
gtk_clist_clear(GTK_CLIST(svars_filter_list)); |
2352 |
} |
2353 |
|
2141 |
unsigned filter_time_inc() |
2354 |
unsigned filter_time_inc() |
2142 |
{ |
2355 |
{ |
2143 |
++filter_current_time; |
2356 |
++filter_current_time; |