|
|
1.1 ! root 1: #include "dirwrap.h" ! 2: #include "ini_file.h" ! 3: ! 4: #include "events.h" ! 5: #include "gtkuserlist.h" ! 6: ! 7: GladeXML *lxml; ! 8: scfg_t cfg; ! 9: uchar *arbuf=NULL; ! 10: ! 11: int main(int argc, char **argv) ! 12: { ! 13: GtkWidget *w; ! 14: int i; ! 15: char str[1025]; ! 16: char flags[33]; ! 17: GtkListStore *lstore = NULL; ! 18: GtkTreeSelection *lsel; ! 19: char glade_path[MAX_PATH+1]; ! 20: char *p; ! 21: ! 22: gtk_init(&argc, &argv); ! 23: glade_init(); ! 24: ! 25: /* Read .cfg files here */ ! 26: memset(&cfg,0,sizeof(cfg)); ! 27: p=getenv("SBBSCTRL"); ! 28: if(p==NULL) { ! 29: display_message("Environment Error","SBBSCTRL not set","gtk-dialog-error"); ! 30: return(-1); ! 31: } ! 32: SAFECOPY(cfg.ctrl_dir, p); ! 33: prep_dir("",cfg.ctrl_dir,sizeof(cfg.ctrl_dir)); ! 34: if(!isdir(cfg.ctrl_dir)) { ! 35: display_message("Environment Error","SBBSCTRL does not point to a directory","gtk-dialog-error"); ! 36: return(-1); ! 37: } ! 38: cfg.size=sizeof(cfg); ! 39: ! 40: if(!load_cfg(&cfg, NULL, TRUE, str)) { ! 41: fprintf(stderr,"Cannot load configuration data (%s)",str); ! 42: return; ! 43: } ! 44: ! 45: /* load the interface */ ! 46: strcpy(glade_path, argv[0]); ! 47: strcpy(getfname(glade_path), "gtkuserlist.glade"); ! 48: ! 49: lxml = glade_xml_new(glade_path, "UserListWindow", NULL); ! 50: if(lxml==NULL) { ! 51: fprintf(stderr,"Could not locate UserListWindow widget\n"); ! 52: return; ! 53: } ! 54: /* connect the signals in the interface */ ! 55: glade_xml_signal_autoconnect(lxml); ! 56: ! 57: /* Set up user list */ ! 58: w=glade_xml_get_widget(lxml, "lUserList"); ! 59: lstore = gtk_list_store_new(17 ! 60: ,G_TYPE_INT ! 61: ,G_TYPE_STRING ! 62: ,G_TYPE_STRING ! 63: ,G_TYPE_INT ! 64: ,G_TYPE_INT ! 65: ,G_TYPE_STRING ! 66: ,G_TYPE_STRING ! 67: ,G_TYPE_STRING ! 68: ,G_TYPE_STRING ! 69: ,G_TYPE_STRING ! 70: ,G_TYPE_STRING ! 71: ,G_TYPE_STRING ! 72: ,G_TYPE_INT ! 73: ,G_TYPE_STRING ! 74: ,G_TYPE_STRING ! 75: ,G_TYPE_INT ! 76: ,G_TYPE_INT ! 77: ); ! 78: gtk_tree_view_set_model(GTK_TREE_VIEW(w), GTK_TREE_MODEL(lstore)); ! 79: gtk_tree_view_insert_column_with_attributes( ! 80: GTK_TREE_VIEW(w) ! 81: ,0 ! 82: ,"Num" ! 83: ,gtk_cell_renderer_text_new() ! 84: ,"text" ! 85: ,0 ! 86: ,NULL); ! 87: gtk_tree_view_column_set_sort_column_id( ! 88: gtk_tree_view_get_column( ! 89: GTK_TREE_VIEW(w), 0 ! 90: ) ! 91: ,0 ! 92: ); ! 93: gtk_tree_view_insert_column_with_attributes( ! 94: GTK_TREE_VIEW(w) ! 95: ,1 ! 96: ,"Alias" ! 97: ,gtk_cell_renderer_text_new() ! 98: ,"text" ! 99: ,1 ! 100: ,NULL); ! 101: gtk_tree_view_column_set_sort_column_id( ! 102: gtk_tree_view_get_column( ! 103: GTK_TREE_VIEW(w), 1 ! 104: ) ! 105: ,1 ! 106: ); ! 107: gtk_tree_view_insert_column_with_attributes( ! 108: GTK_TREE_VIEW(w) ! 109: ,2 ! 110: ,"Name" ! 111: ,gtk_cell_renderer_text_new() ! 112: ,"text" ! 113: ,2 ! 114: ,NULL); ! 115: gtk_tree_view_column_set_sort_column_id( ! 116: gtk_tree_view_get_column( ! 117: GTK_TREE_VIEW(w), 2 ! 118: ) ! 119: ,2 ! 120: ); ! 121: gtk_tree_view_insert_column_with_attributes( ! 122: GTK_TREE_VIEW(w) ! 123: ,3 ! 124: ,"Lev" ! 125: ,gtk_cell_renderer_text_new() ! 126: ,"text" ! 127: ,3 ! 128: ,NULL); ! 129: gtk_tree_view_column_set_sort_column_id( ! 130: gtk_tree_view_get_column( ! 131: GTK_TREE_VIEW(w), 3 ! 132: ) ! 133: ,3 ! 134: ); ! 135: gtk_tree_view_insert_column_with_attributes( ! 136: GTK_TREE_VIEW(w) ! 137: ,4 ! 138: ,"Age" ! 139: ,gtk_cell_renderer_text_new() ! 140: ,"text" ! 141: ,4 ! 142: ,NULL); ! 143: gtk_tree_view_column_set_sort_column_id( ! 144: gtk_tree_view_get_column( ! 145: GTK_TREE_VIEW(w), 4 ! 146: ) ! 147: ,4 ! 148: ); ! 149: gtk_tree_view_insert_column_with_attributes( ! 150: GTK_TREE_VIEW(w) ! 151: ,5 ! 152: ,"Sex" ! 153: ,gtk_cell_renderer_text_new() ! 154: ,"text" ! 155: ,5 ! 156: ,NULL); ! 157: gtk_tree_view_column_set_sort_column_id( ! 158: gtk_tree_view_get_column( ! 159: GTK_TREE_VIEW(w), 5 ! 160: ) ! 161: ,5 ! 162: ); ! 163: gtk_tree_view_insert_column_with_attributes( ! 164: GTK_TREE_VIEW(w) ! 165: ,6 ! 166: ,"Location" ! 167: ,gtk_cell_renderer_text_new() ! 168: ,"text" ! 169: ,6 ! 170: ,NULL); ! 171: gtk_tree_view_column_set_sort_column_id( ! 172: gtk_tree_view_get_column( ! 173: GTK_TREE_VIEW(w), 6 ! 174: ) ! 175: ,6 ! 176: ); ! 177: gtk_tree_view_insert_column_with_attributes( ! 178: GTK_TREE_VIEW(w) ! 179: ,7 ! 180: ,"Protocol" ! 181: ,gtk_cell_renderer_text_new() ! 182: ,"text" ! 183: ,7 ! 184: ,NULL); ! 185: gtk_tree_view_column_set_sort_column_id( ! 186: gtk_tree_view_get_column( ! 187: GTK_TREE_VIEW(w), 7 ! 188: ) ! 189: ,7 ! 190: ); ! 191: gtk_tree_view_insert_column_with_attributes( ! 192: GTK_TREE_VIEW(w) ! 193: ,8 ! 194: ,"Address" ! 195: ,gtk_cell_renderer_text_new() ! 196: ,"text" ! 197: ,8 ! 198: ,NULL); ! 199: gtk_tree_view_column_set_sort_column_id( ! 200: gtk_tree_view_get_column( ! 201: GTK_TREE_VIEW(w), 8 ! 202: ) ! 203: ,8 ! 204: ); ! 205: gtk_tree_view_insert_column_with_attributes( ! 206: GTK_TREE_VIEW(w) ! 207: ,9 ! 208: ,"Host Name" ! 209: ,gtk_cell_renderer_text_new() ! 210: ,"text" ! 211: ,9 ! 212: ,NULL); ! 213: gtk_tree_view_column_set_sort_column_id( ! 214: gtk_tree_view_get_column( ! 215: GTK_TREE_VIEW(w), 9 ! 216: ) ! 217: ,9 ! 218: ); ! 219: gtk_tree_view_insert_column_with_attributes( ! 220: GTK_TREE_VIEW(w) ! 221: ,10 ! 222: ,"Phone" ! 223: ,gtk_cell_renderer_text_new() ! 224: ,"text" ! 225: ,10 ! 226: ,NULL); ! 227: gtk_tree_view_column_set_sort_column_id( ! 228: gtk_tree_view_get_column( ! 229: GTK_TREE_VIEW(w), 10 ! 230: ) ! 231: ,10 ! 232: ); ! 233: gtk_tree_view_insert_column_with_attributes( ! 234: GTK_TREE_VIEW(w) ! 235: ,11 ! 236: ,"Email" ! 237: ,gtk_cell_renderer_text_new() ! 238: ,"text" ! 239: ,11 ! 240: ,NULL); ! 241: gtk_tree_view_column_set_sort_column_id( ! 242: gtk_tree_view_get_column( ! 243: GTK_TREE_VIEW(w), 11 ! 244: ) ! 245: ,11 ! 246: ); ! 247: gtk_tree_view_insert_column_with_attributes( ! 248: GTK_TREE_VIEW(w) ! 249: ,12 ! 250: ,"Logons" ! 251: ,gtk_cell_renderer_text_new() ! 252: ,"text" ! 253: ,12 ! 254: ,NULL); ! 255: gtk_tree_view_column_set_sort_column_id( ! 256: gtk_tree_view_get_column( ! 257: GTK_TREE_VIEW(w), 12 ! 258: ) ! 259: ,12 ! 260: ); ! 261: gtk_tree_view_insert_column_with_attributes( ! 262: GTK_TREE_VIEW(w) ! 263: ,13 ! 264: ,"First On" ! 265: ,gtk_cell_renderer_text_new() ! 266: ,"text" ! 267: ,13 ! 268: ,NULL); ! 269: gtk_tree_view_column_set_sort_column_id( ! 270: gtk_tree_view_get_column( ! 271: GTK_TREE_VIEW(w), 13 ! 272: ) ! 273: ,15 ! 274: ); ! 275: gtk_tree_view_insert_column_with_attributes( ! 276: GTK_TREE_VIEW(w) ! 277: ,14 ! 278: ,"Last On" ! 279: ,gtk_cell_renderer_text_new() ! 280: ,"text" ! 281: ,14 ! 282: ,NULL); ! 283: gtk_tree_view_column_set_sort_column_id( ! 284: gtk_tree_view_get_column( ! 285: GTK_TREE_VIEW(w), 14 ! 286: ) ! 287: ,16 ! 288: ); ! 289: lsel = gtk_tree_view_get_selection (GTK_TREE_VIEW (w)); ! 290: gtk_tree_selection_set_mode (lsel, GTK_SELECTION_MULTIPLE); ! 291: g_signal_connect (G_OBJECT (lsel), "changed", G_CALLBACK (update_userlist_sensitive_callback), NULL); ! 292: ! 293: /* Set up users */ ! 294: update_userlist_callback(GTK_WIDGET(w), NULL); ! 295: update_userlist_sensitive_callback(lsel, NULL); ! 296: ! 297: /* Set up quick validation values */ ! 298: w=glade_xml_get_widget(lxml, "cQuickValidate"); ! 299: gtk_combo_box_set_active(GTK_COMBO_BOX(w), 0); ! 300: for(i=0;i<10;i++) { ! 301: sprintf(str,"%d SL: %-2d F1: %s",i,cfg.val_level[i],ltoaf(cfg.val_flags1[i],flags)); ! 302: gtk_combo_box_append_text(GTK_COMBO_BOX(w), str); ! 303: } ! 304: ! 305: /* Show 'er to the user */ ! 306: gtk_window_present(GTK_WINDOW(glade_xml_get_widget(lxml, "UserListWindow"))); ! 307: gtk_main(); ! 308: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.