/** * @brioef 検索処理を行います * @param nID 処理を実行するFootyのID */ FOOTYEXPORT(int) Footy2SearchW(int nID,const wchar_t *szText,int nFlags) { // Footyを取得する CFooty *pFooty = GetFooty(nID); if (!pFooty)return FOOTY2ERR_NOID; // 検索文字が空のとき if (szText[0] == L'\0') return FOOTY2ERR_ARGUMENT; // 検索処理を実行する if (pFooty->m_cDoc.Search(szText,nFlags)) // 見つかったとき { if ((nFlags & SEARCH_NOT_ADJUST_VIEW) == 0) // スクロールさせる { pFooty->m_cView[0].AdjustVisiblePos(); pFooty->m_cView[0].AdjustVisibleLine(); } if ((nFlags & SEARCH_NOT_REFRESH) == 0) // 再描画させる { pFooty->m_cView[0].Refresh(); } return FOOTY2ERR_NONE; } else { // 見つからなかったとき if ((nFlags & SEARCH_BEEP_ON_404) != 0) MessageBeep(MB_ICONEXCLAMATION); return FOOTY2ERR_404; } }
/** * @brief 編集されているかどうかを取得します。 * @param nID 処理を実行するFootyのID */ FOOTYEXPORT(bool) Footy2IsEdited(int nID) { // Footyを取得する CFooty *pFooty = GetFooty(nID); if (!pFooty)return false; return pFooty->m_cDoc.IsEdited(); }
/*---------------------------------------------------------------- Footy2SetSel 選択を開始させる ----------------------------------------------------------------*/ FOOTYEXPORT(int) Footy2SetSel(int nID,size_t nStartLine,size_t nStartPos,size_t nEndLine,size_t nEndPos,bool bRefresh){ /*数値が正しいかどうかチェックする*/ if (nStartLine > nEndLine)return FOOTY2ERR_ARGUMENT; else if (nStartLine == nEndLine){ if (nStartPos > nEndPos)return FOOTY2ERR_ARGUMENT; } /*Footyを取得する*/ CFooty *pFooty = GetFooty(nID); if (!pFooty)return FOOTY2ERR_NOID; /*選択する*/ CEditPosition cSelStart,cSelEnd; if (!cSelStart.SetPosition(pFooty->m_cDoc.GetLineList(),nStartLine,nStartPos) || !cSelEnd.SetPosition(pFooty->m_cDoc.GetLineList(),nEndLine,nEndPos) || !pFooty->m_cDoc.SetSelectStart(&cSelStart) || !pFooty->m_cDoc.SetSelectEndNormal(&cSelEnd)) return FOOTY2ERR_ARGUMENT; *pFooty->m_cDoc.GetCaretPosition() = cSelEnd; /*再描画*/ if (bRefresh){ pFooty->m_cView[0].AdjustVisiblePos(); pFooty->m_cView[0].AdjustVisibleLine(); pFooty->m_cView[0].Refresh(); pFooty->m_cView[0].Refresh(); } /*関数が正常に終了した*/ return FOOTY2ERR_NONE; }
/** * @brief ペースト処理を行います。 * @param nID 処理を実行するFootyのID */ FOOTYEXPORT(int) Footy2Paste(int nID) { // Footyを取得する CFooty *pFooty = GetFooty(nID); if (!pFooty)return FOOTY2ERR_NOID; return pFooty->Paste() ? FOOTY2ERR_NONE : FOOTY2ERR_MEMORY; }
/** * @brief 切り取り処理を行います。 * @param nID 処理を実行するFootyのID */ FOOTYEXPORT(int) Footy2Cut(int nID) { // Footyを取得する CFooty *pFooty = GetFooty(nID); if (!pFooty)return FOOTY2ERR_NOID; if (!pFooty->m_cDoc.IsSelecting())return FOOTY2ERR_NOTSELECTED; return pFooty->Cut() ? FOOTY2ERR_NONE : FOOTY2ERR_MEMORY; }
/** * @brief 読み込み専用かどうかを取得します * @param nID [in] 取得対象FootyのID */ FOOTYEXPORT(bool) Footy2IsReadOnly(int nID) { // Footyを取得する CFooty *pFooty = GetFooty(nID); if (!pFooty)return false; // 読み込み専用かどうかを取得します return pFooty->m_cDoc.IsReadOnly(); }
/** * @brief シフトロックされているかどうか取得する * @param nID 処理を実行するFootyのID */ FOOTYEXPORT(bool) Footy2IsShiftLocked(int nID) { // Footyを取得する CFooty *pFooty = GetFooty(nID); if (!pFooty)return false; // シフトロック状態を取得する return pFooty->m_cView[0].IsShiftLocked(); }
/** * @brief 読み込み専用かどうかを設定します * @param nID [in] 設定対象FootyのID * @param bReadOnly [in] 読み込み専用かどうか */ FOOTYEXPORT(int) Footy2SetReadOnly(int nID, bool bReadOnly) { // Footyを取得する CFooty *pFooty = GetFooty(nID); if (!pFooty)return FOOTY2ERR_NOID; // 読み込み専用かどうかを設定します pFooty->m_cDoc.SetReadOnly( bReadOnly ); return FOOTY2ERR_NONE; }
/** * @brief リドゥを行います。 * @param nID 処理を実行するFootyのID */ FOOTYEXPORT(int) Footy2Redo(int id) { // Footyを取得する CFooty *pFooty = GetFooty(id); if (!pFooty)return FOOTY2ERR_NOID; // 選択解除 pFooty->m_cDoc.ClearSelected(); // リドゥ処理 if (!pFooty->Redo()) return FOOTY2ERR_NOUNDO; // 成功 return FOOTY2ERR_NONE; }
/*---------------------------------------------------------------- Footy2GetCaretPosition キャレット位置を取得します ----------------------------------------------------------------*/ FOOTYEXPORT(int) Footy2GetCaretPosition(int nID,size_t *pCaretLine,size_t *pCaretPos){ /*Footyを取得する*/ CFooty *pFooty = GetFooty(nID); if (!pFooty)return FOOTY2ERR_NOID; /*キャレットの位置を取得*/ CEditPosition *pPosition = pFooty->m_cDoc.GetCaretPosition(); if (pCaretLine) *pCaretLine = pPosition->GetLineNum(); if (pCaretPos) *pCaretPos = pPosition->GetPosition(); return FOOTY2ERR_NONE; }
/** * @brief シフトロックを行う * @param nID 処理を実行するFootyのID */ FOOTYEXPORT(int) Footy2ShiftLock(int nID,bool bLocked) { // Footyを取得する CFooty *pFooty = GetFooty(nID); if (!pFooty)return FOOTY2ERR_NOID; // シフトロック状態をセットする for (int i=0;i<4;i++) { pFooty->m_cView[i].SetShiftLock(bLocked); } return FOOTY2ERR_NONE; }
/*---------------------------------------------------------------- Footy2SetMetrics 数値設定 ----------------------------------------------------------------*/ FOOTYEXPORT(int) Footy2SetMetrics(int nID,int nObject,int nValue,bool bRefresh) { // 宣言 CFooty *pFooty = GetFooty(nID); if (!pFooty)return FOOTY2ERR_NOID; switch(nObject) { // for (int i=0;i<3;i++)をfor (int i=0;i<4;i++)に修正 by Tetr@pod case SM_MARK_VISIBLE: for (int i=0;i<4;i++) { pFooty->m_cView[i].SetMarkVisible(nValue); } break; case SM_LINENUM_WIDTH: for (int i=0;i<4;i++) { pFooty->m_cView[i].SetLineWidth(nValue); } break; case SM_RULER_HEIGHT: for (int i=0;i<4;i++) { pFooty->m_cView[i].SetRulerHeight(nValue); } break; case SM_UNDERLINE_VISIBLE: for (int i=0;i<4;i++) { pFooty->m_cView[i].SetUnderlineVisible(nValue); } break; case SM_MARGIN_HEIGHT: for (int i=0;i<4;i++) { pFooty->m_cView[i].SetMarginHeight(nValue); } break; case SM_TAB_WIDTH: pFooty->m_cDoc.SetTabLen(nValue); break; default: return FOOTY2ERR_ARGUMENT; } /*再描画させる*/ if (bRefresh)pFooty->m_cView[0].Refresh(); return FOOTY2ERR_NONE; }
/** * @brief 全て選択処理を行います * @param nID 処理を実行するFootyのID * @param bRedraw 再描画処理を行うかどうか */ FOOTYEXPORT(int) Footy2SelectAll(int nID,bool bRedraw) { // Footyを取得する CFooty *pFooty = GetFooty(nID); if (!pFooty)return FOOTY2ERR_NOID; // 全て選択する pFooty->m_cDoc.SelectAll(); // 再描画処理 if (bRedraw) { pFooty->m_cView[0].Refresh(); } return FOOTY2ERR_NONE; }
/*---------------------------------------------------------------- Footy2GetMetrics 数値取得 ----------------------------------------------------------------*/ FOOTYEXPORT(int) Footy2GetMetrics(int nID,int nObject,int *pValue) { // Footyを取得する CFooty *pFooty = GetFooty(nID); if (!pFooty)return FOOTY2ERR_NOID; if (!pValue)return FOOTY2ERR_ARGUMENT; // 返す switch(nObject) { case SM_LAPEL_COLUMN: *pValue = (int)pFooty->m_cDoc.GetLapelColumn(); break; case SM_LAPEL_MODE: *pValue = (int)pFooty->m_cDoc.GetLapelMode(); break; case SM_MARK_VISIBLE: *pValue = pFooty->m_cView[0].GetMarkVisible(); break; case SM_LINENUM_WIDTH: *pValue = pFooty->m_cView[0].GetLineCountWidth(); break; case SM_RULER_HEIGHT: *pValue = pFooty->m_cView[0].GetRulerHeight(); break; case SM_UNDERLINE_VISIBLE: *pValue = pFooty->m_cView[0].GetUnderlineVisible(); break; case SM_TAB_WIDTH: *pValue = pFooty->m_cDoc.GetTabLen(); break; case SM_REDOREM: *pValue = pFooty->m_cDoc.GetRedoRem(); break; case SM_UNDOREM: *pValue = pFooty->m_cDoc.GetUndoRem(); break; default: return FOOTY2ERR_ARGUMENT; } return FOOTY2ERR_NONE; }
/*---------------------------------------------------------------- Footy2SetCaretPosition キャレット位置を取得します ----------------------------------------------------------------*/ FOOTYEXPORT(int) Footy2SetCaretPosition(int nID,size_t nCaretLine,size_t nCaretPos,bool bRefresh){ /*Footyを取得する*/ CFooty *pFooty = GetFooty(nID); if (!pFooty)return FOOTY2ERR_NOID; /*キャレット位置を更新*/ CEditPosition *pPosition = pFooty->m_cDoc.GetCaretPosition(); if (!pPosition->SetPosition(pFooty->m_cDoc.GetLineList(),nCaretLine,nCaretPos)) return FOOTY2ERR_ARGUMENT; else{ pFooty->m_cDoc.UnSelect(); pFooty->m_cDoc.SendMoveCaretCallBack(); if (bRefresh){ pFooty->m_cView[0].AdjustVisiblePos(); pFooty->m_cView[0].AdjustVisibleLine(); pFooty->m_cView[0].Refresh(); } return FOOTY2ERR_NONE; } }
/** * @brief アンドゥを行います。 * @param nID 処理を実行するFootyのID */ FOOTYEXPORT(int) Footy2Undo(int id) { // Footyを取得する CFooty *pFooty = GetFooty(id); if (!pFooty)return FOOTY2ERR_NOID; // 選択解除 pFooty->m_cDoc.ClearSelected(); // アンドゥ処理 if (!pFooty->Undo()) return FOOTY2ERR_NOUNDO; // キャレットから位置を再設定 for (int i=0;i<4;i++) { pFooty->m_cView[i].AdjustVisibleLine(); pFooty->m_cView[i].AdjustVisiblePos(); } // 成功 return FOOTY2ERR_NONE; }
/** * Footy2GetSel * @brief 選択の開始位置を取得する * @param nID FootyのID * @param pStartLine [out]選択開始行 * @param pStartPos [out]選択開始桁 * @param pEndLine [out]選択終了行 * @param pEndPos [out]選択終了桁 */ FOOTYEXPORT(int) Footy2GetSel(int nID,size_t *pStartLine,size_t *pStartPos,size_t *pEndLine,size_t *pEndPos){ /*Footyを取得する*/ CFooty *pFooty = GetFooty(nID); if (!pFooty)return FOOTY2ERR_NOID; /*選択位置を取得する*/ if (pFooty->m_cDoc.IsSelecting()){ CEditPosition *pStart = pFooty->m_cDoc.GetSelStart(); CEditPosition *pEnd = pFooty->m_cDoc.GetSelEnd(); /*ポインタに返す*/ if (pStartLine) *pStartLine = pStart->GetLineNum(); if (pStartPos) *pStartPos = pStart->GetPosition(); if (pEndLine) *pEndLine = pEnd->GetLineNum(); if (pEndPos) *pEndPos = pEnd->GetPosition(); /*正常に終了した*/ return FOOTY2ERR_NONE; } else return FOOTY2ERR_NOTSELECTED; }