Changeset 3391 for trunk/jons-gtk2-gui
- Timestamp:
- 03/21/03 13:05:36 (6 years ago)
- Files:
-
- 1 modified
-
trunk/jons-gtk2-gui/src/option_window.cpp (modified) (14 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/jons-gtk2-gui/src/option_window.cpp
r3324 r3391 21 21 #include "licq_gtk.h" 22 22 #include "licq_log.h" 23 #include "utilities.h" 23 24 24 25 #include <gtk/gtk.h> … … 38 39 39 40 // Network section 40 GtkWidget * lstServers;41 GtkWidget * spnDefPort;41 GtkWidget *icqServer; 42 GtkWidget *icqServerPort; 42 43 GtkWidget *chkBehindFirewall; 43 44 GtkWidget *btnSOCKS; … … 50 51 GtkWidget *cmbAutoLogon; 51 52 GtkWidget *chkInvisible; 53 54 // Timeouts 55 GtkWidget *auto_away_time; 56 GtkWidget *auto_na_time; 57 GtkWidget *auto_offline_time; 52 58 }; 53 59 54 void done_options(GtkWidget *, gpointer); 55 void show_on_color_dlg(GtkWidget *, gpointer); 56 void color_dlg_ok(GtkWidget *, gpointer); 57 void color_dlg_cancel(GtkWidget *, gpointer); 58 void SOCKSClicked(GtkWidget *, gpointer); 60 void done_options(GtkWidget *, struct options_window *); 61 //void SOCKSClicked(GtkWidget *, gpointer); 59 62 60 63 // Global variables for use in other files … … 80 83 void set_options(struct options_window *ow); 81 84 85 void 86 run_color_dialog(GtkWidget *color_button, GdkColor *color) 87 { 88 GtkWidget *dialog = gtk_color_selection_dialog_new("Choose color"); 89 GtkColorSelection *csel = 90 GTK_COLOR_SELECTION(GTK_COLOR_SELECTION_DIALOG(dialog)->colorsel); 91 gtk_color_selection_set_current_color(csel, color); 92 if (gtk_dialog_run(GTK_DIALOG(dialog)) == GTK_RESPONSE_OK) { 93 gtk_color_selection_get_current_color(csel, color); 94 gtk_widget_modify_bg(color_button, GTK_STATE_NORMAL, color); 95 gtk_widget_modify_bg(color_button, GTK_STATE_ACTIVE, color); 96 gtk_widget_modify_bg(color_button, GTK_STATE_PRELIGHT, color); 97 gtk_widget_modify_bg(color_button, GTK_STATE_SELECTED, color); 98 gtk_widget_modify_bg(color_button, GTK_STATE_INSENSITIVE, color); 99 } 100 gtk_widget_destroy(dialog); 101 } 102 103 GtkWidget * 104 color_button_new(const char *label, GdkColor *color) 105 { 106 GtkWidget *color_button = gtk_button_new_with_label(label); 107 gtk_widget_modify_bg(color_button, GTK_STATE_NORMAL, color); 108 gtk_widget_modify_bg(color_button, GTK_STATE_ACTIVE, color); 109 gtk_widget_modify_bg(color_button, GTK_STATE_PRELIGHT, color); 110 gtk_widget_modify_bg(color_button, GTK_STATE_SELECTED, color); 111 gtk_widget_modify_bg(color_button, GTK_STATE_INSENSITIVE, color); 112 g_signal_connect(G_OBJECT(color_button), "clicked", 113 G_CALLBACK(run_color_dialog), color); 114 return color_button; 115 } 116 82 117 // The "Options" selection under the menu in the main window 83 void menu_options_create() 84 { 85 GtkWidget *v_box; 86 GtkWidget *notebook; 87 GtkWidget *table; 88 GtkWidget *label; 89 GtkWidget *close; 118 void 119 menu_options_create() 120 { 121 static struct options_window *ow = 0; 122 123 if (ow != NULL) { 124 gtk_window_present(GTK_WINDOW(ow->window)); 125 return; 126 } 127 90 128 GtkWidget *hbox; 91 struct options_window *ow = g_new0(struct options_window, 1);129 ow = g_new0(struct options_window, 1); 92 130 93 131 // Make the window … … 95 133 gtk_widget_show(ow->window); 96 134 gtk_window_set_title(GTK_WINDOW(ow->window), "Licq - Options"); 135 gtk_container_set_border_width(GTK_CONTAINER(ow->window), 10); 97 136 98 137 // The vertical box, the main window will contain this 99 v_box = gtk_vbox_new(FALSE, 5);138 GtkWidget *v_box = gtk_vbox_new(FALSE, 5); 100 139 gtk_container_add(GTK_CONTAINER(ow->window), v_box); 101 140 102 141 // The notebook that will contain all the options 103 notebook = gtk_notebook_new();142 GtkWidget *notebook = gtk_notebook_new(); 104 143 105 144 // The table that will be used in all the notebook pages 106 table = gtk_table_new(5, 2, FALSE); 145 GtkWidget *general_vbox = gtk_vbox_new(FALSE, 0); 146 gtk_container_set_border_width(GTK_CONTAINER(general_vbox), 5); 147 GtkWidget *table = gtk_table_new(5, 2, FALSE); 148 gtk_box_pack_start(GTK_BOX(general_vbox), table, FALSE, FALSE, 5); 107 149 108 150 /*********************** FIRST TAB *********************/ … … 111 153 ow->show_ignored = gtk_check_button_new_with_label("Show ignored users"); 112 154 gtk_table_attach(GTK_TABLE(table), ow->show_ignored, 0, 1, 0, 1, 113 GtkAttachOptions(GTK_FILL | GTK_EXPAND),114 GTK_FILL, 3, 3);155 GtkAttachOptions(GTK_FILL | GTK_EXPAND), 156 GTK_FILL, 3, 3); 115 157 116 158 // Show offline users in the contact list? 117 159 ow->show_offline = gtk_check_button_new_with_label("Show offline users"); 118 160 gtk_table_attach(GTK_TABLE(table), ow->show_offline, 1, 2, 0, 1, 119 GtkAttachOptions(GTK_FILL | GTK_EXPAND),120 GTK_FILL, 3, 3);161 GtkAttachOptions(GTK_FILL | GTK_EXPAND), 162 GTK_FILL, 3, 3); 121 163 122 164 // Enter key pressed in the convo window send it? 123 165 ow->enter_sends = gtk_check_button_new_with_label("Enter sends messages"); 124 166 gtk_table_attach(GTK_TABLE(table), ow->enter_sends, 0, 1, 1, 2, 125 GtkAttachOptions(GTK_FILL | GTK_EXPAND),126 GTK_FILL, 3, 3);167 GtkAttachOptions(GTK_FILL | GTK_EXPAND), 168 GTK_FILL, 3, 3); 127 169 128 170 // Flash events 129 171 ow->flash_events = gtk_check_button_new_with_label("Flash events"); 130 172 gtk_table_attach(GTK_TABLE(table), ow->flash_events, 1, 2, 1, 2, 131 GtkAttachOptions(GTK_FILL | GTK_EXPAND), GTK_FILL, 3, 3);173 GtkAttachOptions(GTK_FILL | GTK_EXPAND), GTK_FILL, 3, 3); 132 174 133 175 // Timestamp 134 ow->show_timestamp = gtk_check_button_new_with_label("Show timestamp in messages"); 176 ow->show_timestamp = 177 gtk_check_button_new_with_label("Show timestamp in messages"); 135 178 gtk_table_attach(GTK_TABLE(table), ow->show_timestamp, 0, 1, 2, 3, 136 GtkAttachOptions(GTK_FILL | GTK_EXPAND),137 GTK_FILL, 3, 3);179 GtkAttachOptions(GTK_FILL | GTK_EXPAND), 180 GTK_FILL, 3, 3); 138 181 139 182 // Timestamp format 140 183 hbox = gtk_hbox_new(false, 5); 141 label = gtk_label_new("Timestamp Format:");184 GtkWidget *label = gtk_label_new("Timestamp format:"); 142 185 ow->txtTimestampFormat = gtk_entry_new(); 143 186 gtk_entry_set_max_length(GTK_ENTRY(ow->txtTimestampFormat), 50); 144 gtk_widget_set_size_request(ow->txtTimestampFormat, 80, 20);187 gtk_entry_set_width_chars(GTK_ENTRY(ow->txtTimestampFormat), 15); 145 188 gtk_box_pack_start(GTK_BOX(hbox), label, false, 0, 0); 146 189 gtk_box_pack_start(GTK_BOX(hbox), ow->txtTimestampFormat, false, 0, 0); 147 190 gtk_table_attach(GTK_TABLE(table), hbox, 1, 2, 2, 3, 148 GtkAttachOptions(GTK_FILL | GTK_EXPAND),149 GTK_FILL, 3,3);191 GtkAttachOptions(GTK_FILL | GTK_EXPAND), 192 GTK_FILL, 3, 3); 150 193 151 194 // Receive colors 152 195 ow->chkRecvColors = gtk_check_button_new_with_label("Receive Colors"); 153 196 gtk_table_attach(GTK_TABLE(table), ow->chkRecvColors, 0, 1, 3, 4, 154 GtkAttachOptions(GTK_FILL | GTK_EXPAND),155 GTK_FILL, 3, 3);197 GtkAttachOptions(GTK_FILL | GTK_EXPAND), 198 GTK_FILL, 3, 3); 156 199 157 200 // Remember window position 158 ow->chkRememberWindowPos = gtk_check_button_new_with_label("Save Window Size and Position"); 201 ow->chkRememberWindowPos = 202 gtk_check_button_new_with_label("Save Window Position"); 159 203 gtk_table_attach(GTK_TABLE(table), ow->chkRememberWindowPos, 1, 2, 3, 4, 160 GtkAttachOptions(GTK_FILL | GTK_EXPAND), 161 GTK_FILL, 3, 3); 204 GtkAttachOptions(GTK_FILL | GTK_EXPAND), 205 GTK_FILL, 3, 3); 206 207 // The table for the color selection in the "Contact List Colors" frame 208 GtkWidget *color_frame = gtk_frame_new("Contact list colors"); 209 gtk_container_set_border_width(GTK_CONTAINER(color_frame), 10); 210 gtk_box_pack_start(GTK_BOX(general_vbox), color_frame, FALSE, FALSE, 5); 211 GtkWidget *color_box = hbutton_box_new(15, GTK_BUTTONBOX_SPREAD); 212 gtk_container_set_border_width(GTK_CONTAINER(color_box), 10); 213 gtk_container_add(GTK_CONTAINER(color_frame), color_box); 214 215 gtk_container_add(GTK_CONTAINER(color_box), 216 color_button_new("Online", online_color)); 217 gtk_container_add(GTK_CONTAINER(color_box), 218 color_button_new("Offline", offline_color)); 219 gtk_container_add(GTK_CONTAINER(color_box), 220 color_button_new("Away", away_color)); 162 221 163 222 // Put the table in the notebook 164 label = gtk_label_new("General"); 165 gtk_notebook_append_page(GTK_NOTEBOOK(notebook), table, label); 166 167 /**************** Second tab: Contact List Colors ****************/ 168 169 // Recreate the table 170 table = gtk_table_new(5, 2, FALSE); 171 172 // The table for the color selection in the "Contact List Colors" frame 173 GtkWidget *clr_table = gtk_table_new(3, 3, FALSE); 174 175 // Colors frame and attach it to the table and also a table for inside 176 // the frame 177 GtkWidget *color_frame = gtk_frame_new("Contact List Colors"); 178 gtk_table_attach(GTK_TABLE(table), color_frame, 0, 1, 0, 1, 179 GTK_FILL, GTK_FILL, 3, 3); 180 gtk_container_add(GTK_CONTAINER(color_frame), clr_table); 181 182 // Online color label 183 label = gtk_label_new("Online Color"); 184 gtk_table_attach(GTK_TABLE(clr_table), label, 0, 1, 0, 1, 185 GTK_FILL, GTK_FILL, 3, 3); 186 187 // Online color browse button 188 int *chg_on_color = new int; 189 *chg_on_color = 1; 190 191 GtkWidget *online_browse = gtk_button_new_with_label("Browse"); 192 g_signal_connect(G_OBJECT(online_browse), "clicked", 193 G_CALLBACK(show_on_color_dlg), 194 (gpointer)chg_on_color); 195 gtk_table_attach(GTK_TABLE(clr_table), online_browse, 2, 3, 0, 1, 196 GTK_FILL, GTK_FILL, 3, 3); 197 198 // Offline color labe 199 label = gtk_label_new("Offline Color"); 200 gtk_table_attach(GTK_TABLE(clr_table), label, 0, 1, 1, 2, 201 GTK_FILL, GTK_FILL, 3, 3); 202 203 // Offline color browse button 204 int *chg_off_color = new int; 205 *chg_off_color = 2; 206 207 GtkWidget *offline_browse = gtk_button_new_with_label("Browse"); 208 g_signal_connect(G_OBJECT(offline_browse), "clicked", 209 G_CALLBACK(show_on_color_dlg), 210 (gpointer)chg_off_color); 211 gtk_table_attach(GTK_TABLE(clr_table), offline_browse, 2, 3, 1, 2, 212 GTK_FILL, GTK_FILL, 3, 3); 213 214 // Away color label 215 label = gtk_label_new("Away Color"); 216 gtk_table_attach(GTK_TABLE(clr_table), label, 0, 1, 2, 3, 217 GTK_FILL, GTK_FILL, 3, 3); 218 219 // Offline color browse button 220 int *chg_away_color = new int; 221 *chg_away_color = 3; 222 223 GtkWidget *away_browse = gtk_button_new_with_label("Browse"); 224 g_signal_connect(G_OBJECT(away_browse), "clicked", 225 G_CALLBACK(show_on_color_dlg), (gpointer)chg_away_color); 226 gtk_table_attach(GTK_TABLE(clr_table), away_browse, 2, 3, 2, 3, 227 GTK_FILL, GTK_FILL, 3, 3); 228 229 label = gtk_label_new("Contact List"); 230 gtk_notebook_append_page(GTK_NOTEBOOK(notebook), table, label); 223 gtk_notebook_append_page(GTK_NOTEBOOK(notebook), general_vbox, 224 gtk_label_new("General")); 231 225 232 226 /********************* Third tab: Network *************************/ 233 227 234 table = gtk_table_new(5, 2, false);235 236 // ICQ Servers frame 237 GtkWidget *frmServers = gtk_frame_new("ICQ Servers");238 gtk_table_attach(GTK_TABLE(table), frmServers, 0, 1, 0, 1,239 GTK_FILL, GTK_FILL, 3, 3);228 GtkWidget *vbox = gtk_vbox_new(FALSE, 5); 229 gtk_container_set_border_width(GTK_CONTAINER(vbox), 5); 230 231 // ICQ Server frame 232 GtkWidget *frmServers = gtk_frame_new("Server settings"); 233 gtk_box_pack_start(GTK_BOX(vbox), frmServers, FALSE, FALSE, 0); 240 234 241 235 // Table inside the servers frame 242 GtkWidget *tblServers = gtk_table_new( 3, 2, false);236 GtkWidget *tblServers = gtk_table_new(2, 2, FALSE); 243 237 gtk_container_add(GTK_CONTAINER(frmServers), tblServers); 244 238 245 // CList of servers 246 GtkListStore *store = gtk_list_store_new(2, G_TYPE_STRING, G_TYPE_STRING); 247 ow->lstServers = gtk_tree_view_new_with_model(GTK_TREE_MODEL(store)); 248 g_object_unref(G_OBJECT(store)); 249 GtkCellRenderer *r_text = gtk_cell_renderer_text_new(); 250 GtkTreeViewColumn *col = 251 gtk_tree_view_column_new_with_attributes( 252 "Server", r_text, "text", 0, NULL); 253 gtk_tree_view_append_column(GTK_TREE_VIEW(ow->lstServers), col); 254 col = gtk_tree_view_column_new_with_attributes( 255 "Port", r_text, "text", 0, NULL); 256 gtk_tree_view_append_column(GTK_TREE_VIEW(ow->lstServers), col); 257 gtk_table_attach(GTK_TABLE(tblServers), ow->lstServers, 0, 2, 0, 1, 258 GTK_FILL, GTK_FILL, 3, 3); 259 239 label = gtk_label_new("ICQ server:"); 240 gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.5); 241 gtk_table_attach(GTK_TABLE(tblServers), label, 0, 1, 0, 1, 242 GTK_FILL, GTK_FILL, 3, 3); 243 ow->icqServer = gtk_entry_new(); 244 gtk_entry_set_width_chars(GTK_ENTRY(ow->icqServer), 20); 245 gtk_table_attach(GTK_TABLE(tblServers), ow->icqServer, 1, 2, 0, 1, 246 GtkAttachOptions(GTK_EXPAND | GTK_FILL), 247 GtkAttachOptions(GTK_EXPAND | GTK_FILL), 3, 3); 248 260 249 // Default server port 261 label = gtk_label_new("Default server port:"); 250 label = gtk_label_new("ICQ server port:"); 251 gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.5); 262 252 gtk_table_attach(GTK_TABLE(tblServers), label, 0, 1, 1, 2, 263 GtkAttachOptions(GTK_EXPAND | GTK_FILL), 264 GtkAttachOptions(GTK_EXPAND | GTK_FILL), 3, 3); 265 253 GTK_FILL, GTK_FILL, 3, 3); 254 266 255 // Spin button and it's adjustment 267 GtkAdjustment *adjPort = 268 (GtkAdjustment *)gtk_adjustment_new( 269 0, 1.0, 65535.0, 1.0, 15.0, 15.0); 270 ow->spnDefPort = gtk_spin_button_new(adjPort, 25.0, 0); 271 gtk_spin_button_set_update_policy(GTK_SPIN_BUTTON(ow->spnDefPort), 272 GTK_UPDATE_IF_VALID); 273 gtk_spin_button_set_numeric(GTK_SPIN_BUTTON(ow->spnDefPort), true); 274 gtk_table_attach(GTK_TABLE(tblServers), ow->spnDefPort, 1, 2, 1, 2, 275 GtkAttachOptions(GTK_EXPAND | GTK_FILL), 276 GtkAttachOptions(GTK_EXPAND | GTK_FILL), 3, 3); 256 ow->icqServerPort = gtk_spin_button_new_with_range(1, 65535, 1); 257 258 gtk_table_attach(GTK_TABLE(tblServers), ow->icqServerPort, 1, 2, 1, 2, 259 GtkAttachOptions(GTK_EXPAND | GTK_FILL), 260 GtkAttachOptions(GTK_EXPAND | GTK_FILL), 3, 3); 277 261 278 262 // Firewall frame 279 GtkWidget *frmFirewall = gtk_frame_new("Firewall Settings"); 280 gtk_table_attach(GTK_TABLE(table), frmFirewall, 1, 2, 0, 1, 281 GTK_FILL, GTK_FILL, 3, 3); 263 GtkWidget *frmFirewall = gtk_frame_new("Firewall settings"); 264 gtk_box_pack_start(GTK_BOX(vbox), frmFirewall, FALSE, FALSE, 0); 282 265 283 266 // Table inside the firewall frame 284 GtkWidget *tblFirewall = gtk_table_new( 3, 2, false);267 GtkWidget *tblFirewall = gtk_table_new(4, 2, false); 285 268 gtk_container_add(GTK_CONTAINER(frmFirewall), tblFirewall); 286 269 287 270 ow->chkBehindFirewall = gtk_check_button_new_with_label( 288 "I am behind a firewall/proxy");271 "I am behind a firewall/proxy"); 289 272 gtk_table_attach(GTK_TABLE(tblFirewall), ow->chkBehindFirewall, 290 0, 1, 0, 1, GTK_FILL, GTK_FILL, 3, 3); 291 292 ow->btnSOCKS = gtk_button_new_with_mnemonic("SOCKS5 _Proxy"); 273 0, 2, 0, 1, GTK_FILL, GTK_FILL, 3, 3); 274 275 /* 276 ow->btnSOCKS = gtk_button_new_with_mnemonic("SOCKS5 _Proxy"); 293 277 //gtk_signal_connect(GTK_OBJECT(ow->btnSOCKS), "clicked", 294 278 // GTK_SIGNAL_FUNC(SOCKSClicked), 0); 295 279 gtk_table_attach(GTK_TABLE(tblFirewall), ow->btnSOCKS, 0, 1, 1, 2, 296 GtkAttachOptions(0), 297 GtkAttachOptions(0), 3, 3); 298 299 300 // Box for the firewall host and entry 301 GtkWidget *boxHBox = gtk_hbox_new(false, 0); 302 303 label = gtk_label_new("Firewall/Proxy Host:"); 304 gtk_box_pack_start(GTK_BOX(boxHBox), label, false, false, 1); 280 GtkAttachOptions(0), 281 GtkAttachOptions(0), 3, 3); 282 */ 283 284 label = gtk_label_new("Firewall/proxy host:"); 285 gtk_table_attach(GTK_TABLE(tblFirewall), label, 286 0, 1, 1, 2, GTK_FILL, GTK_FILL, 3, 3); 287 //gtk_box_pack_start(GTK_BOX(boxHBox), label, false, false, 1); 305 288 306 289 ow->txtFirewallHost = gtk_entry_new(); 307 gtk_widget_set_size_request(ow->txtFirewallHost, 100, 15);308 gtk_ box_pack_start(GTK_BOX(boxHBox), ow->txtFirewallHost, false, false, 1);309 310 gtk_table_attach(GTK_TABLE(tblFirewall), boxHBox, 0, 2, 2, 3,311 GtkAttachOptions(GTK_EXPAND | GTK_FILL),312 GtkAttachOptions(GTK_EXPAND | GTK_FILL), 1, 3);290 gtk_entry_set_width_chars(GTK_ENTRY(ow->txtFirewallHost), 20); 291 gtk_table_attach(GTK_TABLE(tblFirewall), ow->txtFirewallHost, 292 1, 2, 1, 2, 293 GtkAttachOptions(GTK_EXPAND | GTK_FILL), 294 GtkAttachOptions(GTK_EXPAND | GTK_FILL), 295 3, 3); 313 296 314 297 ow->chkTCPEnabled = gtk_check_button_new_with_label( 315 "I can receive direct connections"); 316 gtk_table_attach(GTK_TABLE(tblFirewall), ow->chkTCPEnabled, 0, 1, 3, 4, 317 GTK_FILL, GTK_FILL, 3, 3); 318 319 boxHBox = gtk_hbox_new(false, 2); 320 298 "I can receive direct connections"); 299 gtk_table_attach(GTK_TABLE(tblFirewall), ow->chkTCPEnabled, 0, 2, 2, 3, 300 GTK_FILL, GTK_FILL, 3, 3); 301 321 302 // Port range 322 label = gtk_label_new("Port Range:"); 323 gtk_box_pack_start(GTK_BOX(boxHBox), label, false, false, 0); 324 325 // Adjustments 326 adjPort = (GtkAdjustment *)gtk_adjustment_new( 327 0, 0.0, 65535.0, 15.0, 100.0, 100.0); 328 ow->spnPortLow = gtk_spin_button_new(adjPort, 25.0, 0); 329 330 adjPort = (GtkAdjustment *)gtk_adjustment_new( 331 0, 0.0, 65535.0, 15.0, 100.0, 100.0); 332 ow->spnPortHigh = gtk_spin_button_new(adjPort, 25.0, 0); 303 label = gtk_label_new("Port range:"); 304 gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.5); 305 gtk_table_attach(GTK_TABLE(tblFirewall), label, 306 0, 1, 3, 4, GTK_FILL, GTK_FILL, 3, 3); 307 308 // Spinbuttons 309 GtkWidget *boxHBox = gtk_hbox_new(false, 2); 310 ow->spnPortLow = gtk_spin_button_new_with_range(0, 65535, 1); 333 311 label = gtk_label_new("to"); 334 335 // Resize the spin buttons 312 ow->spnPortHigh = gtk_spin_button_new_with_range(0, 65535, 1); 313 314 // Add spin buttons to the box 336 315 gtk_box_pack_start(GTK_BOX(boxHBox), ow->spnPortLow, false, false, 0); 337 316 gtk_box_pack_start(GTK_BOX(boxHBox), label, false, false, 0); 338 317 gtk_box_pack_start(GTK_BOX(boxHBox), ow->spnPortHigh, false, false, 0); 339 318 340 gtk_table_attach(GTK_TABLE(tblFirewall), boxHBox, 0, 2, 4, 5,341 GtkAttachOptions(GTK_EXPAND | GTK_FILL),342 GtkAttachOptions(GTK_EXPAND | GTK_FILL), 3, 3);343 344 label = gtk_label_new("Network");345 gtk_notebook_append_page(GTK_NOTEBOOK(notebook), table, label);319 gtk_table_attach(GTK_TABLE(tblFirewall), boxHBox, 1, 2, 3, 4, 320 GtkAttachOptions(GTK_EXPAND | GTK_FILL), 321 GtkAttachOptions(GTK_EXPAND | GTK_FILL), 3, 3); 322 323 gtk_notebook_append_page(GTK_NOTEBOOK(notebook), vbox, 324 gtk_label_new("Network")); 346 325 347 326 /********************* Fourth tab: Status *************************/ 348 327 349 table = gtk_table_new(4, 2, false); 350 328 GtkWidget *status_vbox = gtk_vbox_new(FALSE, 5); 329 gtk_container_set_border_width(GTK_CONTAINER(status_vbox), 5); 330 351 331 GtkWidget *frmAutoLogon = gtk_frame_new("Auto Logon"); 352 332 gtk_box_pack_start(GTK_BOX(status_vbox), frmAutoLogon, FALSE, FALSE, 0); 333 353 334 // Box for the combo box and check button 354 335 GtkWidget *boxALBox = gtk_vbox_new(false, 5); 355 356 // Combox box with the options 357 GList *lItems = 0; 358 lItems = g_list_append(lItems, const_cast<char *>("(None)")); 359 lItems = g_list_append(lItems, const_cast<char *>("Online")); 360 lItems = g_list_append(lItems, const_cast<char *>("Free For Chat")); 361 lItems = g_list_append(lItems, const_cast<char *>("Away")); 362 lItems = g_list_append(lItems, const_cast<char *>("Not Available")); 363 lItems = g_list_append(lItems, const_cast<char *>("Occupied")); 364 lItems = g_list_append(lItems, const_cast<char *>("Do Not Disturb")); 365 366 ow->cmbAutoLogon = gtk_combo_new(); 367 gtk_combo_set_popdown_strings(GTK_COMBO(ow->cmbAutoLogon), lItems); 368 336 gtk_container_add(GTK_CONTAINER(frmAutoLogon), boxALBox); 337 338 ow->cmbAutoLogon = gtk_option_menu_new(); 369 339 gtk_box_pack_start(GTK_BOX(boxALBox), ow->cmbAutoLogon, false, false, 0); 340 341 GtkWidget *menu = gtk_menu_new(); 342 gtk_option_menu_set_menu(GTK_OPTION_MENU(ow->cmbAutoLogon), menu); 343 gtk_menu_shell_append(GTK_MENU_SHELL(menu), 344 gtk_menu_item_new_with_label("Offline")); 345 gtk_menu_shell_append(GTK_MENU_SHELL(menu), 346 gtk_menu_item_new_with_label("Online")); 347 gtk_menu_shell_append(GTK_MENU_SHELL(menu), 348 gtk_menu_item_new_with_label("Free For Chat")); 349 gtk_menu_shell_append(GTK_MENU_SHELL(menu), 350 gtk_menu_item_new_with_label("Away")); 351 gtk_menu_shell_append(GTK_MENU_SHELL(menu), 352 gtk_menu_item_new_with_label("Not Available")); 353 gtk_menu_shell_append(GTK_MENU_SHELL(menu), 354 gtk_menu_item_new_with_label("Occupied")); 355 gtk_menu_shell_append(GTK_MENU_SHELL(menu), 356 gtk_menu_item_new_with_label("Do Not Disturb")); 370 357 371 358 // Check button for invisible 372 359 ow->chkInvisible = gtk_check_button_new_with_label("Invisible"); 373 gtk_box_pack_start(GTK_BOX(boxALBox), ow->chkInvisible, false, false, 0); 374 375 gtk_container_add(GTK_CONTAINER(frmAutoLogon), boxALBox); 376 377 label = gtk_label_new("Status"); 378 gtk_notebook_append_page(GTK_NOTEBOOK(notebook), frmAutoLogon, label); 360 gtk_box_pack_start(GTK_BOX(boxALBox), ow->chkInvisible, false, false, 5); 361 362 GtkWidget *frame = gtk_frame_new("Auto timeouts (seconds)"); 363 gtk_box_pack_start(GTK_BOX(status_vbox), frame, FALSE, FALSE, 0); 364 GtkWidget *tbl = gtk_table_new(3, 2, FALSE); 365 gtk_container_add(GTK_CONTAINER(frame), tbl); 366 367 gtk_table_attach(GTK_TABLE(tbl), gtk_label_new("Away timeout:"), 368 0, 1, 0, 1, GTK_FILL, GTK_FILL, 3, 3); 369 ow->auto_away_time = gtk_spin_button_new_with_range(0, 24 * 60 * 60, 1); 370 gtk_table_attach(GTK_TABLE(tbl), ow->auto_away_time, 371 1, 2, 0, 1, GTK_FILL, GTK_FILL, 3, 3); 372 373 gtk_table_attach(GTK_TABLE(tbl), gtk_label_new("NA timeout:"), 374 0, 1, 1, 2, GTK_FILL, GTK_FILL, 3, 3); 375 ow->auto_na_time = gtk_spin_button_new_with_range(0, 24 * 60 * 60, 1); 376 gtk_table_attach(GTK_TABLE(tbl), ow->auto_na_time, 377 1, 2, 1, 2, GTK_FILL, GTK_FILL, 3, 3); 378 379 gtk_table_attach(GTK_TABLE(tbl), gtk_label_new("Offline timeout:"), 380 0, 1, 2, 3, GTK_FILL, GTK_FILL, 3, 3); 381 ow->auto_offline_time = gtk_spin_button_new_with_range(0, 24 * 60 * 60, 1); 382 gtk_table_attach(GTK_TABLE(tbl), ow->auto_offline_time, 383 1, 2, 2, 3, GTK_FILL, GTK_FILL, 3, 3); 384 385 gtk_notebook_append_page(GTK_NOTEBOOK(notebook), status_vbox, 386 gtk_label_new("Status")); 379 387 380 388 /********************* END OF ALL THE TABS ************************/ … … 384 392 385 393 /* The close button */ 386 close = gtk_button_new_with_mnemonic("_Done"); 387 gtk_box_pack_start(GTK_BOX(v_box), close, FALSE, FALSE, 0); 394 GtkWidget *close = gtk_button_new_with_mnemonic("_Apply"); 395 GtkWidget *cancel = gtk_button_new_from_stock(GTK_STOCK_CANCEL); 396 GtkWidget *bbox = hbutton_box_new(); 397 gtk_container_add(GTK_CONTAINER(bbox), close); 398 gtk_container_add(GTK_CONTAINER(bbox), cancel); 399 gtk_box_pack_start(GTK_BOX(v_box), bbox, FALSE, FALSE, 0); 388 400 g_signal_connect(G_OBJECT(close), "clicked", 389 G_CALLBACK(done_options), (gpointer)ow); 401 G_CALLBACK(done_options), ow); 402 g_signal_connect(G_OBJECT(cancel), "clicked", 403 G_CALLBACK(window_close), ow->window); 404 g_signal_connect(G_OBJECT(ow->window), "destroy", 405 G_CALLBACK(destroy_cb), &ow); 390 406 391 407 // Set all the options now … … 395 411 } 396 412 397 void set_options(struct options_window *ow) 413 void 414 set_options(struct options_window *ow) 398 415 { 399 416 // Check boxes for contact list apperance 400 417 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(ow->show_ignored), 401 show_ignored_users);418 show_ignored_users); 402 419 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(ow->show_offline), 403 show_offline_users);420 show_offline_users); 404 421 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(ow->enter_sends), 405 enter_sends);422 enter_sends); 406 423 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(ow->flash_events), 407 flash_events);424 flash_events); 408 425 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(ow->show_timestamp), 409 show_convo_timestamp);426 show_convo_timestamp); 410 427 gtk_entry_set_text(GTK_ENTRY(ow->txtTimestampFormat), 411 timestamp_format);428 timestamp_format); 412 429 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(ow->chkRecvColors), 413 recv_colors);430 recv_colors); 414 431 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(ow->chkRememberWindowPos), 415 remember_window_pos);416 417 // Clist of servers 418 419 // Default server port 420 // gtk_spin_button_set_value(GTK_SPIN_BUTTON(ow->spnDefPort),421 // icq_daemon->getDefaultRemotePort());422 432 remember_window_pos); 433 434 // ICQ Server and port 435 gtk_entry_set_text(GTK_ENTRY(ow->icqServer), 436 icq_daemon->ICQServer()); 437 gtk_spin_button_set_value(GTK_SPIN_BUTTON(ow->icqServerPort), 438 icq_daemon->ICQServerPort()); 439 423 440 // Firewall stuff 424 441 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(ow->chkTCPEnabled), 425 icq_daemon->TCPEnabled());442 icq_daemon->TCPEnabled()); 426 443 gtk_spin_button_set_value(GTK_SPIN_BUTTON(ow->spnPortLow), 427 icq_daemon->TCPPortsLow());444 icq_daemon->TCPPortsLow()); 428 445 gtk_spin_button_set_value(GTK_SPIN_BUTTON(ow->spnPortHigh), 429 icq_daemon->TCPPortsHigh());446 icq_daemon->TCPPortsHigh()); 430 447 431 448 // Auto Logon 432 char szStatus[15]; 433 if (auto_logon & ICQ_STATUS_DND) 434 { 435 strcpy(szStatus, "Do Not Disturb"); 436 } 449 if (auto_logon & ICQ_STATUS_OFFLINE) 450 gtk_option_menu_set_history(GTK_OPTION_MENU(ow->cmbAutoLogon), 0); 451 else if (auto_logon & ICQ_STATUS_ONLINE) 452 gtk_option_menu_set_history(GTK_OPTION_MENU(ow->cmbAutoLogon), 1); 453 else if (auto_logon & ICQ_STATUS_FREEFORCHAT) 454 gtk_option_menu_set_history(GTK_OPTION_MENU(ow->cmbAutoLogon), 2); 455 else if (auto_logon & ICQ_STATUS_AWAY) 456 gtk_option_menu_set_history(GTK_OPTION_MENU(ow->cmbAutoLogon), 3); 457 else if (auto_logon & ICQ_STATUS_NA) 458 gtk_option_menu_set_history(GTK_OPTION_MENU(ow->cmbAutoLogon), 4); 437 459 else if (auto_logon & ICQ_STATUS_OCCUPIED) 438 { 439 strcpy(szStatus, "Occupied"); 440 } 441 else if (auto_logon & ICQ_STATUS_NA) 442 { 443 strcpy(szStatus, "Not Available"); 444 } 445 else if (auto_logon & ICQ_STATUS_AWAY) 446 { 447 strcpy(szStatus, "Away"); 448 } 449 else if (auto_logon & ICQ_STATUS_FREEFORCHAT) 450 { 451 strcpy(szStatus, "Free For Chat"); 452 } 453 else if (auto_logon & ICQ_STATUS_ONLINE) 454 { 455 strcpy(szStatus, "Online"); 456 } 457 else 458 { 459 strcpy(szStatus, "(None)"); 460 } 461 462 gtk_entry_set_text(GTK_ENTRY(GTK_COMBO(ow->cmbAutoLogon)->entry),
