Ejemplo n.º 1
0
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;
}
Ejemplo n.º 2
0
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 */
}