diff options
author | Caolán McNamara <caolanm@redhat.com> | 2020-08-18 10:35:32 +0100 |
---|---|---|
committer | Caolán McNamara <caolanm@redhat.com> | 2020-08-18 13:50:01 +0200 |
commit | 4b97463059e9a616f9eedf142e73d49fc874d4d6 (patch) | |
tree | b816c92831576700528dc8bcb6eb54c39348df7f /svtools | |
parent | 1b006f8aaa7fd2dd9394f8a74f85999e58fb2310 (diff) |
merge OSqlEdit and MultiLineEditSyntaxHighlight
Change-Id: Ie3e38afd976620068c644809c4a88cd3809759a5
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/100907
Tested-by: Jenkins
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
Diffstat (limited to 'svtools')
-rw-r--r-- | svtools/Library_svt.mk | 1 | ||||
-rw-r--r-- | svtools/source/edit/editsyntaxhighlighter.cxx | 180 |
2 files changed, 0 insertions, 181 deletions
diff --git a/svtools/Library_svt.mk b/svtools/Library_svt.mk index 47c645802000..752c2ce27d0e 100644 --- a/svtools/Library_svt.mk +++ b/svtools/Library_svt.mk @@ -111,7 +111,6 @@ $(eval $(call gb_Library_add_exception_objects,svt,\ svtools/source/dialogs/prnsetup \ svtools/source/dialogs/restartdialog \ svtools/source/dialogs/ServerDetailsControls \ - svtools/source/edit/editsyntaxhighlighter \ svtools/source/filter/SvFilterOptionsDialog \ svtools/source/filter/DocumentToGraphicRenderer \ svtools/source/filter/exportdialog \ diff --git a/svtools/source/edit/editsyntaxhighlighter.cxx b/svtools/source/edit/editsyntaxhighlighter.cxx deleted file mode 100644 index b32d80e1a430..000000000000 --- a/svtools/source/edit/editsyntaxhighlighter.cxx +++ /dev/null @@ -1,180 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/* - * This file is part of the LibreOffice project. - * - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. - * - * This file incorporates work covered by the following license notice: - * - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed - * with this work for additional information regarding copyright - * ownership. The ASF licenses this file to you under the Apache - * License, Version 2.0 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.apache.org/licenses/LICENSE-2.0 . - */ - -#include <vcl/event.hxx> -#include <vcl/xtextedt.hxx> -#include <vcl/textview.hxx> -#include <svtools/editsyntaxhighlighter.hxx> -#include <vcl/txtattr.hxx> - -MultiLineEditSyntaxHighlight::MultiLineEditSyntaxHighlight( vcl::Window* pParent, WinBits nWinStyle, - HighlighterLanguage aLanguage): VclMultiLineEdit(pParent,nWinStyle), aHighlighter(aLanguage) -{ - EnableUpdateData(300); -} - -void MultiLineEditSyntaxHighlight::SetText(const OUString& rNewText) -{ - VclMultiLineEdit::SetText(rNewText); - UpdateData(); -} - -void MultiLineEditSyntaxHighlight::DoBracketHilight(sal_uInt16 nKey) -{ - TextSelection aCurrentPos = GetTextView()->GetSelection(); - sal_Int32 nStartPos = aCurrentPos.GetStart().GetIndex(); - const sal_uInt32 nStartPara = aCurrentPos.GetStart().GetPara(); - sal_uInt16 nCount = 0; - int nChar = -1; - - switch (nKey) - { - case '\'': // no break - case '"': - { - nChar = nKey; - break; - } - case '}' : - { - nChar = '{'; - break; - } - case ')': - { - nChar = '('; - break; - } - case ']': - { - nChar = '['; - break; - } - } - - if (nChar == -1) - return; - - sal_uInt32 nPara = nStartPara; - do - { - if (nPara == nStartPara && nStartPos == 0) - continue; - - OUString aLine( GetTextEngine()->GetText( nPara ) ); - - if (aLine.isEmpty()) - continue; - - for (sal_Int32 i = (nPara==nStartPara) ? nStartPos-1 : aLine.getLength()-1; i>0; --i) - { - if (aLine[i] == nChar) - { - if (!nCount) - { - GetTextEngine()->SetAttrib( TextAttribFontWeight( WEIGHT_ULTRABOLD ), nPara, i, i+1 ); - GetTextEngine()->SetAttrib( TextAttribFontColor( Color(0,0,0) ), nPara, i, i+1 ); - GetTextEngine()->SetAttrib( TextAttribFontWeight( WEIGHT_ULTRABOLD ), nStartPara, nStartPos, nStartPos ); - GetTextEngine()->SetAttrib( TextAttribFontColor( Color(0,0,0) ), nStartPara, nStartPos, nStartPos ); - return; - } - else - --nCount; - } - if (aLine[i] == nKey) - ++nCount; - } - } while (nPara--); -} - -bool MultiLineEditSyntaxHighlight::PreNotify( NotifyEvent& rNEvt ) -{ - if ( rNEvt.GetType() == MouseNotifyEvent::KEYINPUT ) - DoBracketHilight(rNEvt.GetKeyEvent()->GetCharCode()); - - return VclMultiLineEdit::PreNotify(rNEvt); -} - -Color MultiLineEditSyntaxHighlight::GetSyntaxHighlightColor(const svtools::ColorConfig& rColorConfig, HighlighterLanguage eLanguage, TokenType aToken) -{ - Color aColor; - switch (eLanguage) - { - case HighlighterLanguage::SQL: - { - switch (aToken) - { - case TokenType::Identifier: aColor = rColorConfig.GetColorValue(svtools::SQLIDENTIFIER).nColor; break; - case TokenType::Number: aColor = rColorConfig.GetColorValue(svtools::SQLNUMBER).nColor; break; - case TokenType::String: aColor = rColorConfig.GetColorValue(svtools::SQLSTRING).nColor; break; - case TokenType::Operator: aColor = rColorConfig.GetColorValue(svtools::SQLOPERATOR).nColor; break; - case TokenType::Keywords: aColor = rColorConfig.GetColorValue(svtools::SQLKEYWORD).nColor; break; - case TokenType::Parameter: aColor = rColorConfig.GetColorValue(svtools::SQLPARAMETER).nColor; break; - case TokenType::Comment: aColor = rColorConfig.GetColorValue(svtools::SQLCOMMENT).nColor; break; - default: aColor = Color(0,0,0); - } - break; - } - case HighlighterLanguage::Basic: - { - switch (aToken) - { - case TokenType::Identifier: aColor = Color(255,0,0); break; - case TokenType::Comment: aColor = Color(0,0,45); break; - case TokenType::Number: aColor = Color(204,102,204); break; - case TokenType::String: aColor = Color(0,255,45); break; - case TokenType::Operator: aColor = Color(0,0,100); break; - case TokenType::Keywords: aColor = Color(0,0,255); break; - case TokenType::Error : aColor = Color(0,255,255); break; - default: aColor = Color(0,0,0); - } - break; - } - default: aColor = Color(0,0,0); - - } - return aColor; -} - -Color MultiLineEditSyntaxHighlight::GetColorValue(TokenType aToken) -{ - return GetSyntaxHighlightColor(m_aColorConfig, aHighlighter.GetLanguage(), aToken); -} - -void MultiLineEditSyntaxHighlight::UpdateData() -{ - // syntax highlighting - // this must be possible improved by using notifychange correctly - bool bTempModified = GetTextEngine()->IsModified(); - for (sal_uInt32 nLine=0; nLine < GetTextEngine()->GetParagraphCount(); ++nLine) - { - OUString aLine( GetTextEngine()->GetText( nLine ) ); - GetTextEngine()->RemoveAttribs( nLine ); - std::vector<HighlightPortion> aPortions; - aHighlighter.getHighlightPortions( aLine, aPortions ); - for (auto const& portion : aPortions) - { - GetTextEngine()->SetAttrib( TextAttribFontColor( GetColorValue(portion.tokenType) ), nLine, portion.nBegin, portion.nEnd ); - } - } - GetTextView()->ShowCursor( false ); - GetTextEngine()->SetModified(bTempModified); -} - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ |