static void copymenu_properties(Scene *scene, View3D *v3d, Object *ob) { //XXX no longer used - to be removed - replaced by game_properties_copy_exec bProperty *prop; Base *base; int nr, tot=0; char *str; prop= ob->prop.first; while (prop) { tot++; prop= prop->next; } str= MEM_callocN(50 + 33*tot, "copymenu prop"); if (tot) strcpy(str, "Copy Property %t|Replace All|Merge All|%l"); else strcpy(str, "Copy Property %t|Clear All (no properties on active)"); tot= 0; prop= ob->prop.first; while (prop) { tot++; strcat(str, "|"); strcat(str, prop->name); prop= prop->next; } nr= pupmenu(str); if ( nr==1 || nr==2 ) { for (base= FIRSTBASE; base; base= base->next) { if ((base != BASACT) &&(TESTBASELIB(v3d, base))) { if (nr==1) { /* replace */ copy_properties( &base->object->prop, &ob->prop ); } else { for (prop = ob->prop.first; prop; prop= prop->next ) { set_ob_property(base->object, prop); } } } } } else if (nr>0) { prop = BLI_findlink(&ob->prop, nr-4); /* account for first 3 menu items & menu index starting at 1*/ if (prop) { for (base= FIRSTBASE; base; base= base->next) { if ((base != BASACT) &&(TESTBASELIB(v3d, base))) { set_ob_property(base->object, prop); } } } } MEM_freeN(str); }
struct pbsnode *create_alps_subnode( struct pbsnode *parent, char *node_id) { struct pbsnode *subnode = calloc(1, sizeof(struct pbsnode)); svrattrl *plist = NULL; int bad; int rc; if (initialize_pbsnode(subnode, strdup(node_id), NULL, NTYPE_CLUSTER) != PBSE_NONE) { free(subnode); log_err(ENOMEM, __func__, ""); return(NULL); } if (create_subnode(subnode) == NULL) { free(subnode); log_err(ENOMEM, __func__, ""); return(NULL); } /* do we need to do something else here? */ subnode->nd_addrs = parent->nd_addrs; rc = mgr_set_node_attr(subnode, node_attr_def, ND_ATR_LAST, plist, ATR_DFLAG_MGRD | ATR_DFLAG_MGWR, &bad, (void *)subnode, ATR_ACTION_ALTER); if (rc != PBSE_NONE) { free(subnode); log_err(rc, __func__, "Couldn't set node attributes"); return(NULL); } subnode->nd_ntype = NTYPE_CLUSTER; subnode->parent = parent; /* add any properties to the subnodes */ copy_properties(subnode, parent); lock_node(subnode, __func__, NULL, 0); insert_node(&(parent->alps_subnodes), subnode); return(subnode); } /* END create_alps_subnode() */
struct pbsnode *create_alps_subnode( struct pbsnode *parent, const char *node_id) { struct pbsnode *subnode = (struct pbsnode *)calloc(1, sizeof(struct pbsnode)); svrattrl *plist = NULL; int bad; int rc = PBSE_NONE; if (initialize_pbsnode(subnode, strdup(node_id), NULL, NTYPE_CLUSTER, FALSE) != PBSE_NONE) { free(subnode); log_err(ENOMEM, __func__, ""); return(NULL); } // all nodes have at least 1 core add_execution_slot(subnode); // we need to increment this count for accuracy svr_clnodes++; /* do we need to do something else here? */ subnode->nd_addrs = parent->nd_addrs; rc = mgr_set_node_attr(subnode, node_attr_def, ND_ATR_LAST, plist, ATR_DFLAG_MGRD | ATR_DFLAG_MGWR, &bad, (void *)subnode, ATR_ACTION_ALTER); if (rc != PBSE_NONE) { free(subnode); log_err(rc, __func__, "Couldn't set node attributes"); return(NULL); } subnode->nd_ntype = NTYPE_CLUSTER; subnode->parent = parent; /* add any properties to the subnodes */ copy_properties(subnode, parent); lock_node(subnode, __func__, NULL, LOGLEVEL); insert_node(&(parent->alps_subnodes), subnode); return(subnode); } /* END create_alps_subnode() */
END_TEST START_TEST(copy_properties_test) { int result = -1; struct pbsnode source_node; struct pbsnode destanation_node; initialize_pbsnode(&source_node, NULL, NULL, 0, FALSE); initialize_pbsnode(&destanation_node, NULL, NULL, 0, FALSE); result = copy_properties(NULL, &source_node); fail_unless(result != PBSE_NONE, "NULL destanation pointer input fail"); result = copy_properties(&destanation_node, NULL); fail_unless(result != PBSE_NONE, "NULL source pointer input fail"); /*TODO: fill in source node*/ result = copy_properties(&destanation_node, &source_node); fail_unless(result == PBSE_NONE, "copy_properties return fail"); }
static UfoNode * ufo_node_copy_real (UfoNode *node, GError **error) { UfoNode *orig; UfoNode *copy; copy = UFO_NODE (g_object_new (G_OBJECT_TYPE (node), NULL)); orig = node->priv->orig; copy_properties (G_OBJECT (copy), G_OBJECT (orig)); copy->priv->orig = orig; copy->priv->label = orig->priv->label; copy->priv->index = orig->priv->total; orig->priv->total++; return copy; }
void edit_properties(GtkWidget *widget, gpointer data) { GtkWidget *props_window; GtkWidget *main_box; GtkWidget *settings_box; GtkWidget *wide_box; GtkWidget *general_frame; GtkWidget *general_box; GtkWidget *syntax_frame; GtkWidget *syntax_box; GtkWidget *bracket_frame; GtkWidget *bracket_box; GtkWidget *tabs_frame; GtkWidget *tabs_box; GtkWidget *compile_frame; GtkWidget *compile_box; GtkWidget *util_box; GtkWidget *util_label; GtkWidget *buttons_box; GtkWidget *ok_button; GtkWidget *defaults_button; GtkWidget *undo_button; GtkWidget *close_button; FileProps *file_props; gchar *chars = NULL; GtkWidget *hsep; if(cur_file->props_dialog && GTK_IS_WINDOW(cur_file->props_dialog)) { gdk_window_raise(cur_file->props_dialog->window); return; } file_props = g_new(FileProps, 1); file_props->defaults = cur_file->tables ? &cur_file->tables->props : NULL; file_props->current = &cur_file->props; file_props->backups = g_new(GdsFileProperties, 1); copy_properties(file_props->backups, file_props->current); props_window = gtk_window_new(GTK_WINDOW_DIALOG); gtk_container_set_border_width(GTK_CONTAINER(props_window), 5); chars = g_strconcat(_("GdsFileProperties Editor - "), cur_file->filename, NULL); gtk_window_set_title(GTK_WINDOW(props_window), chars); g_free(chars); cur_file->props_dialog = props_window; main_box = gtk_vbox_new(FALSE, 0); gtk_container_add(GTK_CONTAINER(props_window), main_box); gtk_widget_show(main_box); settings_box = gtk_vbox_new(FALSE, 0); gtk_container_set_border_width(GTK_CONTAINER(settings_box), 0); gtk_box_pack_start(GTK_BOX(main_box), settings_box, FALSE, FALSE, 0); gtk_widget_show(settings_box); /* File Settings */ general_frame = gtk_frame_new(_("File Specific Settings")); gtk_box_pack_start(GTK_BOX(settings_box), general_frame, FALSE, FALSE, 0); gtk_widget_show(general_frame); wide_box = gtk_hbox_new(FALSE, 5); gtk_container_set_border_width(GTK_CONTAINER(wide_box), 5); gtk_container_add(GTK_CONTAINER(general_frame), wide_box); gtk_widget_show(wide_box); general_box = gtk_vbox_new(FALSE, 0); gtk_box_pack_start(GTK_BOX(wide_box), general_box, TRUE, TRUE, 0); gtk_widget_show(general_box); util_box = gtk_hbox_new(FALSE, 0); gtk_box_pack_start(GTK_BOX(general_box), util_box, TRUE, TRUE, 5); gtk_container_set_border_width(GTK_CONTAINER(util_box), 5); gtk_widget_show(util_box); file_props->over_ride = make_button(_("Override defaults ?"), util_box, &file_props->current->over_ride); util_box = gtk_hbox_new(FALSE, 5); gtk_box_pack_start(GTK_BOX(general_box), util_box, TRUE, TRUE, 5); gtk_widget_show(util_box); util_label = gtk_label_new(_("Directory:")); gtk_box_pack_start(GTK_BOX(util_box), util_label, FALSE, FALSE, 0); gtk_widget_show(util_label); file_props->dir = gnome_direntry_new(); gtk_box_pack_start(GTK_BOX(util_box), file_props->dir, TRUE, TRUE, 0); gtk_widget_show(file_props->dir); bracket_frame = gtk_frame_new(_("Bracket Highlighting")); gtk_box_pack_start(GTK_BOX(general_box), bracket_frame, FALSE, FALSE, 0); gtk_widget_show(bracket_frame); bracket_box = gtk_vbox_new(FALSE, 0); gtk_container_set_border_width(GTK_CONTAINER(bracket_box), 5); gtk_container_add(GTK_CONTAINER(bracket_frame), bracket_box); gtk_widget_show(bracket_box); util_box = gtk_hbox_new(FALSE, 0); gtk_box_pack_start(GTK_BOX(bracket_box), util_box, FALSE, TRUE, 0); gtk_widget_show(util_box); file_props->bracketmatch = make_button(_("Enable bracket highlighting ?"), util_box, &file_props->current->bracketmatch); syntax_frame = gtk_frame_new(_("Syntax Highlighting")); gtk_box_pack_start(GTK_BOX(general_box), syntax_frame, FALSE, FALSE, 0); gtk_widget_show(syntax_frame); syntax_box = gtk_vbox_new(FALSE, 0); gtk_container_set_border_width(GTK_CONTAINER(syntax_box), 5); gtk_container_add(GTK_CONTAINER(syntax_frame), syntax_box); gtk_widget_show(syntax_box); util_box = gtk_hbox_new(FALSE, 0); gtk_box_pack_start(GTK_BOX(syntax_box), util_box, FALSE, TRUE, 0); gtk_widget_show(util_box); file_props->syntax = make_button(_("Enable syntax highlighting ?"), util_box, &file_props->current->syntax); tabs_frame = gtk_frame_new(_("Indentation")); gtk_box_pack_start(GTK_BOX(general_box), tabs_frame, TRUE, TRUE, 0); gtk_widget_show(tabs_frame); tabs_box = gtk_vbox_new(FALSE, 0); gtk_container_set_border_width(GTK_CONTAINER(tabs_box), 5); gtk_container_add(GTK_CONTAINER(tabs_frame), tabs_box); gtk_widget_show(tabs_box); util_box = gtk_hbox_new(FALSE, 0); gtk_container_set_border_width(GTK_CONTAINER(util_box), 5); gtk_box_pack_start(GTK_BOX(tabs_box), util_box, TRUE, TRUE, 0); gtk_widget_show(util_box); file_props->auto_indent = make_button(_("Auto Indent ?"), util_box, &file_props->current->auto_indent); util_box = gtk_hbox_new(FALSE, 0); gtk_container_set_border_width(GTK_CONTAINER(util_box), 5); gtk_box_pack_start(GTK_BOX(tabs_box), util_box, TRUE, TRUE, 0); gtk_widget_show(util_box); file_props->use_spaces = make_button(_("Use spaces instead of tabs ?"), util_box, &file_props->current->use_spaces); util_box = gtk_hbox_new(FALSE, 0); gtk_container_set_border_width(GTK_CONTAINER(util_box), 5); gtk_box_pack_start(GTK_BOX(tabs_box), util_box, TRUE, TRUE, 0); gtk_widget_show(util_box); util_label = gtk_label_new(_("Tab stop:")); gtk_box_pack_start(GTK_BOX(util_box), util_label, FALSE, FALSE, 0); gtk_widget_show(util_label); file_props->spaces_spin = gtk_spin_button_new(GTK_ADJUSTMENT(gtk_adjustment_new(0, 1, 8, 1, 2, 0)), 1, 0); gtk_box_pack_start(GTK_BOX(util_box), file_props->spaces_spin, TRUE, TRUE, 0); gtk_widget_show(file_props->spaces_spin); compile_frame = gtk_frame_new(_("Build Information")); gtk_box_pack_start(GTK_BOX(wide_box), compile_frame, TRUE, TRUE, 0); gtk_widget_show(compile_frame); compile_box = gtk_vbox_new(FALSE, 0); gtk_container_set_border_width(GTK_CONTAINER(compile_box), 5); gtk_container_add(GTK_CONTAINER(compile_frame), compile_box); gtk_widget_show(compile_box); util_box = gtk_hbox_new(FALSE, 0); gtk_box_pack_start(GTK_BOX(compile_box), util_box, TRUE, TRUE, 5); gtk_widget_show(util_box); util_label = gtk_label_new(_("Compiler: ")); gtk_box_pack_start(GTK_BOX(util_box), util_label, FALSE, FALSE, 0); gtk_widget_show(util_label); file_props->compiler = gtk_entry_new(); gtk_box_pack_start(GTK_BOX(util_box), file_props->compiler, TRUE, TRUE, 0); gtk_widget_show(file_props->compiler); util_box = gtk_hbox_new(FALSE, 0); gtk_box_pack_start(GTK_BOX(compile_box), util_box, TRUE, TRUE, 5); gtk_widget_show(util_box); util_label = gtk_label_new(_("Debugger: ")); gtk_box_pack_start(GTK_BOX(util_box), util_label, FALSE, FALSE, 0); gtk_widget_show(util_label); file_props->debugger = gtk_entry_new(); gtk_box_pack_start(GTK_BOX(util_box), file_props->debugger, TRUE, TRUE, 0); gtk_widget_show(file_props->debugger); util_box = gtk_hbox_new(FALSE, 0); gtk_box_pack_start(GTK_BOX(compile_box), util_box, TRUE, TRUE, 5); gtk_widget_show(util_box); util_label = gtk_label_new(_("Execution: ")); gtk_box_pack_start(GTK_BOX(util_box), util_label, FALSE, FALSE, 0); gtk_widget_show(util_label); file_props->execution = gtk_entry_new(); gtk_box_pack_start(GTK_BOX(util_box), file_props->execution, TRUE, TRUE, 0); gtk_widget_show(file_props->execution); hsep = gtk_hseparator_new(); gtk_box_pack_start(GTK_BOX(main_box), hsep, FALSE, TRUE, 10); gtk_widget_show(hsep); buttons_box = gtk_hbutton_box_new(); gtk_box_pack_start(GTK_BOX(main_box), buttons_box, FALSE, TRUE, 0); gtk_button_box_set_layout(GTK_BUTTON_BOX(buttons_box), gnome_preferences_get_button_layout()); gtk_button_box_set_spacing(GTK_BUTTON_BOX(buttons_box), GNOME_PAD); gtk_widget_show(buttons_box); ok_button = gnome_stock_button(GNOME_STOCK_BUTTON_OK); gtk_box_pack_start(GTK_BOX(buttons_box), ok_button, FALSE, TRUE, 0); gtk_signal_connect(GTK_OBJECT(ok_button), "clicked", GTK_SIGNAL_FUNC(save_properties), file_props); gtk_signal_connect(GTK_OBJECT(ok_button), "clicked", GTK_SIGNAL_FUNC(set_properties), cur_file); gtk_signal_connect(GTK_OBJECT(ok_button), "clicked", GTK_SIGNAL_FUNC(kill_widget), GTK_OBJECT(props_window)); GTK_WIDGET_SET_FLAGS(ok_button, GTK_CAN_DEFAULT); gtk_widget_show(ok_button); defaults_button = gnome_stock_or_ordinary_button(_("Defaults")); gtk_box_pack_start(GTK_BOX(buttons_box), defaults_button, FALSE, TRUE, 0); gtk_signal_connect(GTK_OBJECT(defaults_button), "clicked", GTK_SIGNAL_FUNC(get_default_props), file_props); GTK_WIDGET_SET_FLAGS(defaults_button, GTK_CAN_DEFAULT); gtk_widget_show(defaults_button); undo_button = gnome_stock_or_ordinary_button(_("Undo")); gtk_box_pack_start(GTK_BOX(buttons_box), undo_button, FALSE, TRUE, 0); gtk_signal_connect(GTK_OBJECT(undo_button), "clicked", GTK_SIGNAL_FUNC(get_backup_props), file_props); GTK_WIDGET_SET_FLAGS(undo_button, GTK_CAN_DEFAULT); gtk_widget_show(undo_button); close_button = gnome_stock_button(GNOME_STOCK_BUTTON_CLOSE); gtk_box_pack_end(GTK_BOX(buttons_box), close_button, FALSE, TRUE, 0); gtk_signal_connect(GTK_OBJECT(close_button), "clicked", GTK_SIGNAL_FUNC(kill_widget), GTK_OBJECT(props_window)); gtk_signal_connect(GTK_OBJECT(close_button), "clicked", GTK_SIGNAL_FUNC(redo_backup_props), file_props); GTK_WIDGET_SET_FLAGS(close_button, GTK_CAN_DEFAULT); gtk_widget_grab_default(close_button); gtk_widget_show(close_button); gtk_signal_connect(GTK_OBJECT(props_window), "destroy", GTK_SIGNAL_FUNC(kill_widget_ptr), &cur_file->props_dialog); gtk_signal_connect(GTK_OBJECT(props_window), "destroy", GTK_SIGNAL_FUNC(free_properties), file_props->backups); gtk_signal_connect(GTK_OBJECT(props_window), "destroy", GTK_SIGNAL_FUNC(kill_data), file_props); put_properties(file_props, file_props->current); gtk_widget_show(props_window); }
void redo_backup_props(GtkWidget *widget, FileProps *props) { copy_properties(props->current, props->backups); }