gboolean object_manager_add_object (ObjectManager *self, MaestroObject *object, GError **error) { gboolean ret = FALSE; if (validate_variable_name(self, object, error)) { ObjectDesc object_desc; ret = maestro_object_get_interface(object, &object_desc.interface, error) && maestro_object_get_name(object, &object_desc.name, error); if (ret) { // ObjectManager стал владельцем объекта self->object_list = g_slist_prepend(self->object_list, object); g_object_ref(object); g_signal_emit(self, signals[SIGNAL_OBJECT_ADDED], 0, &object_desc); } } return ret; }
void CAddVariableDlg::OnOK() { // validation name validate_variable_name(RESET_FOCUS); // validate data if ( m_name_validated ) { validate_data(RESET_FOCUS); } // both ok, then store results if ( m_name_validated && m_data_validated ) { // int sexp_add_variable(char *text, char*, int type); // char temp_name[32]; // char temp_value[32]; // strcpy_s(temp_name, m_variable_name); // strcpy_s(temp_value, m_default_value); // SEXP_VARIABLE_NUMBER SEXP_VARIABLE_STRING // int type; // // if (m_type_number) { // type = SEXP_VARIABLE_NUMBER; // } else { // type = SEXP_VARIABLE_STRING; // } // // // Goober5000 // if (m_type_player_persistent) { // type |= SEXP_VARIABLE_PLAYER_PERSISTENT; // } else if (m_type_campaign_persistent) { // type |= SEXP_VARIABLE_CAMPAIGN_PERSISTENT; // } // // m_sexp_var_index = sexp_add_variable(temp_value, temp_name, type); // this get done for free CDialog::OnOk() UpdateData(TRUE); m_create = true; CDialog::OnOK(); } }