⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 textctrl.cpp

📁 很牛的GUI源码wxWidgets-2.8.0.zip 可在多种平台下运行.
💻 CPP
📖 第 1 页 / 共 4 页
字号:
  {    *from = (**((TEHandle) m_macTE)).selStart;    *to = (**((TEHandle) m_macTE)).selEnd;   }   else   {        TXNGetSelection( (TXNObject) m_macTXN , (TXNOffset*) from , (TXNOffset*) to ) ;   }}void wxTextCtrl::SetValue(const wxString& str){    wxString st = str ;    wxMacConvertNewlines13To10( &st ) ;    if ( !m_macUsesTXN )    {        wxCharBuffer text =  st.mb_str(wxConvLocal) ;        ::SetControlData( (ControlHandle) m_macControl, 0, ( m_windowStyle & wxTE_PASSWORD ) ? kControlEditTextPasswordTag : kControlEditTextTextTag , strlen(text) , text ) ;    }    else    {        bool formerEditable = m_editable ;        if ( !formerEditable )            SetEditable(true) ;        SetTXNData( (TXNObject) m_macTXN , st , kTXNStartOffset, kTXNEndOffset ) ;        TXNSetSelection( (TXNObject) m_macTXN, 0, 0);        TXNShowSelection( (TXNObject) m_macTXN, kTXNShowStart);        if ( !formerEditable )            SetEditable(formerEditable) ;    }    MacRedrawControl() ;}void wxTextCtrl::SetMaxLength(unsigned long len){    m_maxLength = len ;}bool wxTextCtrl::SetStyle(long start, long end, const wxTextAttr& style){    if ( m_macUsesTXN )    {        bool formerEditable = m_editable ;        if ( !formerEditable )            SetEditable(true) ;        TXNTypeAttributes typeAttr[4] ;        Str255 fontName = "\pMonaco" ;        SInt16 fontSize = 12 ;        Style fontStyle = normal ;        RGBColor color ;        int attrCounter = 0 ;        if ( style.HasFont() )        {            const wxFont &font = style.GetFont() ;            wxMacStringToPascal( font.GetFaceName() , fontName ) ;            fontSize = font.GetPointSize() ;            if ( font.GetUnderlined() )                fontStyle |= underline ;            if ( font.GetWeight() == wxBOLD )                fontStyle |= bold ;            if ( font.GetStyle() == wxITALIC )                fontStyle |= italic ;            typeAttr[attrCounter].tag = kTXNQDFontNameAttribute ;            typeAttr[attrCounter].size = kTXNQDFontNameAttributeSize ;            typeAttr[attrCounter].data.dataPtr = (void*) fontName ;            typeAttr[attrCounter+1].tag = kTXNQDFontSizeAttribute ;            typeAttr[attrCounter+1].size = kTXNFontSizeAttributeSize ;            typeAttr[attrCounter+1].data.dataValue =  (fontSize << 16) ;            typeAttr[attrCounter+2].tag = kTXNQDFontStyleAttribute ;            typeAttr[attrCounter+2].size = kTXNQDFontStyleAttributeSize ;            typeAttr[attrCounter+2].data.dataValue = fontStyle ;            attrCounter += 3 ;        }        if ( style.HasTextColour() )        {            typeAttr[attrCounter].tag = kTXNQDFontColorAttribute ;            typeAttr[attrCounter].size = kTXNQDFontColorAttributeSize ;            typeAttr[attrCounter].data.dataPtr = (void*) &color ;            color = MAC_WXCOLORREF(style.GetTextColour().GetPixel()) ;            attrCounter += 1 ;        }        if ( attrCounter > 0 )        {#ifdef __WXDEBUG__            OSStatus status =#endif // __WXDEBUG__                TXNSetTypeAttributes ((TXNObject)m_macTXN, attrCounter , typeAttr, start,end);            wxASSERT_MSG( status == noErr , wxT("Couldn't set text attributes") ) ;        }        if ( !formerEditable )            SetEditable(formerEditable) ;    }    return true ;}bool wxTextCtrl::SetDefaultStyle(const wxTextAttr& style){    wxTextCtrlBase::SetDefaultStyle( style ) ;    SetStyle( kTXNUseCurrentSelection , kTXNUseCurrentSelection , GetDefaultStyle() ) ;    return true ;}// Clipboard operationsvoid wxTextCtrl::Copy(){    if (CanCopy())    {      if ( !m_macUsesTXN )      {            TECopy( ((TEHandle) m_macTE) ) ;            ClearCurrentScrap();            TEToScrap() ;            MacRedrawControl() ;        }        else        {            ClearCurrentScrap();            TXNCopy((TXNObject)m_macTXN);            TXNConvertToPublicScrap();        }    }}void wxTextCtrl::Cut(){    if (CanCut())    {        if ( !m_macUsesTXN )        {            TECut( ((TEHandle) m_macTE) ) ;            ClearCurrentScrap();            TEToScrap() ;            MacRedrawControl() ;        }        else        {            ClearCurrentScrap();            TXNCut((TXNObject)m_macTXN);            TXNConvertToPublicScrap();        }        wxCommandEvent event(wxEVT_COMMAND_TEXT_UPDATED, m_windowId);        event.SetEventObject( this );        GetEventHandler()->ProcessEvent(event);      }}void wxTextCtrl::Paste(){    if (CanPaste())    {        if ( !m_macUsesTXN )        {            TEFromScrap() ;            TEPaste( (TEHandle) m_macTE ) ;            MacRedrawControl() ;        }        else        {            TXNConvertFromPublicScrap();            TXNPaste((TXNObject)m_macTXN);            SetStyle( kTXNUseCurrentSelection , kTXNUseCurrentSelection , GetDefaultStyle() ) ;        }        wxCommandEvent event(wxEVT_COMMAND_TEXT_UPDATED, m_windowId);        event.SetEventObject( this );        GetEventHandler()->ProcessEvent(event);    }}bool wxTextCtrl::CanCopy() const{    // Can copy if there's a selection    long from, to;    GetSelection(& from, & to);    return (from != to);}bool wxTextCtrl::CanCut() const{    if ( !IsEditable() )    {        return false ;    }    // Can cut if there's a selection    long from, to;    GetSelection(& from, & to);    return (from != to);}bool wxTextCtrl::CanPaste() const{    if (!IsEditable())        return false;#if TARGET_CARBON    OSStatus err = noErr;    ScrapRef scrapRef;    err = GetCurrentScrap( &scrapRef );    if ( err != noTypeErr && err != memFullErr )    {        ScrapFlavorFlags    flavorFlags;        Size                byteCount;        if (( err = GetScrapFlavorFlags( scrapRef, 'TEXT', &flavorFlags )) == noErr)        {            if (( err = GetScrapFlavorSize( scrapRef, 'TEXT', &byteCount )) == noErr)            {                return true ;            }        }    }    return false;#else    long offset ;    if ( GetScrap( NULL , 'TEXT' , &offset ) > 0 )    {        return true ;    }#endif    return false ;}void wxTextCtrl::SetEditable(bool editable){    if ( editable != m_editable )    {        m_editable = editable ;        if ( !m_macUsesTXN )        {            if ( editable )                UMAActivateControl( (ControlHandle) m_macControl ) ;            else                UMADeactivateControl((ControlHandle)  m_macControl ) ;        }        else        {            TXNControlTag tag[] = { kTXNIOPrivilegesTag } ;            TXNControlData data[] = { { editable ? kTXNReadWrite : kTXNReadOnly } } ;            TXNSetTXNObjectControls( (TXNObject) m_macTXN , false , sizeof(tag) / sizeof (TXNControlTag) , tag , data ) ;        }    }}void wxTextCtrl::SetInsertionPoint(long pos){    SetSelection( pos , pos ) ;}void wxTextCtrl::SetInsertionPointEnd(){    wxTextPos pos = GetLastPosition();    SetInsertionPoint(pos);}long wxTextCtrl::GetInsertionPoint() const{    long begin,end ;    GetSelection( &begin , &end ) ;    return begin ;}wxTextPos wxTextCtrl::GetLastPosition() const{    if ( !m_macUsesTXN )    {        return (**((TEHandle) m_macTE)).teLength ;    }    else    {        Handle theText ;        long actualsize ;        OSErr err = TXNGetDataEncoded( (TXNObject) m_macTXN, kTXNStartOffset, kTXNEndOffset, &theText , kTXNTextData );        /* all done */        if ( err )        {            actualsize = 0 ;        }        else        {            actualsize = GetHandleSize( theText ) ;            DisposeHandle( theText ) ;        }        return actualsize ;    }}void wxTextCtrl::Replace(long from, long to, const wxString& str){    wxString value = str ;    wxMacConvertNewlines13To10( &value ) ;    if ( !m_macUsesTXN )    {        ControlEditTextSelectionRec selection ;        selection.selStart = from ;        selection.selEnd = to ;        ::SetControlData((ControlHandle)  m_macControl , 0, kControlEditTextSelectionTag , sizeof( selection ) , (char*) &selection ) ;        TESetSelect( from , to  , ((TEHandle) m_macTE) ) ;        TEDelete( ((TEHandle) m_macTE) ) ;        TEInsert( value , value.length() , ((TEHandle) m_macTE) ) ;    }    else    {        bool formerEditable = m_editable ;        if ( !formerEditable )            SetEditable(true) ;        TXNSetSelection( ((TXNObject) m_macTXN) , from , to ) ;        TXNClear( ((TXNObject) m_macTXN) ) ;        SetTXNData( (TXNObject) m_macTXN , str , kTXNUseCurrentSelection, kTXNUseCurrentSelection ) ;        if ( !formerEditable )            SetEditable( formerEditable ) ;    }    Refresh() ;}void wxTextCtrl::Remove(long from, long to){    if ( !m_macUsesTXN )    {        ControlEditTextSelectionRec selection ;        selection.selStart = from ;        selection.selEnd = to ;        ::SetControlData( (ControlHandle) m_macControl , 0, kControlEditTextSelectionTag , sizeof( selection ) , (char*) &selection ) ;        TEDelete( ((TEHandle) m_macTE) ) ;    }    else    {        bool formerEditable = m_editable ;        if ( !formerEditable )            SetEditable(true) ;        TXNSetSelection( ((TXNObject) m_macTXN) , from , to ) ;        TXNClear( ((TXNObject) m_macTXN) ) ;        if ( !formerEditable )            SetEditable( formerEditable ) ;    }    Refresh() ;}void wxTextCtrl::SetSelection(long from, long to){    if ( !m_macUsesTXN )    {        ControlEditTextSelectionRec selection ;        if ((from == -1) && (to == -1))        {            selection.selStart = 0 ;            selection.selEnd = 32767 ;        }        else        {            selection.selStart = from ;            selection.selEnd = to ;        }        TESetSelect( selection.selStart , selection.selEnd , ((TEHandle) m_macTE) ) ;        ::SetControlData((ControlHandle)  m_macControl , 0, kControlEditTextSelectionTag , sizeof( selection ) , (char*) &selection ) ;    }    else    {        STPTextPaneVars **tpvars;        /* set up our locals */        tpvars = (STPTextPaneVars **) GetControlReference((ControlHandle) m_macControl);        /* and our drawing environment as the operation        may force a redraw in the text area. */        SetPort((**tpvars).fDrawingEnvironment);        /* change the selection */        if ((from == -1) && (to == -1))            TXNSelectAll((TXNObject) m_macTXN);        else            TXNSetSelection( (**tpvars).fTXNRec, from, to);        TXNShowSelection( (TXNObject) m_macTXN, kTXNShowStart);    }}void wxTextCtrl::WriteText(const wxString& str){    wxString st = str ;    wxMacConvertNewlines13To10( &st ) ;    if ( !m_macUsesTXN )    {        wxCharBuffer text =  st.mb_str(wxConvLocal) ;        TEInsert( text , strlen(text) , ((TEHandle) m_macTE) ) ;    }    else    {        bool formerEditable = m_editable ;        if ( !formerEditable )            SetEditable(true) ;        long start , end , dummy ;        GetSelection( &start , &dummy ) ;        SetTXNData( (TXNObject) m_macTXN , st , kTXNUseCurrentSelection, kTXNUseCurrentSelection ) ;        GetSelection( &dummy , &end ) ;        SetStyle( start , end , GetDefaultStyle() ) ;        if ( !formerEditable )            SetEditable( formerEditable ) ;    }    MacRedrawControl() ;}void wxTextCtrl::AppendText(const wxString& text){    SetInsertionPointEnd();    WriteText(text);}void wxTextCtrl::Clear(){    if ( !m_macUsesTXN )    {        ::SetControlData((ControlHandle)  m_macControl, 0, ( m_windowStyle & wxTE_PASSWORD ) ? kControlEditTextPasswordTag : kControlEditTextTextTag , 0 , (char*) ((const char*)NULL) ) ;    }    else    {        TXNSetSelection( (TXNObject)m_macTXN , kTXNStartOffset , kTXNEndOffset ) ;        TXNClear((TXNObject)m_macTXN);    }    Refresh() ;}bool wxTextCtrl::IsModified() const{    return m_dirty;}bool wxTextCtrl::IsEditable() const{    return IsEnabled() && m_editable ;}bool wxTextCtrl::AcceptsFocus() const{    // we don't want focus if we can't be edited    return /*IsEditable() && */ wxControl::AcceptsFocus();}wxSize wxTextCtrl::DoGetBestSize() const{    int wText = 100 ;    int hText;    if ( m_macUsesTXN )    {        hText = 17 ;    }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -