void AP_Dialog_Paragraph::_createPreviewFromGC(GR_Graphics * gc, UT_uint32 width, UT_uint32 height) { UT_return_if_fail (gc); // g_free any attached preview DELETEP(m_paragraphPreview); // platform's runModal should have set this UT_return_if_fail (m_pFrame); AV_View * baseview = m_pFrame->getCurrentView(); UT_return_if_fail (baseview); FV_View * view = static_cast<FV_View *> (baseview); FL_DocLayout * dl = view->getLayout(); UT_return_if_fail (dl); fl_BlockLayout * bl = dl->findBlockAtPosition((PT_DocPosition) view->getPoint()); UT_return_if_fail (bl); UT_GrowBuf gb; bool hadMem = bl->getBlockBuf(&gb); UT_UCSChar * tmp = NULL; if (hadMem && gb.getLength() > 0) { gb.truncate(NUM_CHARS_FOR_SAMPLE); UT_UCS4_cloneString(&tmp, (UT_UCSChar *) gb.getPointer(0)); } else { const XAP_StringSet * pSS = m_pApp->getStringSet(); // if the paragraph was empty, use our sample UT_UCS4_cloneString_char(&tmp, pSS->getValue(AP_STRING_ID_DLG_Para_PreviewSampleFallback)); } m_paragraphPreview = new AP_Preview_Paragraph(gc, tmp, this); FREEP(tmp); UT_return_if_fail (m_paragraphPreview); m_paragraphPreview->setWindowSize(width, height); // TODO : any setup of the GC for drawing }
/*! * This method sets the sensitivity of the radio buttons to above/below/left/right merges * Because we can't merge to the left of column zero for example. * * Call this right after contructing the widget and before dropping into the main loop. */ void AP_Dialog_SplitCells::setAllSensitivities(void) { FV_View * pView = 0; if (XAP_Frame * pFrame = getApp()->getLastFocussedFrame()) { pView = static_cast<FV_View *>(pFrame->getCurrentView()); } if (!pView) { setSensitivity(vert_above, false); setSensitivity(vert_mid, false); setSensitivity(vert_below, false); setSensitivity(hori_left, false); setSensitivity(hori_mid, false); setSensitivity(hori_right, false); return; } if (!pView->isInTable()) { setSensitivity(vert_above, false); setSensitivity(vert_mid, false); setSensitivity(vert_below, false); setSensitivity(hori_left, false); setSensitivity(hori_mid, false); setSensitivity(hori_right, false); return; } PT_DocPosition iCurPos = pView->getPoint(); m_iCellSource = iCurPos; pView->getCellParams(iCurPos,&m_iLeft,&m_iRight,&m_iTop,&m_iBot); // // Now find the number of rows and columns inthis table. This is easiest to // get from the table container // fl_BlockLayout * pBL = pView->getLayout()->findBlockAtPosition(iCurPos); fp_Run * pRun; UT_sint32 xPoint,yPoint,xPoint2,yPoint2,iPointHeight; bool bDirection; pRun = pBL->findPointCoords(iCurPos, false, xPoint, yPoint, xPoint2, yPoint2, iPointHeight, bDirection); UT_return_if_fail(pRun); fp_Line * pLine = pRun->getLine(); UT_return_if_fail(pLine); fp_Container * pCon = pLine->getContainer(); UT_return_if_fail(pCon); fp_TableContainer * pTab = static_cast<fp_TableContainer *>(pCon->getContainer()); UT_return_if_fail(pTab); UT_return_if_fail(pTab->getContainerType() == FP_CONTAINER_TABLE); m_pTab = pTab; m_iNumRows = pTab->getNumRows(); m_iNumCols = pTab->getNumCols(); if(m_iBot > m_iTop+2) { setSensitivity(vert_above,true); setSensitivity(vert_below,true); } else { setSensitivity(vert_above,false); setSensitivity(vert_below,false); } UT_sint32 diff = m_iBot - m_iTop; if((m_iBot - m_iTop == 1) || (2*(diff/2) == diff)) { setSensitivity(vert_mid,true); } else { setSensitivity(vert_mid,false); } if(m_iRight > m_iLeft+2) { setSensitivity(hori_left,true); setSensitivity(hori_right,true); } else { setSensitivity(hori_left,false); setSensitivity(hori_right,false); } diff = m_iRight - m_iLeft; if((m_iRight - m_iLeft == 1) || (2*(diff/2) == diff)) { setSensitivity(hori_mid,true); } else { setSensitivity(hori_mid,false); } }
/*! * Fill the GUI tree with the styles as defined in the XP tree. */ void AP_UnixDialog_FormatTOC::_fillGUI(void) { UT_UTF8String sVal; sVal = getTOCPropVal("toc-has-heading"); GtkWidget * pW; GtkComboBox * combo = GTK_COMBO_BOX(_getWidget("wLevelOption")); gtk_combo_box_set_active(combo, getMainLevel()-1); pW = _getWidget("cbHasHeading"); if(g_ascii_strcasecmp(sVal.utf8_str(),"1") == 0) { gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(pW),TRUE); _setHasHeadingSensitivity(TRUE); } else { gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(pW),FALSE); _setHasHeadingSensitivity(FALSE); } g_object_set_data(G_OBJECT(pW),"toc-prop",(gpointer) "toc-has-heading"); g_signal_connect(G_OBJECT(pW), "toggled", G_CALLBACK(s_HasHeading_changed), (gpointer) this); sVal = getTOCPropVal("toc-heading"); pW = _getWidget("edHeadingText"); gtk_entry_set_text(GTK_ENTRY(pW),sVal.utf8_str()); g_object_set_data(G_OBJECT(pW),"toc-prop",(gpointer) "toc-heading"); sVal = getTOCPropVal("toc-heading-style"); pW = _getWidget("lbCurrentHeadingStyle"); gtk_label_set_text(GTK_LABEL(pW),sVal.utf8_str()); g_object_set_data(G_OBJECT(_getWidget("lbChangeHeadingStyle")),"display-widget",(gpointer)pW); g_object_set_data(G_OBJECT(pW),"toc-prop",(gpointer) "toc-heading-style"); FV_View * pView = static_cast<FV_View *>(getActiveFrame()->getCurrentView()); sVal = getTOCPropVal("toc-dest-style",getMainLevel()); pW= _getWidget("wDispStyle"); gtk_label_set_text(GTK_LABEL(pW),sVal.utf8_str()); g_object_set_data(G_OBJECT(_getWidget("wChangeDisp")),"display-widget",(gpointer)pW); g_object_set_data(G_OBJECT(pW),"toc-prop",(gpointer) "toc-dest-style"); sVal = getTOCPropVal("toc-has-label",getMainLevel()); pW = _getWidget("wHasLabel"); if(g_ascii_strcasecmp(sVal.utf8_str(),"1") == 0) { gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(pW),TRUE); } else { gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(pW),FALSE); } g_object_set_data(G_OBJECT(pW),"toc-prop",(gpointer) "toc-has-label"); g_signal_connect(G_OBJECT(pW), "toggled", G_CALLBACK(s_HasLabel_changed), (gpointer) this); sVal = getTOCPropVal("toc-label-after",getDetailsLevel()); pW = _getWidget("edTextAfter"); gtk_entry_set_text(GTK_ENTRY(pW),sVal.utf8_str()); g_object_set_data(G_OBJECT(pW),"toc-prop",(gpointer) "toc-label-after"); sVal = getTOCPropVal("toc-label-before",getDetailsLevel()); pW = _getWidget("edTextBefore"); gtk_entry_set_text(GTK_ENTRY(pW),sVal.utf8_str()); g_object_set_data(G_OBJECT(pW),"toc-prop",(gpointer) "toc-label-before"); sVal = getTOCPropVal("toc-label-inherits",getDetailsLevel()); pW = _getWidget("cbInherit"); if(g_ascii_strcasecmp(sVal.utf8_str(),"1") == 0) { gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(pW),TRUE); } else { gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(pW),FALSE); } g_object_set_data(G_OBJECT(pW),"toc-prop",(gpointer) "toc-label-inherits"); g_signal_connect(G_OBJECT(pW), "toggled", G_CALLBACK(s_check_changedDetails), (gpointer) this); sVal = getTOCPropVal("toc-label-start",getDetailsLevel()); pW = _getWidget("wStartEntry"); gtk_entry_set_text(GTK_ENTRY(pW),sVal.utf8_str()); gtk_spin_button_set_value(GTK_SPIN_BUTTON (_getWidget("wStartSpin")), (gdouble) m_iStartValue ); g_signal_connect(G_OBJECT(_getWidget("wStartSpin")), "value-changed", G_CALLBACK(s_StartAt_changed), reinterpret_cast<gpointer>(this)); sVal = getTOCPropVal("toc-indent",getDetailsLevel()); pW = _getWidget("wIndentEntry"); gtk_entry_set_text(GTK_ENTRY(pW),sVal.utf8_str()); gtk_spin_button_set_value(GTK_SPIN_BUTTON (_getWidget("wIndentSpin")), (gdouble) m_iIndentValue ); g_signal_connect(G_OBJECT(_getWidget("wIndentSpin")), "value-changed", G_CALLBACK(s_Indent_changed), reinterpret_cast<gpointer>(this)); sVal = getTOCPropVal("toc-label-type",getDetailsLevel()); pW = _getWidget("wLabelChoose"); UT_sint32 iHist = static_cast<UT_sint32>(pView->getLayout()->FootnoteTypeFromString(sVal.utf8_str())); XAP_comboBoxSetActiveFromIntCol(GTK_COMBO_BOX(pW),1,iHist); sVal = getTOCPropVal("toc-page-type",getDetailsLevel()); pW = _getWidget("wPageNumberingChoose"); iHist = static_cast<UT_sint32>(pView->getLayout()->FootnoteTypeFromString(sVal.utf8_str())); XAP_comboBoxSetActiveFromIntCol(GTK_COMBO_BOX(pW),1,iHist); sVal = getTOCPropVal("toc-source-style",getMainLevel()); pW = _getWidget("wFillStyle"); gtk_label_set_text(GTK_LABEL(pW),sVal.utf8_str()); g_object_set_data(G_OBJECT(_getWidget("wChangeFill")),"display-widget",(gpointer)pW); g_object_set_data(G_OBJECT(pW),"toc-prop",(gpointer) "toc-source-style"); sVal = getTOCPropVal("toc-tab-leader",getDetailsLevel()); pW = _getWidget("wTabLeaderChoose"); if(g_ascii_strcasecmp(sVal.utf8_str(),"none") == 0) { iHist = 0; } else if(g_ascii_strcasecmp(sVal.utf8_str(),"dot") == 0) { iHist = 1; } else if(g_ascii_strcasecmp(sVal.utf8_str(),"hyphen") == 0) { iHist = 2; } else if(g_ascii_strcasecmp(sVal.utf8_str(),"underline") == 0) { iHist = 3; } else { iHist = 1; } gtk_combo_box_set_active(GTK_COMBO_BOX(pW),iHist); }
void AP_UnixDialog_FormatTOC::setDetailsLevel(UT_sint32 iLevel) { AP_Dialog_FormatTOC::setDetailsLevel(iLevel); UT_UTF8String sVal; sVal = getTOCPropVal("toc-label-after",getDetailsLevel()); GtkWidget * pW = _getWidget("edTextAfter"); gtk_entry_set_text(GTK_ENTRY(pW),sVal.utf8_str()); sVal = getTOCPropVal("toc-label-before",getDetailsLevel()); pW = _getWidget("edTextBefore"); gtk_entry_set_text(GTK_ENTRY(pW),sVal.utf8_str()); sVal = getTOCPropVal("toc-label-start",getDetailsLevel()); pW = _getWidget("wStartEntry"); gtk_entry_set_text(GTK_ENTRY(pW),sVal.utf8_str()); sVal = getTOCPropVal("toc-indent",getDetailsLevel()); pW = _getWidget("wIndentEntry"); gtk_entry_set_text(GTK_ENTRY(pW),sVal.utf8_str()); sVal = getTOCPropVal("toc-label-inherits",getDetailsLevel()); pW = _getWidget("cbInherit"); if(g_ascii_strcasecmp(sVal.utf8_str(),"1") == 0) { gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(pW),TRUE); } else { gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(pW),FALSE); } FV_View * pView = static_cast<FV_View *>(getActiveFrame()->getCurrentView()); sVal = getTOCPropVal("toc-label-type",getDetailsLevel()); pW = _getWidget("wLabelChoose"); GtkComboBox *combo = GTK_COMBO_BOX(pW); UT_sint32 iHist = static_cast<UT_sint32>(pView->getLayout()->FootnoteTypeFromString(sVal.utf8_str())); gtk_combo_box_set_active(combo,iHist); sVal = getTOCPropVal("toc-page-type",getDetailsLevel()); pW = _getWidget("wPageNumberingChoose"); combo = GTK_COMBO_BOX(pW); iHist = static_cast<UT_sint32>(pView->getLayout()->FootnoteTypeFromString(sVal.utf8_str())); gtk_combo_box_set_active(combo,iHist); sVal = getTOCPropVal("toc-tab-leader",getDetailsLevel()); pW = _getWidget("wTabLeaderChoose"); combo = GTK_COMBO_BOX(pW); if(g_ascii_strcasecmp(sVal.utf8_str(),"none") == 0) { iHist = 0; } else if(g_ascii_strcasecmp(sVal.utf8_str(),"dot") == 0) { iHist = 1; } else if(g_ascii_strcasecmp(sVal.utf8_str(),"hyphen") == 0) { iHist = 2; } else if(g_ascii_strcasecmp(sVal.utf8_str(),"underline") == 0) { iHist = 3; } else { iHist = 1; } gtk_combo_box_set_active(combo,iHist); }