}
typedef ImportExport<GtkRadioButton, int, IntRadioImport, IntRadioExport> IntRadioImportExport;
+template<typename Type, typename Formatter>
+class StringFromType
+{
+ StringOutputStream value;
+public:
+ StringFromType(const Type& type)
+ {
+ value << Formatter(type);
+ }
+ operator const char*() const
+ {
+ return value.c_str();
+ }
+};
+
+typedef StringFromType<const char*, ConvertLocaleToUTF8> LocaleToUTF8;
+typedef StringFromType<const char*, ConvertUTF8ToLocale> UTF8ToLocale;
void TextEntryImport(GtkEntry& widget, const char* text)
{
- StringOutputStream value(64);
- value << ConvertLocaleToUTF8(text);
- gtk_entry_set_text(&widget, value.c_str());
+ gtk_entry_set_text(&widget, LocaleToUTF8(text));
}
void TextEntryExport(GtkEntry& widget, const StringImportCallback& importCallback)
{
- StringOutputStream value(64);
- value << ConvertUTF8ToLocale(gtk_entry_get_text(&widget));
- importCallback(value.c_str());
+ importCallback(UTF8ToLocale(gtk_entry_get_text(&widget)));
}
typedef ImportExport<GtkEntry, const char*, TextEntryImport, TextEntryExport> TextEntryImportExport;
addRadioIcons(vbox, name, icons, IntImportCaller(data), IntExportCaller(data));
}
-GtkWidget* Dialog::addEntry(GtkWidget* vbox, const char* name, const IntImportCallback& importViewer, const IntExportCallback& exportViewer)
+GtkWidget* Dialog::addIntEntry(GtkWidget* vbox, const char* name, const IntImportCallback& importViewer, const IntExportCallback& exportViewer)
{
DialogEntryRow row(DialogEntryRow_new(name));
AddIntEntryData(*row.m_entry, importViewer, exportViewer);
return row.m_row;
}
-GtkWidget* Dialog::addEntry(GtkWidget* vbox, const char* name, const SizeImportCallback& importViewer, const SizeExportCallback& exportViewer)
+GtkWidget* Dialog::addSizeEntry(GtkWidget* vbox, const char* name, const SizeImportCallback& importViewer, const SizeExportCallback& exportViewer)
{
DialogEntryRow row(DialogEntryRow_new(name));
AddSizeEntryData(*row.m_entry, importViewer, exportViewer);
return row.m_row;
}
-GtkWidget* Dialog::addEntry(GtkWidget* vbox, const char* name, const FloatImportCallback& importViewer, const FloatExportCallback& exportViewer)
+GtkWidget* Dialog::addFloatEntry(GtkWidget* vbox, const char* name, const FloatImportCallback& importViewer, const FloatExportCallback& exportViewer)
{
DialogEntryRow row(DialogEntryRow_new(name));
AddFloatEntryData(*row.m_entry, importViewer, exportViewer);