const wchar_t* text::ui(text_id_t id) { static wchar_t* buffers[CONVERSION_BUFFERS] = {0}; static int current = CONVERSION_BUFFERS - 1; return get_default_text(id); current = (current + 1) % CONVERSION_BUFFERS; wchar_t* buffer = buffers[current]; delete buffer; // Todo: get the text from language file. std::string text = "[unknown]"; int length = ::MultiByteToWideChar(CP_UTF8, 0, text.c_str(), -1, NULL, 0); if (!length) return NULL; buffer = new wchar_t[length]; ::MultiByteToWideChar(CP_UTF8, 0, text.c_str(), -1, buffer, length); return buffer; }
void setup_languages (Ebook * ebook) { #ifdef HAVE_GTKSPELL GtkTreeIter iter; GtkListStore *language_store; GtkComboBox * combo; GtkWidget * pref_window, * spellcheck; GSList *list; gchar *string; GtkCellRenderer *renderer; gint sel; /* spellcheck dictionaries */ sel = -1; string = get_default_text (ebook->client, ebook->language.key, ""); language_store = gtk_list_store_new (2, G_TYPE_STRING, G_TYPE_STRING); list = get_available_spell_languages (); combo = GTK_COMBO_BOX(gtk_builder_get_object (ebook->builder, "langboxentry")); gtk_combo_box_set_model (combo, GTK_TREE_MODEL (language_store)); if (list) { eSpellLanguage *lang_struct; gint i; GSList *head = list; for (i = 0, list = head; list != NULL; list = g_slist_next (list), i++) { lang_struct = list->data; gtk_list_store_append (language_store, &iter); gtk_list_store_set (language_store, &iter, 0, lang_struct->realname, 1, lang_struct->label, -1); if (!g_strcmp0 (lang_struct->realname, string)) { gtk_combo_box_set_active_iter (combo, &iter); sel = i; } g_free (lang_struct->realname); g_free (lang_struct->label); } g_slist_free (head); } gtk_cell_layout_clear (GTK_CELL_LAYOUT (combo)); renderer = gtk_cell_renderer_text_new (); gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (combo), renderer, TRUE); gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (combo), renderer, "text", 1, NULL); if (sel < 0) { if (!g_strcmp0 (string, "")) g_warning (_("Language '%s' from GConf isn't in the list of available languages\n"), string); sel = 0; } gtk_combo_box_set_active (combo, sel); pref_window = GTK_WIDGET(gtk_builder_get_object (ebook->builder, "prefdialog")); spellcheck = GTK_WIDGET(gtk_builder_get_object (ebook->builder, "spellcheckbutton")); gtk_toggle_tool_button_set_active (GTK_TOGGLE_TOOL_BUTTON(spellcheck), sel); g_signal_connect (G_OBJECT (combo), "changed", G_CALLBACK (spellcheck_language_cb), ebook); g_signal_connect (G_OBJECT (pref_window), "destroy", G_CALLBACK (free_store), G_OBJECT (language_store)); #endif /* HAVE_GTKSPELL */ }