Kaydet (Commit) 412e91d3 authored tarafından Gergo Mocsi's avatar Gergo Mocsi

GSOC work, implement "Autoclose parenthesis" function

Autoclosing parenthesis function is working. Implementation is similar to autoclosing double quotes, except that this one does not need the HighlighPortion struct to use.
Renamed the checkbox title to "Autoclose parenthesis".

Change-Id: I4311cd8020f0dc0b62a2d8707e0eccbf57e0d2c2
üst 776734d8
......@@ -522,6 +522,21 @@ void EditorWindow::KeyInput( const KeyEvent& rKEvt )
}
}
if( rKEvt.GetCharCode() == '(' && CodeCompleteOptions::IsAutoCloseParenthesisOn() )
{//autoclose parenthesis
TextSelection aSel = GetEditView()->GetSelection();
sal_uLong nLine = aSel.GetStart().GetPara();
OUString aLine( pEditEngine->GetText( nLine ) ); // the line being modified
if( aLine.getLength() > 0 && aLine[aSel.GetEnd().GetIndex()-1] != '(' )
{
GetEditView()->InsertText(OUString(")"));
//leave the cursor on it's place: inside the parenthesis
TextPaM aEnd(nLine, aSel.GetEnd().GetIndex());
GetEditView()->SetSelection( TextSelection( aEnd, aEnd ) );
}
}
if( rKEvt.GetKeyCode().GetCode() == KEY_RETURN && CodeCompleteOptions::IsProcedureAutoCompleteOn() )
{//autoclose implementation
TextSelection aSel = GetEditView()->GetSelection();
......
......@@ -34,7 +34,7 @@ CodeCompleteOptionsDlg::CodeCompleteOptionsDlg( Window* pWindow )
get(pCodeCompleteChk, "codecomplete_enable");
get(pAutocloseProcChk, "autoclose_proc");
get(pAutocloseBracesChk, "autoclose_braces");
get(pAutocloseParenChk, "autoclose_paren");
get(pAutocloseQuotesChk, "autoclose_quotes");
pOkBtn->SetClickHdl( LINK( this, CodeCompleteOptionsDlg, OkHdl ) );
......@@ -43,8 +43,7 @@ CodeCompleteOptionsDlg::CodeCompleteOptionsDlg( Window* pWindow )
pCodeCompleteChk->Check( CodeCompleteOptions::IsCodeCompleteOn() );
pAutocloseProcChk->Check( CodeCompleteOptions::IsProcedureAutoCompleteOn() );
pAutocloseQuotesChk->Check( CodeCompleteOptions::IsAutoCloseQuotesOn() );
pAutocloseBracesChk->Enable( false );
pAutocloseParenChk->Check( CodeCompleteOptions::IsAutoCloseParenthesisOn() );
}
CodeCompleteOptionsDlg::~CodeCompleteOptionsDlg()
......@@ -56,6 +55,7 @@ IMPL_LINK_NOARG(CodeCompleteOptionsDlg, OkHdl)
CodeCompleteOptions::SetCodeCompleteOn( pCodeCompleteChk->IsChecked() );
CodeCompleteOptions::SetProcedureAutoCompleteOn( pAutocloseProcChk->IsChecked() );
CodeCompleteOptions::SetAutoCloseQuotesOn( pAutocloseQuotesChk->IsChecked() );
CodeCompleteOptions::SetAutoCloseParenthesisOn( pAutocloseParenChk->IsChecked() );
Close();
return 0;
}
......
......@@ -34,7 +34,7 @@ private:
CheckBox* pCodeCompleteChk;
CheckBox* pAutocloseProcChk;
CheckBox* pAutocloseBracesChk;
CheckBox* pAutocloseParenChk;
CheckBox* pAutocloseQuotesChk;
DECL_LINK(OkHdl, void*);
......
......@@ -145,8 +145,8 @@
</packing>
</child>
<child>
<object class="GtkCheckButton" id="autoclose_braces">
<property name="label" translatable="yes">Autoclose Braces</property>
<object class="GtkCheckButton" id="autoclose_paren">
<property name="label" translatable="yes">Autoclose Parenthesis</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">False</property>
......
......@@ -29,7 +29,8 @@ namespace
CodeCompleteOptions::CodeCompleteOptions()
: bIsCodeCompleteOn( false ),
bIsProcedureAutoCompleteOn( false ),
bIsAutoCloseQuotesOn( false )
bIsAutoCloseQuotesOn( false ),
bIsAutoCloseParenthesisOn( false )
{
}
......@@ -68,6 +69,16 @@ void CodeCompleteOptions::SetAutoCloseQuotesOn( const bool& b )
theCodeCompleteOptions::get().bIsAutoCloseQuotesOn = b;
}
bool CodeCompleteOptions::IsAutoCloseParenthesisOn()
{
return theCodeCompleteOptions::get().aMiscOptions.IsExperimentalMode() && theCodeCompleteOptions::get().bIsAutoCloseParenthesisOn;
}
void CodeCompleteOptions::SetAutoCloseParenthesisOn( const bool& b )
{
theCodeCompleteOptions::get().bIsAutoCloseParenthesisOn = b;
}
std::ostream& operator<< (std::ostream& aStream, const CodeCompleteDataCache& aCache)
{
aStream << "Global variables" << std::endl;
......
......@@ -58,6 +58,7 @@ private:
bool bIsCodeCompleteOn;
bool bIsProcedureAutoCompleteOn;
bool bIsAutoCloseQuotesOn;
bool bIsAutoCloseParenthesisOn;
SvtMiscOptions aMiscOptions;
public:
......@@ -72,6 +73,9 @@ public:
static bool IsAutoCloseQuotesOn();
static void SetAutoCloseQuotesOn( const bool& b );
static bool IsAutoCloseParenthesisOn();
static void SetAutoCloseParenthesisOn( const bool& b );
};
class BASIC_DLLPUBLIC CodeCompleteDataCache
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment