}
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;
void Dialog::ShowDlg()
{
- ASSERT_MESSAGE(m_window != 0, "dialog was not constructed")
+ ASSERT_MESSAGE(m_window != 0, "dialog was not constructed");
importData();
gtk_widget_show(GTK_WIDGET(m_window));
}
void Dialog::HideDlg()
{
- ASSERT_MESSAGE(m_window != 0, "dialog was not constructed")
+ ASSERT_MESSAGE(m_window != 0, "dialog was not constructed");
exportData();
gtk_widget_hide(GTK_WIDGET(m_window));
}
void Dialog::Create()
{
- ASSERT_MESSAGE(m_window == 0, "dialog cannot be constructed")
+ ASSERT_MESSAGE(m_window == 0, "dialog cannot be constructed");
m_window = BuildDialog();
g_signal_connect(G_OBJECT(m_window), "delete_event", G_CALLBACK(delete_event_callback), this);
{
GtkWidget* combo = gtk_combo_box_new_text();
- for(StringArrayRange::Iterator i = values.begin; i != values.end; ++i)
+ for(StringArrayRange::Iterator i = values.first; i != values.last; ++i)
{
gtk_combo_box_append_text(GTK_COMBO_BOX(combo), *i);
}
void Dialog::addRadioIcons(GtkWidget* vbox, const char* name, StringArrayRange icons, const IntImportCallback& importViewer, const IntExportCallback& exportViewer)
{
- GtkWidget* table = gtk_table_new (2, static_cast<guint>(icons.end - icons.begin), FALSE);
+ GtkWidget* table = gtk_table_new (2, static_cast<guint>(icons.last - icons.first), FALSE);
gtk_widget_show (table);
gtk_table_set_row_spacings (GTK_TABLE (table), 5);
GSList* group = 0;
GtkWidget* radio = 0;
- for(StringArrayRange::Iterator icon = icons.begin; icon != icons.end; ++icon)
+ for(StringArrayRange::Iterator icon = icons.first; icon != icons.last; ++icon)
{
- guint pos = static_cast<guint>(icon - icons.begin);
+ guint pos = static_cast<guint>(icon - icons.first);
GtkImage* image = new_local_image(*icon);
gtk_widget_show(GTK_WIDGET(image));
gtk_table_attach(GTK_TABLE(table), GTK_WIDGET(image), pos, pos+1, 0, 1,
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);