static gboolean properties (QCADDesignObject *obj, GtkWidget *parent) #endif /* UNDO_REDO */ { static PROPERTIES dialog = {NULL} ; gboolean bRet = FALSE ; if (!IS_QCAD_LABEL (obj)) return FALSE ; if (NULL == dialog.dlg) create_properties_dialog (&dialog) ; gtk_window_set_transient_for (GTK_WINDOW (dialog.dlg), GTK_WINDOW (parent)) ; gtk_entry_set_text (GTK_ENTRY (dialog.txtLabel), QCAD_LABEL (obj)->psz) ; gtk_widget_grab_focus (dialog.txtLabel) ; if ((bRet = (GTK_RESPONSE_OK == gtk_dialog_run (GTK_DIALOG (dialog.dlg))))) { if (NULL != QCAD_LABEL (obj)->psz) g_free (QCAD_LABEL (obj)->psz) ; QCAD_LABEL (obj)->psz = gtk_editable_get_chars (GTK_EDITABLE (dialog.txtLabel), 0, -1) ; QCAD_LABEL (obj)->bNeedsEPMDraw = TRUE ; } #ifdef UNDO_REDO if (NULL != pentry) (*pentry) = NULL ; #endif /* def UNDO_REDO */ gtk_widget_hide (dialog.dlg) ; return bRet ; }
static gboolean qcad_layer_do_container_add (QCADDOContainer *container, QCADDesignObject *obj) { GList *lstIter = NULL ; OBJECT_TRACK_STRUCT *ots = NULL ; QCADLayer *layer = NULL ; QCADDesignObject *obj_child = NULL ; if (!QCAD_IS_LAYER (container)) return FALSE ; layer = QCAD_LAYER (container) ; if (NULL == obj) return FALSE ; ots = g_object_get_data (G_OBJECT (obj), "ots") ; if (NULL != ots) { if (NULL != ots->parent) if (QCAD_IS_DO_CONTAINER (ots->parent)) return qcad_do_container_add (QCAD_DO_CONTAINER (ots->parent), obj) ; // If the layers don't match, we need to move the object to this layer if (ots->layer == layer) { // If we're re-adding the object to its layer, then we merely simulate its (de)selection if (NULL != ots->layer) { /* DBG_REFS (fprintf (stderr, "qcad_layer_add_object:refin-inf object 0x%08X so as to re-add to layer\n", (int)obj)) ;*/ g_object_ref (G_OBJECT (obj)) ; if (NULL != ots->llDeSel) ots->llDeSel->data = obj ; /* qcad_design_object_selected (obj, ots) ;*/ return TRUE ; } } } // Rules for cells if (QCAD_IS_CELL (obj)) { if (layer->type != LAYER_TYPE_CELLS) return FALSE ; /* else*/ // If the object is selected, we don't care that it overlaps, because it's floating /* if (!(obj->bSelected))*/ /* {*/ /*#ifdef ALLOW_UNSERIALIZE_OVERLAP*/ /* if (!(layer->bAllowOverlap))*/ //#endif def ALLOW_UNSERIALIZE_OVERLAP /* for (lstIter = layer->lstObjs ; lstIter != NULL ; lstIter = lstIter->next)*/ /* if (qcad_design_object_overlaps (obj, QCAD_DESIGN_OBJECT (lstIter->data)))*/ /* return FALSE ;*/ /* }*/ } else if (QCAD_IS_SUBSTRATE (obj)) { if (layer->type != LAYER_TYPE_SUBSTRATE) return FALSE ; /* else*/ // If the object is selected, we don't care that it overlaps, because it's floating /* if (!(obj->bSelected))*/ /* {*/ /* for (lstIter = layer->lstObjs ; lstIter != NULL ; lstIter = lstIter->next)*/ /* if (qcad_design_object_overlaps (obj, QCAD_DESIGN_OBJECT (lstIter->data)))*/ /* return FALSE ;*/ /* }*/ } else if (IS_QCAD_LABEL (obj) && (!(LAYER_TYPE_DRAWING == layer->type && obj->bounding_box.cxWorld > 10 && obj->bounding_box.cyWorld > 10))) return FALSE ; qcad_layer_track_new_object (layer, obj, layer->lstObjs = g_list_prepend (layer->lstObjs, obj), NULL) ; if (QCAD_IS_COMPOUND_DO (obj)) { g_signal_connect (G_OBJECT (obj), "added", (GCallback)qcad_layer_compound_do_added, layer) ; g_signal_connect (G_OBJECT (obj), "removed", (GCallback)qcad_layer_compound_do_removed, layer) ; for (obj_child = qcad_compound_do_first (QCAD_COMPOUND_DO (obj)) ; ; obj_child = qcad_compound_do_next (QCAD_COMPOUND_DO (obj))) { if (NULL != obj_child) qcad_layer_track_new_object (layer, obj_child, NULL, obj) ; if (qcad_compound_do_last (QCAD_COMPOUND_DO (obj))) break ; } } return TRUE ; }