-private:
-ImportCallback m_importWidget;
-ExportCallback m_exportWidget;
-ImportCallback m_importViewer;
-ExportCallback m_exportViewer;
+using FloatImportExport = ImportExport<float>;
+
+struct FloatEntry {
+ static void Import(GtkEntry &widget, float value) {
+ entry_set_float(ui::Entry(&widget), value);
+ }
+
+ static void Export(GtkEntry &widget, const ImportExportCallback<float>::Import_t &importCallback) {
+ importCallback((float) atof(gtk_entry_get_text(&widget)));
+ }
+};
+
+using FloatEntryImportExport = ImportExport<GtkEntry, float, FloatEntry>;
+
+struct FloatSpinner {
+ static void Import(GtkSpinButton &widget, float value) {
+ gtk_spin_button_set_value(&widget, value);
+ }
+
+ static void Export(GtkSpinButton &widget, const ImportExportCallback<float>::Import_t &importCallback) {
+ importCallback(float(gtk_spin_button_get_value(&widget)));
+ }
+};
+
+using FloatSpinnerImportExport = ImportExport<GtkSpinButton, float, FloatSpinner>;
+
+
+
+template<typename T>
+class CallbackDialogData : public DLG_DATA {
+ ImportExportCallback<T> m_cbWidget;
+ ImportExportCallback<T> m_cbViewer;