📄 setup.c
字号:
gchar tmp[MAXLINE];gchar fs[MAXLINE];gint free, sum;gint i;GdkCursor *cursor,*normal_cursor;GdkWindowAttr *win_attr;gchar *mnt;gint marktodelete; /* set watch-cursor */ gdk_window_get_user_data(GTK_WIDGET(toplevel)->window, (gpointer) &win_attr); normal_cursor = win_attr->cursor; cursor = gdk_cursor_new(GDK_WATCH); gdk_window_set_cursor(GTK_WIDGET(toplevel)->window,cursor); /* give gtk time to update cursor */ gtk_main_iteration_do(FALSE); marktodelete = -1; sum = 0; /* loop through all rows */ for (i = 0; i < clist->rows; i++) { gtk_clist_get_text(clist,i,0,data); mnt = (gchar *)gtk_clist_get_row_data(clist,i); free = get_free_space(data[0],fs); convert_kbytes2mbminstring(free,tmp); gtk_clist_set_text(clist,i,1,tmp); /* not yet a filesystem registred (updated) for this path? */ if (mnt == NULL) { /* do it now */ gtk_clist_set_row_data(clist,i,g_strdup(fs)); } /* now check if the new updated filesystem is already in use (should never happen - but may possible if the user repartitioned its drive without telling xcdroast) */ if (fs_in_use2(clist,fs,i) == 1) { /* mark the conflicting entry */ marktodelete = i; continue; } /* add sizes up */ sum+=free; } convert_kbytes2mbminstring(sum,tmp); gtk_label_set_text(GTK_LABEL(updatesum_label),tmp); /* normal cursor */ normal_cursor = gdk_cursor_new (GDK_TOP_LEFT_ARROW); gdk_window_set_cursor(GTK_WIDGET(toplevel)->window,normal_cursor); /* if we found a conflicting entry - delete it now */ if (marktodelete != -1) { g_free(gtk_clist_get_row_data(clist,marktodelete)); gtk_clist_remove(clist,marktodelete); show_dialog(ICO_WARN,text(81),T_OK,NULL,NULL,0); }}void remove_imagepath_callback(GtkWidget *widget, GtkCList *clist) {GList *sel;gint row; sel = clist->selection; if (sel != NULL) { row = GPOINTER_TO_INT(sel->data); g_free(gtk_clist_get_row_data(clist,row)); gtk_clist_remove(clist,row); } else { show_dialog(ICO_INFO,text(77),T_OK,NULL,NULL,0); }}/* draw hd-setup screen */void draw_hd_setup(GtkWidget *win) {GtkWidget *vbox;GtkWidget *scrolled_win;GtkWidget *f1,*l1;gchar *titles[2];gchar *data[2];GtkWidget *list;GtkCList *clist;GList *loop;GtkWidget *tbl;GtkWidget *b1;GtkWidget *e1;gint row;#ifdef PRIV_COLS GtkStyle *style;GdkColor c;#endif vbox = gtk_vbox_new(FALSE,0); gtk_container_add(GTK_CONTAINER(win),vbox); gtk_container_set_border_width(GTK_CONTAINER(vbox),10); gtk_widget_show(vbox); f1 = gtk_frame_new(text(40)); set_font_and_color(f1,BOLDFONT,NULL); gtk_box_pack_start(GTK_BOX(vbox),f1,TRUE,TRUE,0); gtk_widget_show(f1); scrolled_win = gtk_scrolled_window_new (NULL, NULL); gtk_container_set_border_width (GTK_CONTAINER (scrolled_win), 5); gtk_container_add(GTK_CONTAINER(f1),scrolled_win); gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_win), GTK_POLICY_AUTOMATIC,GTK_POLICY_AUTOMATIC); gtk_widget_show(scrolled_win); titles[0] = text(41); titles[1] = text(42); list = gtk_clist_new_with_titles(2,titles); gtk_widget_set_usize(GTK_WIDGET(list),0,tbf(150)); gtk_container_add (GTK_CONTAINER (scrolled_win), list); clist = GTK_CLIST(list); gtk_clist_set_column_auto_resize(clist, 1, TRUE); clist_list = clist;#ifdef PRIV_COLS gdk_color_parse(GTKLISTCOL,&c); gdk_color_alloc(gtk_widget_get_colormap(list),&c); style = gtk_style_copy(gtk_widget_get_style(list)); style->base[GTK_STATE_NORMAL] = c; gtk_widget_set_style(GTK_WIDGET(list),style);#endif gtk_clist_set_column_width(clist,0,tbf(300)); /* now fill list with current values */ loop = g_list_first(setupdata.image_dirs); while (loop) { data[0] = (gchar *)loop->data; data[1] = " -"; row = gtk_clist_append(clist,data); gtk_clist_set_row_data(clist,row,NULL); loop = loop->next; } gtk_widget_show(list); tbl = gtk_table_new(4,8,TRUE); gtk_table_set_row_spacings(GTK_TABLE(tbl),5); gtk_table_set_col_spacings(GTK_TABLE(tbl),5); gtk_table_set_col_spacing(GTK_TABLE(tbl),1,10); gtk_table_set_col_spacing(GTK_TABLE(tbl),2,10); gtk_box_pack_start(GTK_BOX(vbox),tbl,FALSE,TRUE,10); gtk_widget_show(tbl); l1 = rightjust_gtk_label_new(text(43)); gtk_table_attach_defaults(GTK_TABLE(tbl),l1,0,3,0,1); gtk_widget_show(l1); f1 = gtk_frame_new(NULL); gtk_frame_set_shadow_type(GTK_FRAME(f1),GTK_SHADOW_IN); gtk_table_attach_defaults(GTK_TABLE(tbl),f1,3,6,0,1); gtk_widget_show(f1); l1 = gtk_label_new(""); updatesum_label = l1; gtk_container_add(GTK_CONTAINER(f1),l1); gtk_widget_show(l1); b1 = gtk_button_new_with_label(text(44)); updatebutton = b1; gtk_table_attach_defaults(GTK_TABLE(tbl),b1,6,8,0,1); gtk_signal_connect (GTK_OBJECT (b1), "clicked", GTK_SIGNAL_FUNC(update_imagepath_callback),clist); gtk_widget_show(b1); define_tooltip(b1,help(17)); l1 = rightjust_gtk_label_new(text(46)); gtk_table_attach_defaults(GTK_TABLE(tbl),l1,0,2,2,3); gtk_widget_show(l1); e1 = gtk_entry_new(); clist_entry = e1; gtk_signal_connect(GTK_OBJECT(e1), "activate", GTK_SIGNAL_FUNC(entry_imagepath_callback),clist); gtk_table_attach_defaults(GTK_TABLE(tbl),e1,2,6,2,3); gtk_widget_show(e1); b1 = gtk_button_new_with_label(text(45)); gtk_table_attach_defaults(GTK_TABLE(tbl),b1,6,8,2,3); gtk_signal_connect (GTK_OBJECT (b1), "clicked", GTK_SIGNAL_FUNC(button_imagepath_callback),NULL); gtk_widget_show(b1); define_tooltip(b1,help(18)); b1 = gtk_button_new_with_label(text(47)); gtk_table_attach_defaults(GTK_TABLE(tbl),b1,2,4,3,4); gtk_signal_connect(GTK_OBJECT(b1), "clicked", GTK_SIGNAL_FUNC(entry_imagepath_callback),clist); gtk_widget_show(b1); define_tooltip(b1,help(19)); b1 = gtk_button_new_with_label(text(48)); gtk_table_attach_defaults(GTK_TABLE(tbl),b1,4,6,3,4); gtk_signal_connect(GTK_OBJECT(b1), "clicked", GTK_SIGNAL_FUNC(remove_imagepath_callback),clist); gtk_widget_show(b1); define_tooltip(b1,help(20));}/* callbacks for misc-menu */void dspdevice_selected(GtkWidget *item, gchar *device) { g_free(setupdata.dsp_device); setupdata.dsp_device = g_strdup(device); /* set dsp-test-button to active when we set a dsp-device */ if (strcmp(setupdata.dsp_device,"") != 0) { gtk_widget_set_sensitive(btn_testdsp, TRUE); } else { gtk_widget_set_sensitive(btn_testdsp, FALSE); }}void dsptest_callback(GtkWidget *widget, gpointer data) { show_setup_dsptest();}void notifyvia_selected(GtkWidget *item, gpointer data) { setupdata.notify_via = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(item));}void notifyat_selected(GtkWidget *item, gpointer data) { setupdata.notify_at = GPOINTER_TO_INT(data); }void cddb_entry1_callback(GtkWidget *widget, gpointer data) {gchar tmp[MAXLINE]; g_free(setupdata.cddb_host); strcpy(tmp, gtk_entry_get_text(GTK_ENTRY(widget))); strip_string(tmp); setupdata.cddb_host = g_strdup(tmp); gtk_entry_set_text(GTK_ENTRY(widget), tmp); gtk_entry_select_region(GTK_ENTRY(widget), 0, GTK_ENTRY(widget)->text_length);}void cddb_entry2_callback(GtkWidget *widget, gpointer data) {gchar tmp[MAXLINE]; setupdata.cddb_port = atoi(gtk_entry_get_text(GTK_ENTRY(widget))); g_snprintf(tmp, MAXLINE,"%d",setupdata.cddb_port); gtk_entry_set_text(GTK_ENTRY(widget),tmp); gtk_entry_select_region(GTK_ENTRY(widget), 0, GTK_ENTRY(widget)->text_length);}void logfile_entry_callback(GtkWidget *widget, gpointer data) {gchar tmp[MAXLINE]; g_free(setupdata.logfile); strcpy(tmp, gtk_entry_get_text(GTK_ENTRY(widget))); check_tilde(tmp); setupdata.logfile = g_strdup(tmp); gtk_entry_set_text(GTK_ENTRY(widget), tmp); gtk_entry_select_region(GTK_ENTRY(widget), 0, GTK_ENTRY(widget)->text_length);}void logfile_browse_callback(GtkWidget *widget, GtkEntry *entry) {char tmp[MAXLINE]; show_file_selector(gtk_entry_get_text(entry),tmp); if (strcmp(tmp,"") != 0) { gtk_entry_set_text(entry,tmp); g_free(setupdata.logfile); setupdata.logfile = g_strdup(gtk_entry_get_text(entry)); }}void loglevel_selected(GtkWidget *item, gpointer level) { setupdata.loglevel = GPOINTER_TO_INT(level);}void language_selected(GtkWidget *item, gpointer lang) { setupdata.language = GPOINTER_TO_INT(lang);}/* draw misc-setup screen */void draw_misc_setup(GtkWidget *win) {GtkWidget *vbox;GtkWidget *f1,*l1,*b1,*e1;GtkWidget *tbl;GtkWidget *omenu;GtkWidget *menu;GtkWidget *menu_item;GSList *group;GtkWidget *btn;GList *dsp;gint i;gint menuhistory, menuidx, menulang;gchar tmp[MAXLINE]; vbox = gtk_vbox_new(FALSE,0); gtk_container_add(GTK_CONTAINER(win),vbox); gtk_container_set_border_width(GTK_CONTAINER(vbox),10); gtk_widget_show(vbox); f1 = gtk_frame_new(text(49)); set_font_and_color(f1,BOLDFONT,NULL); gtk_box_pack_start(GTK_BOX(vbox),f1,FALSE,TRUE,0); gtk_widget_show(f1); tbl = gtk_table_new(4,8,TRUE); gtk_container_add (GTK_CONTAINER (f1), tbl); gtk_table_set_col_spacings(GTK_TABLE(tbl),5); gtk_table_set_col_spacing(GTK_TABLE(tbl),2,10); gtk_widget_show(tbl); l1 = rightjust_gtk_label_new(text(50)); gtk_table_attach_defaults(GTK_TABLE(tbl),l1,1,3,0,1); gtk_widget_show(l1); /* get a list of all dsp-devices */ dsp = get_dsp_devices(); omenu = gtk_option_menu_new (); menu = gtk_menu_new(); menuidx = 0; menuhistory = 0; /* "none"-setting */ menu_item = gtk_menu_item_new_with_label(text(82)); gtk_signal_connect(GTK_OBJECT(menu_item), "activate", GTK_SIGNAL_FUNC(dspdevice_selected), ""); gtk_menu_append (GTK_MENU (menu), menu_item); if (strcmp(setupdata.dsp_device,"") == 0) { menuhistory = menuidx; } menuidx++; gtk_widget_show (menu_item); while (dsp) { menu_item = gtk_menu_item_new_with_label((gchar *)dsp->data); gtk_signal_connect(GTK_OBJECT(menu_item), "activate", GTK_SIGNAL_FUNC(dspdevice_selected), (gchar *)dsp->data); gtk_menu_append (GTK_MENU (menu), menu_item); if (setupdata.dsp_device != NULL) { if (strcmp(setupdata.dsp_device,(gchar *)dsp->data) == 0) { menuhistory = menuidx; } } menuidx++; gtk_widget_show (menu_item); dsp = dsp->next; } gtk_option_menu_set_menu (GTK_OPTION_MENU (omenu), menu); gtk_option_menu_set_history(GTK_OPTION_MENU (omenu),menuhistory); gtk_table_attach_defaults(GTK_TABLE(tbl),omenu,3,6,0,1); gtk_widget_show(omenu); define_tooltip(omenu,help(21)); b1 = gtk_button_new_with_label(text(51)); btn_testdsp = b1; gtk_signal_connect (GTK_OBJECT (b1), "clicked", GTK_SIGNAL_FUNC(dsptest_callback),NULL); gtk_table_attach_defaults(GTK_TABLE(tbl),b1,6,7,0,1); gtk_widget_show(b1); define_tooltip(b1,help(22)); /* only allow test when device is set */ if (strcmp(setupdata.dsp_device,"") == 0) { gtk_widget_set_sensitive(btn_testdsp, FALSE); } l1 = rightjust_gtk_label_new(text(52)); gtk_table_attach_defaults(GTK_TABLE(tbl),l1,1,3,1,2); gtk_widget_show(l1); btn = gtk_radio_button_new_with_label(NULL,text(53)); gtk_table_attach_defaults(GTK_TABLE(tbl),btn,3,5,1,2); gtk_widget_show(btn); group = gtk_radio_button_group (GTK_RADIO_BUTTON(btn)); btn = gtk_radio_button_new_with_label(group,text(54)); gtk_signal_connect(GTK_OBJECT(btn),"clicked", GTK_SIGNAL_FUNC(notifyvia_selected),NULL); gtk_table_attach_defaults(GTK_TABLE(tbl),btn,5,7,1,2); gtk_widget_show(btn); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(btn), setupdata.notify_via); l1 = rightjust_gtk_label_new(text(55)); gtk_table_attach_defaults(GTK_TABLE(tbl),l1,1,3,2,3); gtk_widget_show(l1); btn = gtk_radio_button_new_with_label(NULL,text(56)); gtk_signal_connect(GTK_OBJECT(btn),"clicked", GTK_SIGNAL_FUNC(notifyat_selected),GINT_TO_POINTER(0)); gtk_table_attach_defaults(GTK_TABLE(tbl),btn,3,5,2,3); gtk_widget_show(btn); if (setupdata.notify_at == 0) gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(btn),1); group = gtk_radio_button_group (GTK_RADIO_BUTTON(btn)); btn = gtk_radio_button_new_with_label(group,text(57)); gtk_signal_connect(GTK_OBJECT(btn),"clicked", GTK_SIGNAL_FUNC(notifyat_selected),GINT_TO_POINTER(1)); gtk_table_attach_defaults(GTK_TABLE(tbl),btn,5,7,2,3); gtk_widget_show(btn); if (setupdata.notify_at == 1) gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(btn),1); group = gtk_radio_button_group (GTK_RADIO_BUTTON(btn)); btn = gtk_radio_button_new_with_label(group,text(58)); gtk_signal_connect(GTK_OBJECT(btn),"clicked", GTK_SIGNAL_FUNC(notifyat_selected),GINT_TO_POINTER(2)); gtk_table_attach_defaults(GTK_TABLE(tbl),btn,3,5,3,4); gtk_widget_show(btn); if (setupdata.notify_at == 2) gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(btn),1); group = gtk_radio_button_group (GTK_RADIO_BUTTON(btn)); btn = gtk_radio_button_new_with_label(group,text(59)); gtk_table_attach_defaults(GTK_TABLE(tbl),btn,5,7,3,4); gtk_signal_connect(GTK_OBJECT(btn),"clicked", GTK_SIGNAL_FUNC(notifyat_selected),GINT_TO_POINTER(3)); gtk_widget_show(btn); if (setupdata.notify_at == 3) gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(btn),1); f1 = gtk_frame_new(text(60)); set_font_and_color(f1,BOLDFONT,NULL);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -