void LIB_EDIT_FRAME::OnLeftClick( wxDC* DC, const wxPoint& aPosition ) { LIB_ITEM* item = m_drawItem; bool item_in_edit = item && item->InEditMode(); bool no_item_edited = !item_in_edit; LIB_PART* part = GetCurPart(); if( !part ) // No component loaded ! return; if( ( GetToolId() == ID_NO_TOOL_SELECTED ) && no_item_edited ) { item = LocateItemUsingCursor( aPosition ); if( item ) { MSG_PANEL_ITEMS items; item->GetMsgPanelInfo( items ); SetMsgPanel( items ); } else { DisplayCmpDoc(); if( m_canvas->GetAbortRequest() ) m_canvas->SetAbortRequest( false ); } } switch( GetToolId() ) { case ID_NO_TOOL_SELECTED: // If an item is currently in edit, finish edit if( item_in_edit ) { switch( item->Type() ) { case LIB_PIN_T: PlacePin(); break; default: EndDrawGraphicItem( DC ); break; } } break; case ID_LIBEDIT_PIN_BUTT: if( no_item_edited ) CreatePin( DC ); else PlacePin(); break; case ID_LIBEDIT_BODY_LINE_BUTT: case ID_LIBEDIT_BODY_ARC_BUTT: case ID_LIBEDIT_BODY_CIRCLE_BUTT: case ID_LIBEDIT_BODY_RECT_BUTT: case ID_LIBEDIT_BODY_TEXT_BUTT: if( no_item_edited ) m_drawItem = CreateGraphicItem( part, DC ); else if( m_drawItem ) { if( m_drawItem->IsNew() ) GraphicItemBeginDraw( DC ); else EndDrawGraphicItem( DC ); } break; case ID_LIBEDIT_DELETE_ITEM_BUTT: m_drawItem = LocateItemUsingCursor( aPosition ); if( m_drawItem ) deleteItem( DC ); else DisplayCmpDoc(); break; case ID_LIBEDIT_ANCHOR_ITEM_BUTT: SaveCopyInUndoList( part ); PlaceAnchor(); SetToolID( ID_NO_TOOL_SELECTED, m_canvas->GetDefaultCursor(), wxEmptyString ); break; default: wxFAIL_MSG( wxString::Format( wxT( "Unhandled command ID %d" ), GetToolId() ) ); SetToolID( ID_NO_TOOL_SELECTED, m_canvas->GetDefaultCursor(), wxEmptyString ); break; } }
void WinEDA_LibeditFrame::OnLeftClick(wxDC * DC, const wxPoint& MousePos) /************************************************************************/ { LibEDA_BaseStruct* DrawEntry = CurrentDrawItem; if( CurrentLibEntry == NULL) return; if ( m_ID_current_state == 0 ) { if ( DrawEntry && DrawEntry->m_Flags ) { switch (DrawEntry->m_StructType ) { case COMPONENT_PIN_DRAW_TYPE: SaveCopyInUndoList(); PlacePin(DC); break; case COMPONENT_FIELD_DRAW_TYPE: SaveCopyInUndoList(); PlaceField(DC, (LibDrawField *) DrawEntry); DrawEntry = NULL; break; default: SaveCopyInUndoList(); EndDrawGraphicItem(DC); break; } } else { DrawEntry = LocatePin(m_CurrentScreen->m_Curseur, CurrentLibEntry, CurrentUnit, CurrentConvert); if (DrawEntry == NULL ) { DrawEntry = LocateDrawItem(GetScreen(), CurrentLibEntry,CurrentUnit, CurrentConvert,LOCATE_ALL_DRAW_ITEM); } if ( DrawEntry ) DrawEntry->Display_Infos_DrawEntry(this); else { EraseMsgBox(); AfficheDoc(this, CurrentLibEntry->m_Doc.GetData(), CurrentLibEntry->m_KeyWord.GetData()); } } } if ( m_ID_current_state ) { switch ( m_ID_current_state ) { case ID_NO_SELECT_BUTT: break; case ID_LIBEDIT_PIN_BUTT : if( CurrentDrawItem == NULL ) { CreatePin(DC); } else { SaveCopyInUndoList(); PlacePin(DC); } break; case ID_LIBEDIT_BODY_LINE_BUTT : case ID_LIBEDIT_BODY_ARC_BUTT : case ID_LIBEDIT_BODY_CIRCLE_BUTT : case ID_LIBEDIT_BODY_RECT_BUTT : case ID_LIBEDIT_BODY_TEXT_BUTT : if ( CurrentDrawItem == NULL) { CurrentDrawItem = CreateGraphicItem(DC); } else { if ( CurrentDrawItem->m_Flags & IS_NEW ) GraphicItemBeginDraw(DC); else { SaveCopyInUndoList(); EndDrawGraphicItem(DC); } } break; case ID_LIBEDIT_DELETE_ITEM_BUTT : DrawEntry = LocatePin(m_CurrentScreen->m_Curseur, CurrentLibEntry, CurrentUnit, CurrentConvert); if (DrawEntry == NULL ) { DrawEntry = LocateDrawItem(GetScreen(), CurrentLibEntry,CurrentUnit, CurrentConvert,LOCATE_ALL_DRAW_ITEM); } if ( DrawEntry == NULL ) { AfficheDoc(this, CurrentLibEntry->m_Doc.GetData(), CurrentLibEntry->m_KeyWord.GetData()); break; } SaveCopyInUndoList(); if ( DrawEntry->m_StructType == COMPONENT_PIN_DRAW_TYPE ) DeletePin(DC, CurrentLibEntry, (LibDrawPin*)DrawEntry); else DeleteOneLibraryDrawStruct(DrawPanel, DC, CurrentLibEntry,DrawEntry, TRUE); DrawEntry = NULL; m_CurrentScreen->SetModify(); break; case ID_LIBEDIT_ANCHOR_ITEM_BUTT : SaveCopyInUndoList(); PlaceAncre(); SetToolID( 0, wxCURSOR_ARROW, wxEmptyString); break; default : DisplayError(this, wxT("WinEDA_LibeditFrame::OnLeftClick error") ); SetToolID( 0, wxCURSOR_ARROW, wxEmptyString); break; } } }
void LIB_EDIT_FRAME::OnLeftClick( wxDC* DC, const wxPoint& aPosition ) { LIB_ITEM* item = m_drawItem; if( m_component == NULL ) // No component loaded ! return; if( item == NULL || item->GetFlags() == 0 ) { item = LocateItemUsingCursor( aPosition ); if( item ) { item->DisplayInfo( this ); } else { DisplayCmpDoc(); if( m_canvas->GetAbortRequest() ) m_canvas->SetAbortRequest( false ); } } switch( GetToolId() ) { case ID_NO_TOOL_SELECTED: if( item && item->GetFlags() ) // moved object { switch( item->Type() ) { case LIB_PIN_T: PlacePin( DC ); break; default: EndDrawGraphicItem( DC ); break; } } break; case ID_LIBEDIT_PIN_BUTT: if( m_drawItem == NULL || m_drawItem->GetFlags() == 0 ) { CreatePin( DC ); } else { PlacePin( DC ); } break; case ID_LIBEDIT_BODY_LINE_BUTT: case ID_LIBEDIT_BODY_ARC_BUTT: case ID_LIBEDIT_BODY_CIRCLE_BUTT: case ID_LIBEDIT_BODY_RECT_BUTT: case ID_LIBEDIT_BODY_TEXT_BUTT: if( m_drawItem == NULL || m_drawItem->GetFlags() == 0 ) { m_drawItem = CreateGraphicItem( m_component, DC ); } else if( m_drawItem ) { if( m_drawItem->IsNew() ) GraphicItemBeginDraw( DC ); else EndDrawGraphicItem( DC ); } break; case ID_LIBEDIT_DELETE_ITEM_BUTT: m_drawItem = LocateItemUsingCursor( aPosition ); if( m_drawItem ) deleteItem( DC ); else DisplayCmpDoc(); break; case ID_LIBEDIT_ANCHOR_ITEM_BUTT: SaveCopyInUndoList( m_component ); PlaceAnchor(); SetToolID( ID_NO_TOOL_SELECTED, m_canvas->GetDefaultCursor(), wxEmptyString ); break; default: wxFAIL_MSG( wxString::Format( wxT( "Unhandled command ID %d" ), GetToolId() ) ); SetToolID( ID_NO_TOOL_SELECTED, m_canvas->GetDefaultCursor(), wxEmptyString ); break; } }
void CXMLDlg::HandlePageItems(HTREEITEM pItem, CAGPage* pPage, POINT& ptOffset) { HTREEITEM pChildItem = m_treeOutput.GetChildItem(pItem); if (!pChildItem) { ASSERT(false); return; } CRect PageRect; GetPageRect(pPage, &PageRect); PageRect.OffsetRect(ptOffset); while (pChildItem) { CRect ItemRect; GetCurrentObjectRect(pChildItem, ItemRect); CString szItemType = m_treeOutput.GetItemText(pChildItem); if (!szItemType.CompareNoCase(_T("image")) ) { if (Intersect(ItemRect, PageRect)) CreateImageItem(pChildItem, pPage, ptOffset); } else if (!szItemType.CompareNoCase(_T("text")) || !szItemType.CompareNoCase(_T("date")) ) { if (Intersect(ItemRect, PageRect)) CreateTextItem(pChildItem, pPage, ptOffset); } else if (!szItemType.CompareNoCase(_T("rectangle")) || !szItemType.CompareNoCase(_T("drawing")) || !szItemType.CompareNoCase(_T("line")) || !szItemType.CompareNoCase(_T("ellipse")) ) { if (Intersect(ItemRect, PageRect)) CreateGraphicItem(pChildItem, pPage, ptOffset, szItemType); } else if (!szItemType.CompareNoCase(_T("border")) || !szItemType.CompareNoCase(_T("hyperlink")) ) { if (Intersect(ItemRect, PageRect)) CreateGraphicItem(pChildItem, pPage, ptOffset, szItemType); } else if (!szItemType.CompareNoCase(_T("group")) || !szItemType.CompareNoCase(_T("calendar")) || !szItemType.CompareNoCase(_T("table")) || !szItemType.CompareNoCase(_T("cell")) ) { HandlePageItems(pChildItem, pPage, ptOffset); } else { CString szTitle; CString szValue; Separate(m_treeOutput.GetItemText(pChildItem), szTitle, szValue); if (!szTitle.CompareNoCase(_T("dx")) ) { long lHeight = INCHES(atof(szValue)); } else if (!szTitle.CompareNoCase(_T("dy")) ) { long lWidth = INCHES(atof(szValue)); } } pChildItem = m_treeOutput.GetNextItem(pChildItem, TVGN_NEXT); } }