static GtkWidget *about_create_child_page_release_notes(void) { GtkWidget *scrolledwin; GtkWidget *text; GtkTextBuffer *buffer; GtkTextIter iter; gchar *path, buf[1024]; FILE *fp; scrolledwin = gtk_scrolled_window_new(NULL, NULL); gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrolledwin), GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC); gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(scrolledwin), GTK_SHADOW_IN); text = gtk_text_view_new(); gtk_text_view_set_editable(GTK_TEXT_VIEW(text), FALSE); gtk_text_view_set_wrap_mode(GTK_TEXT_VIEW(text), GTK_WRAP_WORD); gtk_text_view_set_left_margin(GTK_TEXT_VIEW(text), 6); gtk_text_view_set_right_margin(GTK_TEXT_VIEW(text), 6); gtk_text_view_set_cursor_visible(GTK_TEXT_VIEW(text), FALSE); gtk_container_add(GTK_CONTAINER(scrolledwin), text); buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(text)); gtk_text_buffer_get_iter_at_offset(buffer, &iter, 0); path = g_strconcat(DOCDIR, G_DIR_SEPARATOR_S, RELEASE_NOTES_FILE, NULL); if ((fp = g_fopen(path, "rb")) == NULL) { if (ENOENT != errno) FILE_OP_ERROR(path, "fopen"); g_free(path); return scrolledwin; } g_free(path); while (fgets(buf, sizeof(buf), fp) != NULL) { const gchar *src_codeset = conv_get_locale_charset_str(); const gchar *dest_codeset = CS_UTF_8; gchar *tmp; tmp = conv_codeset_strdup(buf, src_codeset, dest_codeset); if (!tmp) { g_warning("Failed to convert character set of action configuration"); tmp = g_strdup(buf); } gtk_text_buffer_insert(buffer, &iter, tmp, -1); g_free(tmp); } fclose(fp); return scrolledwin; }
void prefs_actions_read_config(void) { gchar *rcpath; FILE *fp; gchar buf[PREFSBUFSIZE]; gchar *act; debug_print("Reading actions configurations...\n"); rcpath = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, ACTIONS_RC, NULL); if ((fp = g_fopen(rcpath, "rb")) == NULL) { if (ENOENT != errno) FILE_OP_ERROR(rcpath, "fopen"); g_free(rcpath); return; } g_free(rcpath); while (prefs_common.actions_list != NULL) { act = (gchar *)prefs_common.actions_list->data; prefs_common.actions_list = g_slist_remove(prefs_common.actions_list, act); g_free(act); } while (fgets(buf, sizeof(buf), fp) != NULL) { const gchar *src_codeset = conv_get_locale_charset_str(); const gchar *dest_codeset = CS_UTF_8; gchar *tmp; tmp = conv_codeset_strdup(buf, src_codeset, dest_codeset); if (!tmp) { g_warning("Failed to convert character set of action configuration\n"); tmp = g_strdup(buf); } g_strchomp(tmp); act = strstr(tmp, ": "); if (act && act[2] && action_get_type(&act[2]) != ACTION_ERROR) prefs_common.actions_list = g_slist_append(prefs_common.actions_list, tmp); else g_free(tmp); } fclose(fp); }
void prefs_actions_write_config(void) { gchar *rcpath; PrefFile *pfile; GSList *cur; debug_print("Writing actions configuration...\n"); rcpath = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, ACTIONS_RC, NULL); if ((pfile= prefs_write_open(rcpath)) == NULL) { g_warning("Failed to write configuration to file\n"); g_free(rcpath); return; } for (cur = prefs_common.actions_list; cur != NULL; cur = cur->next) { gchar *tmp = (gchar *)cur->data; const gchar *src_codeset = CS_UTF_8; const gchar *dest_codeset = conv_get_locale_charset_str(); gchar *act; act = conv_codeset_strdup(tmp, src_codeset, dest_codeset); if (!act) { g_warning("Failed to convert character set of action configuration\n"); act = g_strdup(act); } if (fputs(act, pfile->fp) == EOF || fputc('\n', pfile->fp) == EOF) { FILE_OP_ERROR(rcpath, "fputs || fputc"); prefs_file_close_revert(pfile); g_free(act); g_free(rcpath); return; } g_free(act); } g_free(rcpath); if (prefs_file_close(pfile) < 0) { g_warning("failed to write configuration to file\n"); return; } }
static GtkWidget *about_create_child_page_info(void) { GtkWidget *scrolledwin; GtkWidget *text; GtkTextBuffer *buffer; GtkTextIter iter; GdkColor uri_color; gchar buf[1024]; GtkTextTag *tag; #if HAVE_SYS_UTSNAME_H struct utsname utsbuf; #endif scrolledwin = gtk_scrolled_window_new(NULL, NULL); gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrolledwin), GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC); gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(scrolledwin), GTK_SHADOW_IN); text = gtk_text_view_new(); gtk_text_view_set_editable(GTK_TEXT_VIEW(text), FALSE); gtk_text_view_set_wrap_mode(GTK_TEXT_VIEW(text), GTK_WRAP_WORD); gtk_text_view_set_left_margin(GTK_TEXT_VIEW(text), 6); gtk_text_view_set_right_margin(GTK_TEXT_VIEW(text), 6); gtk_text_view_set_cursor_visible(GTK_TEXT_VIEW(text), FALSE); gtk_container_add(GTK_CONTAINER(scrolledwin), text); gtk_widget_add_events(text, GDK_LEAVE_NOTIFY_MASK); buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(text)); gtk_text_buffer_get_iter_at_offset(buffer, &iter, 0); /* textview link style (based upon main prefs) */ gtkut_convert_int_to_gdk_color(prefs_common.uri_col, (GdkColor*)&uri_color); tag = gtk_text_buffer_create_tag(buffer, "link", "foreground-gdk", &uri_color, "wrap-mode", GTK_WRAP_NONE, NULL); gtk_text_buffer_create_tag(buffer, "link-hover", "foreground-gdk", &uri_color, "underline", PANGO_UNDERLINE_SINGLE, NULL); gtk_text_buffer_insert(buffer, &iter, _( "Claws Mail is a lightweight, fast and " "highly-configurable email client.\n\n" "For further information visit the Claws Mail " "website:\n"), -1); gtk_text_buffer_insert_with_tags_by_name(buffer, &iter, HOMEPAGE_URI, -1, "link", NULL); gtk_text_buffer_insert(buffer, &iter, _("\n\n" "For support and discussion subscribe to the Claws Mail " "users' mailing list:\n"),-1); gtk_text_buffer_insert_with_tags_by_name(buffer, &iter, USERS_ML_URI, -1, "link", NULL); gtk_text_buffer_insert(buffer, &iter, _("\n\n" "Claws Mail is free software released " "under the GPL. If you wish to donate " "to the Claws Mail project you can do " "so at:\n"), -1); gtk_text_buffer_insert_with_tags_by_name(buffer, &iter, DONATE_URI, -1, "link", NULL); gtk_text_buffer_create_tag(buffer, "indented-list-item", "indent", 8, NULL); gtk_text_buffer_create_tag(buffer, "underlined-list-title", "underline", PANGO_UNDERLINE_SINGLE, NULL); #ifdef GENERIC_UMPC gtk_text_buffer_insert(buffer, &iter, _( "\n\nCopyright (C) 1999-2016\nThe Claws Mail Team\n" " and Hiroyuki Yamamoto"), -1); #endif gtk_text_buffer_insert_with_tags_by_name(buffer, &iter, (_("\n\nSystem Information\n")), -1, "underlined-list-title", NULL); #if HAVE_SYS_UTSNAME_H uname(&utsbuf); g_snprintf(buf, sizeof(buf),g_strconcat( "GTK+ %d.%d.%d / GLib %d.%d.%d\n", _("Locale: %s (charset: %s)\n" "Operating System: %s %s (%s)"), NULL), gtk_major_version, gtk_minor_version, gtk_micro_version, glib_major_version, glib_minor_version, glib_micro_version, conv_get_current_locale(), conv_get_locale_charset_str(), utsbuf.sysname, utsbuf.release, utsbuf.machine); #elif defined(G_OS_WIN32) g_snprintf(buf, sizeof(buf),g_strconcat( "GTK+ %d.%d.%d / GLib %d.%d.%d\n", _("Locale: %s (charset: %s)\n" "Operating System: %s"), NULL), gtk_major_version, gtk_minor_version, gtk_micro_version, glib_major_version, glib_minor_version, glib_micro_version, conv_get_current_locale(), conv_get_locale_charset_str(), "Win32"); #else g_snprintf(buf, sizeof(buf),g_strconcat( "GTK+ %d.%d.%d / GLib %d.%d.%d\n", _("Locale: %s (charset: %s)\n" "Operating System: unknown"), NULL), gtk_major_version, gtk_minor_version, gtk_micro_version, glib_major_version, glib_minor_version, glib_micro_version, conv_get_current_locale(), conv_get_locale_charset_str()); #endif gtk_text_buffer_insert_with_tags_by_name(buffer, &iter, buf, -1, "indented-list-item", NULL); gtk_text_buffer_insert(buffer, &iter, "\n", -1); g_signal_connect(G_OBJECT(tag), "event", G_CALLBACK(about_textview_uri_clicked), text); g_signal_connect(G_OBJECT(text), "motion-notify-event", G_CALLBACK(about_textview_motion_notify), text); g_signal_connect(G_OBJECT(text), "leave-notify-event", G_CALLBACK(about_textview_leave_notify), text); return scrolledwin; }
/*! *\brief show crash dialog * *\param text Description *\param debug_output Output text by gdb * *\return GtkWidget * Dialog widget */ static GtkWidget *crash_dialog_show(const gchar *text, const gchar *debug_output) { GtkWidget *window1; GtkWidget *vbox1; GtkWidget *hbox1; GtkWidget *label1; GtkWidget *frame1; GtkWidget *scrolledwindow1; GtkWidget *text1; GtkWidget *hbuttonbox3; GtkWidget *hbuttonbox4; GtkWidget *button3; GtkWidget *button4; GtkWidget *button5; gchar *crash_report; GtkTextBuffer *buffer; GtkTextIter iter; window1 = gtkut_window_new(GTK_WINDOW_TOPLEVEL, "crash"); gtk_container_set_border_width(GTK_CONTAINER(window1), 5); gtk_window_set_title(GTK_WINDOW(window1), _("Claws Mail has crashed")); gtk_window_set_position(GTK_WINDOW(window1), GTK_WIN_POS_CENTER); gtk_window_set_modal(GTK_WINDOW(window1), TRUE); gtk_window_set_default_size(GTK_WINDOW(window1), 460, 272); vbox1 = gtk_vbox_new(FALSE, 2); gtk_widget_show(vbox1); gtk_container_add(GTK_CONTAINER(window1), vbox1); hbox1 = gtk_hbox_new(FALSE, 4); gtk_widget_show(hbox1); gtk_box_pack_start(GTK_BOX(vbox1), hbox1, FALSE, TRUE, 0); gtk_container_set_border_width(GTK_CONTAINER(hbox1), 4); label1 = gtk_label_new (g_strdup_printf(_("%s.\nPlease file a bug report and include the information below."), text)); gtk_widget_show(label1); gtk_box_pack_start(GTK_BOX(hbox1), label1, TRUE, TRUE, 0); gtk_misc_set_alignment(GTK_MISC(label1), 7.45058e-09, 0.5); frame1 = gtk_frame_new(_("Debug log")); gtk_widget_show(frame1); gtk_box_pack_start(GTK_BOX(vbox1), frame1, TRUE, TRUE, 0); scrolledwindow1 = gtk_scrolled_window_new(NULL, NULL); gtk_widget_show(scrolledwindow1); gtk_container_add(GTK_CONTAINER(frame1), scrolledwindow1); gtk_container_set_border_width(GTK_CONTAINER(scrolledwindow1), 3); gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrolledwindow1), GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC); text1 = gtk_text_view_new(); gtk_text_view_set_editable(GTK_TEXT_VIEW(text1), FALSE); gtk_widget_show(text1); gtk_container_add(GTK_CONTAINER(scrolledwindow1), text1); crash_report = g_strdup_printf( "Claws Mail version %s\n" "GTK+ version %d.%d.%d / GLib %d.%d.%d\n" "Locale: %s (charset: %s)\n" "Features:%s\n" "Operating system: %s\n" "C Library: %s\n--\n%s", VERSION, gtk_major_version, gtk_minor_version, gtk_micro_version, glib_major_version, glib_minor_version, glib_micro_version, conv_get_current_locale(), conv_get_locale_charset_str(), get_compiled_in_features(), get_operating_system(), get_lib_version(), debug_output); buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(text1)); gtk_text_buffer_get_start_iter(buffer, &iter); gtk_text_buffer_insert(buffer, &iter, crash_report, -1); hbuttonbox3 = gtk_hbutton_box_new(); gtk_widget_show(hbuttonbox3); gtk_box_pack_start(GTK_BOX(vbox1), hbuttonbox3, FALSE, FALSE, 0); hbuttonbox4 = gtk_hbutton_box_new(); gtk_widget_show(hbuttonbox4); gtk_box_pack_start(GTK_BOX(vbox1), hbuttonbox4, FALSE, FALSE, 0); button3 = gtk_button_new_with_label(_("Close")); gtk_widget_show(button3); gtk_container_add(GTK_CONTAINER(hbuttonbox4), button3); gtkut_widget_set_can_default(button3, TRUE); button4 = gtk_button_new_with_label(_("Save...")); gtk_widget_show(button4); gtk_container_add(GTK_CONTAINER(hbuttonbox4), button4); gtkut_widget_set_can_default(button4, TRUE); button5 = gtk_button_new_with_label(_("Create bug report")); gtk_widget_show(button5); gtk_container_add(GTK_CONTAINER(hbuttonbox4), button5); gtkut_widget_set_can_default(button5, TRUE); g_signal_connect(G_OBJECT(window1), "delete_event", G_CALLBACK(gtk_main_quit), NULL); g_signal_connect(G_OBJECT(button3), "clicked", G_CALLBACK(gtk_main_quit), NULL); g_signal_connect(G_OBJECT(button4), "clicked", G_CALLBACK(crash_save_crash_log), crash_report); g_signal_connect(G_OBJECT(button5), "clicked", G_CALLBACK(crash_create_bug_report), NULL); MANAGE_WINDOW_SIGNALS_CONNECT(window1); gtk_widget_show(window1); gtk_main(); return window1; }