int EDIT_TOOL::CreateArray( const TOOL_EVENT& aEvent ) { // first, check if we have a selection, or try to get one SELECTION_TOOL* selTool = m_toolMgr->GetTool<SELECTION_TOOL>(); const SELECTION& selection = selTool->GetSelection(); // Be sure that there is at least one item that we can modify if( !hoverSelection( selection ) ) return 0; bool originalItemsModified = false; // we have a selection to work on now, so start the tool process PCB_BASE_FRAME* editFrame = getEditFrame<PCB_BASE_FRAME>(); editFrame->OnModify(); if( m_editModules ) { // Module editors do their undo point upfront for the whole module editFrame->SaveCopyInUndoList( editFrame->GetBoard()->m_Modules, UR_MODEDIT ); } else { // We may also change the original item editFrame->SaveCopyInUndoList( selection.items, UR_CHANGED ); } DIALOG_CREATE_ARRAY::ARRAY_OPTIONS* array_opts = NULL; VECTOR2I rp = selection.GetCenter(); const wxPoint rotPoint( rp.x, rp.y ); DIALOG_CREATE_ARRAY dialog( editFrame, rotPoint, &array_opts ); int ret = dialog.ShowModal(); if( ret == wxID_OK && array_opts != NULL ) { PICKED_ITEMS_LIST newItemList; for( int i = 0; i < selection.Size(); ++i ) { BOARD_ITEM* item = selection.Item<BOARD_ITEM>( i ); if( !item ) continue; wxString cachedString; if( item->Type() == PCB_MODULE_T ) { cachedString = static_cast<MODULE*>( item )->GetReferencePrefix(); } else if( EDA_TEXT* text = dynamic_cast<EDA_TEXT*>( item ) ) { // Copy the text (not just take a reference cachedString = text->GetText(); } // iterate across the array, laying out the item at the // correct position const unsigned nPoints = array_opts->GetArraySize(); for( unsigned ptN = 0; ptN < nPoints; ++ptN ) { BOARD_ITEM* newItem = NULL; if( ptN == 0 ) newItem = item; else { // if renumbering, no need to increment const bool increment = !array_opts->ShouldRenumberItems(); // Some items cannot be duplicated // i.e. the ref and value fields of a footprint or zones // therefore newItem can be null if( m_editModules ) newItem = editFrame->GetBoard()->m_Modules->DuplicateAndAddItem( item, increment ); else { #if 0 // @TODO: see if we allow zone duplication here // Duplicate zones is especially tricky (overlaping zones must be merged) // so zones are not duplicated if( item->Type() == PCB_ZONE_AREA_T ) newItem = NULL; else #endif newItem = editFrame->GetBoard()->DuplicateAndAddItem( item, increment ); } if( newItem ) { array_opts->TransformItem( ptN, newItem, rotPoint ); m_toolMgr->RunAction( COMMON_ACTIONS::unselectItem, true, newItem ); newItemList.PushItem( newItem ); if( newItem->Type() == PCB_MODULE_T) { static_cast<MODULE*>( newItem )->RunOnChildren( boost::bind( &KIGFX::VIEW::Add, getView(), _1 ) ); } editFrame->GetGalCanvas()->GetView()->Add( newItem ); getModel<BOARD>()->GetRatsnest()->Update( newItem ); } } // set the number if needed: if( newItem && array_opts->ShouldRenumberItems() ) { switch( newItem->Type() ) { case PCB_PAD_T: { const wxString padName = array_opts->GetItemNumber( ptN ); static_cast<D_PAD*>( newItem )->SetPadName( padName ); originalItemsModified = true; break; } case PCB_MODULE_T: { const wxString moduleName = array_opts->GetItemNumber( ptN ); MODULE* module = static_cast<MODULE*>( newItem ); module->SetReference( cachedString + moduleName ); originalItemsModified = true; break; } case PCB_MODULE_TEXT_T: case PCB_TEXT_T: { EDA_TEXT* text = dynamic_cast<EDA_TEXT*>( newItem ); if( text ) text->SetText( array_opts->InterpolateNumberIntoString( ptN, cachedString ) ); originalItemsModified = true; break; } default: // no renumbering of other items break; } } } } if( !m_editModules ) { if( originalItemsModified ) { // Update the appearance of the original items selection.group->ItemsViewUpdate( KIGFX::VIEW_ITEM::GEOMETRY ); } // Add all items as a single undo point for PCB editors // TODO: Can this be merged into the previous undo point (where // we saved the original items) editFrame->SaveCopyInUndoList( newItemList, UR_NEW ); } } getModel<BOARD>()->GetRatsnest()->Recalculate(); return 0; }
void AP_Dialog_Modeless::setActiveFrame(XAP_Frame * /*pFrame*/) { setView(getView()); notifyActiveFrame(getActiveFrame()); }
PView *GMSH_LongituteLatitudePlugin::execute(PView *v) { int iView = (int)LongituteLatitudeOptions_Number[0].def; PView *v1 = getView(iView, v); if(!v1) return v; PViewData *data1 = v1->getData(); if(data1->isNodeData()){ // tag all the nodes with "0" (the default tag) for(int step = 0; step < data1->getNumTimeSteps(); step++){ for(int ent = 0; ent < data1->getNumEntities(step); ent++){ for(int ele = 0; ele < data1->getNumElements(step, ent); ele++){ if(data1->skipElement(step, ent, ele)) continue; for(int nod = 0; nod < data1->getNumNodes(step, ent, ele); nod++) data1->tagNode(step, ent, ele, nod, 0); } } } } double gxmin = 180, gxmax = -180, gymin = 90, gymax = -90; // transform all "0" nodes for(int step = 0; step < data1->getNumTimeSteps(); step++){ for(int ent = 0; ent < data1->getNumEntities(step); ent++){ for(int ele = 0; ele < data1->getNumElements(step, ent); ele++){ if(data1->skipElement(step, ent, ele)) continue; int nbComp = data1->getNumComponents(step, ent, ele); double vin[3], vout[3]; double xmin = M_PI, xmax = -M_PI; for(int nod = 0; nod < data1->getNumNodes(step, ent, ele); nod++){ double x, y, z; int tag = data1->getNode(step, ent, ele, nod, x, y, z); if(data1->isNodeData() && tag) continue; double x2, y2, z2; z2 = sqrt(x * x + y * y + z * z); y2 = asin(z / z2); x2 = atan2(y, x); xmin=std::min(x2, xmin); xmax=std::max(x2, xmax); gxmin = std::min(x2 * 180 / M_PI, gxmin); gxmax = std::max(x2 * 180 / M_PI, gxmax); gymin = std::min(y2 * 180 / M_PI, gymin); gymax = std::max(y2 * 180 / M_PI, gymax); data1->setNode(step, ent, ele, nod, x2 * 180 / M_PI, y2 * 180 / M_PI, 0); if(data1->isNodeData()) data1->tagNode(step, ent, ele, nod, 1); if(nbComp == 3){ for(int i = 0; i < 3; i++) data1->getValue(step, ent, ele, nod, i, vin[i]); vout[0] = -sin(x2) * vin[0] + cos(x2) * vin[1]; vout[1] = -sin(y2) * (cos(x2) * vin[0] + sin(x2) * vin[1]) + cos(y2) * vin[2]; vout[2] = cos(y2) * (cos(x2) * vin[0] + sin(x2) * vin[1]) + sin(y2) * vin[2]; for(int i = 0; i < 3; i++) data1->setValue(step, ent, ele, nod, i, vout[i]); } } if(xmax - xmin > M_PI){ // periodicity check (broken for continuous views) for(int nod = 0; nod < data1->getNumNodes(step, ent, ele); nod++){ double x, y, z; data1->getNode(step, ent, ele, nod, x, y, z); if(xmax * 180 / M_PI - x > 180) x += 360; data1->setNode(step, ent, ele, nod, x, y, z); } } } } } data1->destroyAdaptiveData(); data1->finalize(); SetBoundingBox(); SBoundingBox3d bb(gxmin, gymin, 0, gxmax, gymax, 0); data1->setBoundingBox(bb); v1->setChanged(true); return v1; }
void Ti::TiViewProxy::setZIndex(Ti::TiValue value) { getView()->setZIndex((int)value.toNumber()); }
const ViewData* Channel::getViewData() const { const View* view = getView(); return view ? view->getViewData() : 0; }
Ti::TiValue Ti::TiViewProxy::getTop() { Ti::TiValue val; val.setString(getView()->_top); return val; }
Ti::TiValue Ti::TiViewProxy::getLeft() { Ti::TiValue val; val.setString(getView()->_left); return val; }
/*! * Returns the block at the current point. */ fl_BlockLayout * AP_Dialog_Lists::getBlock(void) const { return getView()->getCurrentBlock(); }
/*! * This method Does the stuff requested on the "action" button, "Apply" in the * Modeless dialog and "OK" in the Modal dialog. * Read comments with for all the stuff that can happen. */ void AP_Dialog_Lists::Apply(void) { gchar szStart[20]; if(!isModal() && (!isPageLists() || m_bFoldingLevelChanged)) { // // OK fold up the text according the level specified. // m_bFoldingLevelChanged = false; fl_AutoNum * pAuto = getBlock()->getAutoNum(); const gchar * props[5] = {"text-folded",NULL,"text-folded-id",NULL,NULL}; UT_UTF8String sStr = UT_UTF8String_sprintf("%d",getCurrentFold()); props[1] = sStr.utf8_str(); UT_uint32 ID = 0; if(!pAuto) { ID = getView()->getDocument()->getUID(UT_UniqueId::List); } else { ID = pAuto->getID(); } UT_UTF8String sID = UT_UTF8String_sprintf("%d",ID); props[3] = sID.utf8_str(); PT_DocPosition posLow = 0; PT_DocPosition posHigh = 0; if(getView()->isSelectionEmpty() && pAuto) { PL_StruxDocHandle sdhLow = pAuto->getFirstItem(); PL_StruxDocHandle sdhHigh = pAuto->getLastItemInHeiracy(); posLow = getView()->getDocument()->getStruxPosition(sdhLow)+1; posHigh = getView()->getDocument()->getStruxPosition(sdhHigh)+1; } else { posLow = getView()->getPoint(); posHigh = getView()->getSelectionAnchor(); if(posLow > posHigh) { PT_DocPosition posTemp = posLow; posLow = posHigh; posHigh = posTemp; } } getView()->setCollapsedRange(posLow,posHigh,props); return; } /*! * * OK this is failsafe code incase the user has changed the font but wants a * bullet list anyway. We don't let then! */ if(m_NewListType == BULLETED_LIST || m_NewListType == IMPLIES_LIST) { m_pszFont = "Symbol"; } else if(m_NewListType > DASHED_LIST && m_NewListType < OTHER_NUMBERED_LISTS) { m_pszFont = _getDingbatsFontName(); } /*! * Just to make things even more confusing this method is also used in a Modal * mannor by the styles dialog. This method is called when the users clicks "OK" * on the modal dialog. When that happens we fill an output vector with all the * properties currently defined. */ if(isModal()) { // // Fill out output vector with gchar * strings to be accessed via the calling // function. // if(m_OutProps.getItemCount() > 0) m_OutProps.clear(); sprintf(szStart,"%d",m_iStartValue); m_OutProps.addItem((void *) "start-value"); m_Output[0] = (gchar *) szStart; m_OutProps.addItem((void *) m_Output[0].c_str()); m_OutProps.addItem((void *) "list-style"); m_Output[1] = getBlock()->getListStyleString(m_NewListType); m_OutProps.addItem((void *) m_Output[1].c_str()); m_OutProps.addItem((void *) "list-delim"); m_OutProps.addItem((void *) m_pszDelim.c_str()); m_OutProps.addItem((void *) "list-decimal"); m_OutProps.addItem((void *) m_pszDecimal.c_str()); m_OutProps.addItem((void *) "field-font"); m_OutProps.addItem((void *) m_pszFont.c_str()); m_OutProps.addItem((void *) "margin-left"); m_Output[2] = UT_convertInchesToDimensionString(DIM_IN, m_fAlign, 0); m_OutProps.addItem((void *) m_Output[2].c_str()); m_OutProps.addItem((void *) "text-indent"); m_Output[3] = UT_convertInchesToDimensionString(DIM_IN, m_fIndent, 0); m_OutProps.addItem((void *) m_Output[3].c_str()); m_Answer = a_OK; return; } /*! * If the "Apply to current" radio buton is chosen we have two options. * 1. If "No list" is chosen we stop the current list at on this block. * 2. Otherwise we change the current list to the type requested here. * This piece of code changes the list style at the current point to the * Style requested by the user. */ UT_GenericVector<fl_BlockLayout*> vBlock; UT_uint32 i = 0; getView()->getBlocksInSelection(&vBlock); UT_uint32 count = vBlock.getItemCount(); getView()->cmdUnselectSelection(); if(m_bApplyToCurrent == true && m_isListAtPoint == true && m_NewListType != NOT_A_LIST) { getView()->getDocument()->beginUserAtomicGlob(); getView()->changeListStyle(getAutoNum(),m_NewListType,m_iStartValue, m_pszDelim.c_str(), m_pszDecimal.c_str(), m_pszFont.c_str(),m_fAlign,m_fIndent); if(getAutoNum() != NULL) { getAutoNum()->update(0); } getView()->getDocument()->endUserAtomicGlob(); clearDirty(); getView()->updateLayout(); getView()->setPoint(getView()->getPoint()); getView()->ensureInsertionPointOnScreen(); return; } /*! * This code stops the list at the current point. */ if ( m_isListAtPoint == true && m_NewListType == NOT_A_LIST) { getView()->getDocument()->beginUserAtomicGlob(); for(i=0;i < count; i++) { fl_BlockLayout * pBlock = (fl_BlockLayout *) vBlock.getNthItem(i); if(pBlock->isListItem() == true) { getView()->getDocument()->StopList(pBlock->getStruxDocHandle()); } } getView()->getDocument()->endUserAtomicGlob(); clearDirty(); getView()->updateLayout(); getView()->setPoint(getView()->getPoint()); getView()->ensureInsertionPointOnScreen(); return; } /*! * Start new list. 4 Possibilities. * 1. If there is a list at the current point and the user choose no list, stop * the list the current point. * * 2. start a new list with the properties given if there is not a * list at the current point. * * 3. Start a sublist at the current point if a list already exists there and * contains two or more items. * * 4. Change the list to the requested value if a list already eists but only * has one item in it. */ if(m_bStartNewList == true) { getView()->getDocument()->beginUserAtomicGlob(); for(i=0;i < count; i++) { fl_BlockLayout * pBlock2 = (fl_BlockLayout *) vBlock.getNthItem(i); if(pBlock2->isListItem() == true && m_NewListType == NOT_A_LIST) { // // This stops the current list. // if(pBlock2->isListItem() == true) { getView()->getDocument()->StopList(pBlock2->getStruxDocHandle()); } } else if ( pBlock2->isListItem() == false && m_NewListType != NOT_A_LIST ) { // // This starts the new list // pBlock2->getDocument()->disableListUpdates(); if(i == 0) { pBlock2->StartList(m_NewListType,m_iStartValue, m_pszDelim.c_str(), m_pszDecimal.c_str(), m_pszFont.c_str(), m_fAlign, m_fIndent, 0, 1); pBlock2->getDocument()->enableListUpdates(); pBlock2->getDocument()->updateDirtyLists(); } else { fl_BlockLayout * pBlock = (fl_BlockLayout *) vBlock.getNthItem(i); fl_BlockLayout * rBlock = (fl_BlockLayout *) pBlock->getPrev(); if(rBlock != NULL) { pBlock->resumeList(rBlock); pBlock->getDocument()->enableListUpdates(); } } } else if( pBlock2->getAutoNum() && (pBlock2->getAutoNum()->getNumLabels() > 1) && m_NewListType != NOT_A_LIST ) { // // This starts a sublist. // UT_uint32 curlevel = pBlock2->getLevel(); UT_uint32 currID = pBlock2->getAutoNum()->getID(); curlevel++; pBlock2->getDocument()->disableListUpdates(); // // Need to update m_fAlign and m_fIndent to reflect the higher level of indentation. // if(i == 0) { m_fAlign = m_fAlign + (float) LIST_DEFAULT_INDENT; pBlock2->StartList(m_NewListType,m_iStartValue, m_pszDelim.c_str(), m_pszDecimal.c_str(), m_pszFont.c_str(), m_fAlign, m_fIndent, currID,curlevel); pBlock2->getDocument()->enableListUpdates(); pBlock2->getDocument()->updateDirtyLists(); } else { fl_BlockLayout * pBlock = (fl_BlockLayout *) vBlock.getNthItem(i); fl_BlockLayout * rBlock = (fl_BlockLayout *) pBlock->getPrev(); if(rBlock != NULL) { pBlock->resumeList(rBlock); pBlock->getDocument()->enableListUpdates(); pBlock->getDocument()->updateDirtyLists(); } } } else if( pBlock2->getAutoNum() && (pBlock2->getAutoNum()->getNumLabels() <= 1) && m_NewListType != NOT_A_LIST ) { // // The list at the current point only has one item which is the current paragraph. // We can't share an sdh amongst two autonum's so we can't start a sublist. // We'll change the list style instead. // getView()->changeListStyle(pBlock2->getAutoNum(), m_NewListType, m_iStartValue, m_pszDelim.c_str(), m_pszDecimal.c_str(), m_pszFont.c_str(), m_fAlign, m_fIndent); if(pBlock2->getAutoNum() != NULL) { pBlock2->getAutoNum()->update(0); } } } clearDirty(); getView()->updateLayout(); getView()->setPoint(getView()->getPoint()); getView()->updateScreen(true); getView()->notifyListeners(AV_CHG_MOTION | AV_CHG_HDRFTR); getView()->getDocument()->endUserAtomicGlob(); getView()->ensureInsertionPointOnScreen(); return; } /*! * OK Attach the block at this point to the previous list of the same margin. */ if(m_bResumeList == true && m_isListAtPoint != true ) { getView()->getDocument()->beginUserAtomicGlob(); for(i=0;i < count; i++) { fl_BlockLayout * pBlock = (fl_BlockLayout *) vBlock.getNthItem(i); fl_BlockLayout * rBlock = pBlock->getPreviousListOfSameMargin(); if(rBlock != NULL) { pBlock->resumeList(rBlock); pBlock->getDocument()->enableListUpdates(); pBlock->getDocument()->updateDirtyLists(); } } getView()->getDocument()->endUserAtomicGlob(); } getView()->updateLayout(); getView()->setPoint(getView()->getPoint()); getView()->updateScreen(true); getView()->notifyListeners(AV_CHG_MOTION | AV_CHG_HDRFTR); getView()->ensureInsertionPointOnScreen(); clearDirty(); }
int16 GfxCache::kernelViewGetLoopCount(GuiResourceId viewId) { return getView(viewId)->getLoopCount(); }
void AP_Dialog_Lists::StopList(void) { getBlock()->listUpdate(); getView()->cmdStopList(); }
int16 GfxCache::kernelViewGetCelHeight(GuiResourceId viewId, int16 loopNo, int16 celNo) { return getView(viewId)->getCelInfo(loopNo, celNo)->scriptHeight; }
int16 GfxCache::kernelViewGetCelCount(GuiResourceId viewId, int16 loopNo) { return getView(viewId)->getCelCount(loopNo); }
Vector2f RenderTarget::convertCoords(const Vector2i& point) const { return convertCoords(point, getView()); }
void Ti::TiViewProxy::setLayout(Ti::TiValue value) { getView()->_setLayout(value.toString()); }
/*! * * This function loads the standard values into Delim, decimal, format * m_fAlign, m_iLevel and m_iStarValue based on m_NewListType * * m_fAlign and m_fIndent should be in inches */ void AP_Dialog_Lists::fillUncustomizedValues(void) { // if we can get the current font, we will use it where appropriate // the "NULL" string does not work too well on Windows in numbered lists const gchar** props_in = NULL; const gchar * font_family; if (getView()->getCharFormat(&props_in)) font_family = UT_getAttribute("font-family", props_in); else font_family =(const gchar *) "NULL"; if(m_NewListType == NOT_A_LIST) { m_pszDelim = "%L"; m_fAlign = 0.0; m_fIndent = 0.0; m_iLevel = 0; m_pszFont = "NULL"; m_pszDecimal = "."; m_iStartValue = 1; } if(m_iLevel <= 0) { m_iLevel = 1; } m_pszDelim = "%L"; m_fAlign = (float)(LIST_DEFAULT_INDENT * m_iLevel); m_fIndent = (float)-LIST_DEFAULT_INDENT_LABEL; if( m_NewListType == NUMBERED_LIST) { m_pszFont = font_family; m_pszDecimal = "."; m_iStartValue = 1; m_pszDelim = "%L."; } else if( m_NewListType == LOWERCASE_LIST) { m_pszFont = font_family; m_pszDecimal = "."; m_iStartValue = 1; m_pszDelim = "%L)"; } else if( m_NewListType == UPPERCASE_LIST) { m_pszFont = font_family; m_pszDecimal = "."; m_iStartValue = 1; m_pszDelim = "%L)"; } else if( m_NewListType == HEBREW_LIST) { m_pszFont = font_family; m_pszDecimal = ""; m_iStartValue = 1; m_pszDelim = "%L"; } else if( m_NewListType == ARABICNUMBERED_LIST) { m_pszFont = font_family; m_pszDecimal = ""; m_iStartValue = 1; m_pszDelim = "%L"; } else if( m_NewListType < BULLETED_LIST) { m_pszFont = "NULL"; m_pszDecimal = "."; m_iStartValue = 1; m_pszDelim = "%L"; } else { m_pszFont = "NULL"; m_pszDecimal = "."; m_iStartValue = 0; } if(m_NewListType == BULLETED_LIST || m_NewListType == IMPLIES_LIST) { m_pszFont = "Symbol"; } else if (m_NewListType == NOT_A_LIST) { m_pszFont = "NULL"; } else if(m_NewListType > DASHED_LIST && m_NewListType < OTHER_NUMBERED_LISTS) { m_pszFont = _getDingbatsFontName(); } if(props_in) g_free(props_in); }
Ti::TiValue Ti::TiViewProxy::getWidth() { Ti::TiValue val; val.setString(getView()->_width); return val; }
AnimItemDimViewIndexID CurveGui::getCurveID() const { return AnimItemDimViewIndexID(getItem(), getView(), getDimension()); }
Ti::TiValue Ti::TiViewProxy::getBottom() { Ti::TiValue val; val.setString(getView()->_bottom); return val; }
void RenderWindow::onResize() { // Update the current view (recompute the viewport, which is stored in relative coordinates) setView(getView()); }
Ti::TiValue Ti::TiViewProxy::getRight() { Ti::TiValue val; val.setString(getView()->_right); return val; }
void AP_UnixDialog_Styles::runModal(XAP_Frame * pFrame) { // // Get View and Document pointers. Place them in member variables // setFrame(pFrame); setView(static_cast<FV_View *>(pFrame->getCurrentView())); UT_ASSERT(getView()); setDoc(getView()->getLayout()->getDocument()); UT_ASSERT(getDoc()); // Build the window's widgets and arrange them m_windowMain = _constructWindow(); UT_ASSERT(m_windowMain); abiSetupModalDialog(GTK_DIALOG(m_windowMain), pFrame, this, GTK_RESPONSE_CLOSE); // *** this is how we add the gc for the para and char Preview's *** // attach a new graphics context to the drawing area UT_ASSERT(m_wParaPreviewArea && gtk_widget_get_window(m_wParaPreviewArea)); // make a new Unix GC DELETEP (m_pParaPreviewWidget); { GR_UnixCairoAllocInfo ai(m_wParaPreviewArea); m_pParaPreviewWidget = (GR_CairoGraphics*) XAP_App::getApp()->newGraphics(ai); } // let the widget materialize GtkAllocation allocation; gtk_widget_get_allocation(m_wParaPreviewArea, &allocation); _createParaPreviewFromGC(m_pParaPreviewWidget, static_cast<UT_uint32>(allocation.width), static_cast<UT_uint32>(allocation.height)); UT_ASSERT(m_wCharPreviewArea && gtk_widget_get_window(m_wCharPreviewArea)); // make a new Unix GC DELETEP (m_pCharPreviewWidget); { GR_UnixCairoAllocInfo ai(m_wCharPreviewArea); m_pCharPreviewWidget = (GR_CairoGraphics*) XAP_App::getApp()->newGraphics(ai); } // let the widget materialize gtk_widget_get_allocation(m_wCharPreviewArea, &allocation); _createCharPreviewFromGC(m_pCharPreviewWidget, static_cast<UT_uint32>(allocation.width), static_cast<UT_uint32>(allocation.height)); // Populate the window's data items _populateWindowData(); // the expose event of the preview g_signal_connect(G_OBJECT(m_wParaPreviewArea), #if GTK_CHECK_VERSION(3,0,0) "draw", #else "expose_event", #endif G_CALLBACK(s_paraPreview_draw), reinterpret_cast<gpointer>(this)); g_signal_connect(G_OBJECT(m_wCharPreviewArea), #if GTK_CHECK_VERSION(3,0,0) "draw", #else "expose_event", #endif G_CALLBACK(s_charPreview_draw), reinterpret_cast<gpointer>(this)); // connect the select_row signal to the clist g_signal_connect (G_OBJECT (gtk_tree_view_get_selection(GTK_TREE_VIEW(m_tvStyles))), "changed", G_CALLBACK (s_tvStyles_selection_changed), reinterpret_cast<gpointer>(this)); // main loop for the dialog gint response; while(true) { response = abiRunModalDialog(GTK_DIALOG(m_windowMain), false); if (response == GTK_RESPONSE_APPLY) event_Apply(); else { event_Close(); break; // exit the loop } } DELETEP (m_pParaPreviewWidget); DELETEP (m_pCharPreviewWidget); abiDestroyWidget(m_windowMain); }
/*! * Update cached data like number of lines and pages. */ void AP_UnixDialog_Goto::updateDocCount () { m_DocCount = getView()->countWords (); UT_DEBUGMSG (("ROB: updateCache () page='%d' line='%d'\n", m_DocCount.page, m_DocCount.line)); }
void Ti::TiViewProxy::onEventAdded(QString eventName) { getView()->onEventAdded(eventName); Ti::TiProxy::onEventAdded(eventName); }
PView *GMSH_CurlPlugin::execute(PView *v) { int iView = (int)CurlOptions_Number[0].def; PView *v1 = getView(iView, v); if(!v1) return v; PViewData *data1 = getPossiblyAdaptiveData(v1); if(data1->hasMultipleMeshes()){ Msg::Error("Curl plugin cannot be run on multi-mesh views"); return v; } PView *v2 = new PView(); PViewDataList *data2 = getDataList(v2); int firstNonEmptyStep = data1->getFirstNonEmptyTimeStep(); for(int ent = 0; ent < data1->getNumEntities(firstNonEmptyStep); ent++){ for(int ele = 0; ele < data1->getNumElements(firstNonEmptyStep, ent); ele++){ if(data1->skipElement(firstNonEmptyStep, ent, ele)) continue; int numComp = data1->getNumComponents(firstNonEmptyStep, ent, ele); if(numComp != 3) continue; int type = data1->getType(firstNonEmptyStep, ent, ele); int numNodes = data1->getNumNodes(firstNonEmptyStep, ent, ele); std::vector<double> *out = data2->incrementList(3, type, numNodes); if(!out) continue; double x[8], y[8], z[8], val[8 * 3]; for(int nod = 0; nod < numNodes; nod++) data1->getNode(firstNonEmptyStep, ent, ele, nod, x[nod], y[nod], z[nod]); int dim = data1->getDimension(firstNonEmptyStep, ent, ele); elementFactory factory; element *element = factory.create(numNodes, dim, x, y, z); if(!element) continue; for(int nod = 0; nod < numNodes; nod++) out->push_back(x[nod]); for(int nod = 0; nod < numNodes; nod++) out->push_back(y[nod]); for(int nod = 0; nod < numNodes; nod++) out->push_back(z[nod]); for(int step = 0; step < data1->getNumTimeSteps(); step++){ if(!data1->hasTimeStep(step)) continue; for(int nod = 0; nod < numNodes; nod++) for(int comp = 0; comp < numComp; comp++) data1->getValue(step, ent, ele, nod, comp, val[numComp * nod + comp]); for(int nod = 0; nod < numNodes; nod++){ double u, v, w, f[3]; element->getNode(nod, u, v, w); element->interpolateCurl(val, u, v, w, f, 3); out->push_back(f[0]); out->push_back(f[1]); out->push_back(f[2]); } } delete element; } } for(int i = 0; i < data1->getNumTimeSteps(); i++){ if(!data1->hasTimeStep(i)) continue; double time = data1->getTime(i); data2->Time.push_back(time); } data2->setName(data1->getName() + "_Curl"); data2->setFileName(data1->getName() + "_Curl.pos"); data2->finalize(); return v2; }
void Ti::TiViewProxy::setTop(Ti::TiValue value) { getView()->_setTop(value.toString()); }
void AP_Dialog_Modeless::closePopupPreviewBubbles() { FV_View* view = getView(); m_bubbleBlocker = view->getBubbleBlocker(); }
void Ti::TiViewProxy::setBottom(Ti::TiValue value) { getView()->_setBottom(value.toString()); }
void GUI::selectPipeline() { // Refresh available pipelines std::string currentPipeline = mSelectPipeline->currentText().toStdString(); mPipelines = getAvailablePipelines(); int index = 0; int counter = 0; mSelectPipeline->clear(); for(auto pipeline : mPipelines) { std::string label = pipeline.getName() + " (" + pipeline.getDescription() + ")"; mSelectPipeline->addItem((label).c_str()); if(label == currentPipeline) { index = counter; } ++counter; } mSelectPipeline->setCurrentIndex(index); mSelectPipeline->update(); // Stop computation thread before removing renderers stopComputationThread(); std::vector<std::string> inputData; for(QListWidgetItem* widget : mList->selectedItems()) { std::string asd = widget->text().toUtf8().constData(); inputData.push_back(asd); } mStreamer = ImageFileStreamer::New(); mStreamer->setFilenameFormats(inputData); mStreamer->setMainDevice(Host::getInstance()); getView(0)->removeAllRenderers(); int selectedPipeline = mSelectPipeline->currentIndex(); Pipeline pipeline = mPipelines.at(selectedPipeline); int nrOfFrames = 0; try { int inputsRequired = pipeline.parsePipelineFile(); std::vector<DataPort::pointer> inputs; while(inputsRequired--) inputs.push_back(mStreamer->getOutputPort()); // Preload the data mStreamer->update(0, STREAMING_MODE_STORE_ALL_FRAMES); while(!mStreamer->hasReachedEnd()) { std::this_thread::sleep_for(std::chrono::milliseconds(100)); } nrOfFrames = inputs[0]->getSize(); std::vector<SharedPointer<Renderer>> renderers = pipeline.setup(inputs); for(auto renderer : renderers) { // A hack for text renderer which needs a reference to the view if(renderer->getNameOfClass() == "TextRenderer") { TextRenderer::pointer textRenderer = std::dynamic_pointer_cast<TextRenderer>(renderer); textRenderer->setView(getView(0)); } getView(0)->addRenderer(renderer); } getView(0)->reinitialize(); } catch(Exception &e) { QMessageBox* message = new QMessageBox; message->setWindowTitle("Error"); message->setText(e.what()); message->show(); } startComputationThread(); mPlayPauseButton->setText("Pause"); mPlayPauseButton->setStyleSheet("QPushButton { background-color: red; color: white; }"); mThread->setTimestepLimit(nrOfFrames); mTimestepSlider->setRange(0, nrOfFrames - 1); mThread->setTimestepLoop(true); QObject::connect(mThread, &ComputationThread::timestepIncreased, std::bind(&GUI::increaseTimestep, this)); /* PipelineWidget* pipelineWidget = new PipelineWidget(pipeline, mWidget); pipelineWidget->setFixedWidth(menuWidth); if(mPipelineWidget == nullptr) { menuLayout->addWidget(pipelineWidget); } else { menuLayout->replaceWidget(mPipelineWidget, pipelineWidget); } mPipelineWidget = pipelineWidget; */ }
int EDIT_TOOL::Duplicate( const TOOL_EVENT& aEvent ) { bool increment = aEvent.IsAction( &COMMON_ACTIONS::duplicateIncrement ); // first, check if we have a selection, or try to get one SELECTION_TOOL* selTool = m_toolMgr->GetTool<SELECTION_TOOL>(); const SELECTION& selection = selTool->GetSelection(); // Be sure that there is at least one item that we can modify if( !hoverSelection( selection ) ) return 0; // we have a selection to work on now, so start the tool process PCB_BASE_FRAME* editFrame = getEditFrame<PCB_BASE_FRAME>(); editFrame->OnModify(); // prevent other tools making undo points while the duplicate is going on // so that if you cancel, you don't get a duplicate object hiding over // the original incUndoInhibit(); if( m_editModules ) editFrame->SaveCopyInUndoList( editFrame->GetBoard()->m_Modules, UR_MODEDIT ); std::vector<BOARD_ITEM*> old_items; for( int i = 0; i < selection.Size(); ++i ) { BOARD_ITEM* item = selection.Item<BOARD_ITEM>( i ); if( item ) old_items.push_back( item ); } for( unsigned i = 0; i < old_items.size(); ++i ) { BOARD_ITEM* item = old_items[i]; // Unselect the item, so we won't pick it up again // Do this first, so a single-item duplicate will correctly call // SetCurItem and show the item properties m_toolMgr->RunAction( COMMON_ACTIONS::unselectItem, true, item ); BOARD_ITEM* new_item = NULL; if( m_editModules ) new_item = editFrame->GetBoard()->m_Modules->DuplicateAndAddItem( item, increment ); else { #if 0 // @TODO: see if we allow zone duplication here // Duplicate zones is especially tricky (overlaping zones must be merged) // so zones are not duplicated if( item->Type() != PCB_ZONE_AREA_T ) #endif new_item = editFrame->GetBoard()->DuplicateAndAddItem( item, increment ); } if( new_item ) { if( new_item->Type() == PCB_MODULE_T ) { static_cast<MODULE*>( new_item )->RunOnChildren( boost::bind( &KIGFX::VIEW::Add, getView(), _1 ) ); } editFrame->GetGalCanvas()->GetView()->Add( new_item ); // Select the new item, so we can pick it up m_toolMgr->RunAction( COMMON_ACTIONS::selectItem, true, new_item ); } } // record the new items as added if( !m_editModules ) editFrame->SaveCopyInUndoList( selection.items, UR_NEW ); editFrame->DisplayToolMsg( wxString::Format( _( "Duplicated %d item(s)" ), (int) old_items.size() ) ); // pick up the selected item(s) and start moving // this works well for "dropping" copies around TOOL_EVENT evt = COMMON_ACTIONS::editActivate.MakeEvent(); Main( evt ); // and re-enable undos decUndoInhibit(); return 0; }