bool mmCustomData::SaveCustomValues(int ref_id) { Model_CustomFieldData::instance().Savepoint(); for (const auto &field : m_fields) { wxWindowID controlID = GetBaseID() + (wxWindowID)field.FIELDID; const auto& data = IsWidgetChanged(controlID) ? GetWidgetData(controlID) : ""; Model_CustomFieldData::Data* fieldData = Model_CustomFieldData::instance().get(field.FIELDID, ref_id); if (!data.empty()) { if (!fieldData) { fieldData = Model_CustomFieldData::instance().create(); } fieldData->REFID = ref_id; fieldData->FIELDID = field.FIELDID; fieldData->CONTENT = data; wxLogDebug("Control:%i Type:%s Value:%s" , controlID , Model_CustomField::all_type()[Model_CustomField::type(field)] , data); Model_CustomFieldData::instance().save(fieldData); } else if (fieldData) { Model_CustomFieldData::instance().remove(fieldData->FIELDATADID); } } Model_CustomFieldData::instance().ReleaseSavepoint(); return true; }
static void SetFileEntry( GtkWidget *widget, WidgetData *wdata, _FileEntry *data) { static GHashTable *connectlist = NULL; GtkPandaFileEntry *fentry; GtkWidget *subWidget; WidgetData *subdata; char *longname; char *folder; ENTER_FUNC; SetCommon(widget,wdata); fentry = GTK_PANDA_FILE_ENTRY(widget); g_return_if_fail(data->binary != NULL); longname = (char *)glade_get_widget_long_name(widget); if (connectlist == NULL) { connectlist = NewNameHash(); } if (g_hash_table_lookup(connectlist, longname) == NULL) { g_hash_table_insert(connectlist, longname, longname); g_signal_connect_after(G_OBJECT(widget), "done_action", G_CALLBACK(SavePreviousFolder), NULL); } folder = GetWidgetCache(longname); if (folder == NULL) { folder = ""; } gtk_panda_file_entry_set_folder(fentry, folder); if (LBS_Size(data->binary) > 0) { //download gtk_panda_file_entry_set_mode(fentry, GTK_FILE_CHOOSER_ACTION_SAVE); gtk_panda_file_entry_set_data(fentry, LBS_Size(data->binary), LBS_Body(data->binary)); //set subwidget subdata = GetWidgetData(data->subname); subWidget = GetWidgetByLongName(data->subname); if (subdata != NULL || subWidget != NULL) { SetEntry(subWidget, subdata,(_Entry *)subdata->attrs); } g_signal_emit_by_name(G_OBJECT(widget), "browse_clicked", NULL); } else { //upload gtk_panda_file_entry_set_mode(GTK_PANDA_FILE_ENTRY(widget), GTK_FILE_CHOOSER_ACTION_OPEN); } LEAVE_FUNC; }
void mmCustomData::OnCheckBoxActivated(wxCommandEvent& event) { auto id = event.GetId(); auto widget_id = id - GetLabelID() + GetBaseID(); auto checked = event.IsChecked(); if (checked) { //TODO: const auto& data = GetWidgetData(widget_id); SetWidgetChanged(widget_id, data); } else { this->ResetWidgetChanged(widget_id); } }