A few questions about Syntax Editor |
Post Reply |
Author | |
Italo
Groupie Joined: 10 December 2003 Location: United States Status: Offline Points: 83 |
Post Options
Thanks(0)
Posted: 28 December 2006 at 12:07am |
1. How to I programmatically setup the control without using ini files? Can you please give us an example? 2. The sample application only works if you’re working with a file extensions. Is it possible to use the control without a file extension? Example: All documents without extensions should use the cpp syntax.
Thanks,
Italo
|
|
sserge
Moderator Group Joined: 01 December 2004 Status: Offline Points: 1297 |
Post Options
Thanks(0)
|
Hi,
There are no a direct interface for that. For more information look for implementations of methods: 1)CXTPSyntaxEditBufferManager::Load(CFile *pFile, LPCTSTR pcszFileExt) 2)CXTPSyntaxEditBufferManager::SetFileExt -- WBR, Serge |
|
Italo
Groupie Joined: 10 December 2003 Location: United States Status: Offline Points: 83 |
Post Options
Thanks(0)
|
Is it possible to dynamically add keywords? If not, can this feature be added? Thanks, Italo |
|
jrodd
Newbie Joined: 07 March 2007 Status: Offline Points: 2 |
Post Options
Thanks(0)
|
How about dynamically adding classes to the schema also? One, or both, of these features would be helpful. Thanks, jrodd |
|
adrien
Senior Member Joined: 30 April 2007 Location: New Zealand Status: Offline Points: 449 |
Post Options
Thanks(0)
|
What would be very useful also would be the ability to
1. get it to edit a string, rather than a file
2. Allow us to set config not using an INI file - I don't want to have to ship an extra file around just to get syntax editing working, and I don't want anyone messing with the file either - I want it fixed
3. Enable using a string for the schema rather than a schema file.
|
|
znakeeye
Senior Member Joined: 26 July 2006 Status: Offline Points: 1672 |
Post Options
Thanks(0)
|
I agree completely. In my application, I certainly do not want to provide a SyntaxEdit.ini among primitive scheme-files. Also, I cannot get the desired highlighting without adding keywords.
I believe these are must-have features in order to compete with controls such as BCGEdit.
CXTPSyntaxEditCtrl definitely needs these two features:
1) Adding keywords in run-time.
2) A tokenizer similar to the one found in Scintilla.
|
|
AndreiM
Moderator Group Joined: 18 August 2007 Status: Offline Points: 132 |
Post Options
Thanks(0)
|
About set text rather then file:
You can use CXTPSyntaxEditBufferManager::SerializeEx to do this now.
I will add them as members of CXTPSyntaxEditCtrl.
EXAMPLE:
CString GetText()
{ if (m_wndSyntaxEdit.GetEditBuffer()) { CMemFile memFile; CArchive ar(&memFile, CArchive::store); BOOL bUnicode = (sizeof(TCHAR) == 2);
m_wndSyntaxEdit.GetEditBuffer()->SerializeEx(ar, bUnicode, FALSE, -1); ar << (DWORD)0;
ar.Close();
memFile.SeekToBegin();
void* pTextData = NULL;
void* pTextEnd = NULL; memFile.GetBufferPtr(CFile::bufferRead, (UINT)-1, &pTextData, &pTextEnd); return pTextData; } return _T(""); } void SetText(LPCTSTR pcszText)
{ if (m_wndSyntaxEdit.GetEditBuffer() && pcszText) { int nStrLenB = (int)_tcslen(pcszText) * sizeof(TCHAR); CMemFile memFile((BYTE*)pcszText, nStrLenB); memFile.SeekToBegin(); CArchive ar(&memFile, CArchive::load);
BOOL bUnicode = (sizeof(TCHAR) == 2);
m_wndSyntaxEdit.GetEditBuffer()->SerializeEx(ar, bUnicode); //---------------------------------------
m_wndSyntaxEdit.RefreshColors(); m_wndSyntaxEdit.RecalcScrollBars(); m_wndSyntaxEdit.UpdateWindow(); } } |
|
AndreiM
Moderator Group Joined: 18 August 2007 Status: Offline Points: 132 |
Post Options
Thanks(0)
|
I think we will add possibility to load configuration and schemas from resources rather then from files.
Adding keywords in run-time will be added after 11.2.1.
Can you explain more about your needs for this feature. A tokenizer similar to the one found in Scintilla.
Can you explain more about this point too. |
|
Tomasz
Senior Member Joined: 05 August 2006 Status: Offline Points: 109 |
Post Options
Thanks(0)
|
One needs to be able to add KEYWORDS in run-time. This is CRUICIAL. For example, I have an application that features full-blown programming language that allows user to define his own functions. Either via DLLs (plugins) or by function definition. And I want user-defined functions to be HIGHLIGHTED. For that I need to be able to add keywords in runtime to SyntaxEdit colorizer. I also need to add them to auto-complete boxes as well as parameter info.
I have got impression that CodeJock developers do not really use the libraries they create. You should actually try to create some bigger sample application that actually does something more than being Notepad replacement in order to understand what issues are met with when one tries to actually use the control in real-world.
This is similar to compiler creator that should actually compile the programs with the compiler he created. Otherwise he won't be aware of many issues that surface when you actually try to use the product in real-world situation, not only the most trivial 'demo' case.
As far as loading from string via CArchive - why making this most basic and required operation as complicated???? Should I mention SLOW, too?
Do you really imagine that anybody would program for Windows if there was no SetWindowText() function???? And Windows API required to go through CArchive instead???? This is ridiculous.
Give us straight SetWindowText() equivalent! That's after all Windows standard. Why do you make things harder than they should be!
Codejock you need to decide whenever you want to release somethign SERIOUS or just a toy for kids. At the moment SyntaxEdit is a toy.
To be considered professional it needs:
a) full API (with basic operations like SetText/GetText available directly, not using slow workarounds)
b) full feature set (colorizing, user-defined keywords added programmatically, programmatic control over auto-complete, "Parameter info" functionality with programmatic control too). Everything what is available from .INI config, should be also available from the code (without any external files)
c) it must be FAST. I can not stress it more. Speed is cruicial thing. Right now the control is slow. Please use the PROFILER to find bottlenecks.
|
|
znakeeye
Senior Member Joined: 26 July 2006 Status: Offline Points: 1672 |
Post Options
Thanks(0)
|
Scintilla is open-source. In it, you find a tokenizer which lets you colorize on the fly. Even though their state machine is flawed, it gives the programmer great control of the colorization.
I'm not saying that the current implementation of SE is bad, I'm just saying that there will be situations where the programmer wants total control of the syntax highlighting. In these situations there must be a customizable callback function: "Current line changed. How do you want to colorize it?" (don't forget multiline comment changes...)
When it comes to adding keywords, this requires not just "colorize all words found in list X", but also "colorize all words matching pattern X".
For instance, the user might want to colorize all strings ("some text") in a certain color/style without having to alter some shclass-file... Hence, all we need is a well-designed callback function where we can do whatever we want
|
|
Post Reply | |
Tweet
|
Forum Jump | Forum Permissions You cannot post new topics in this forum You cannot reply to topics in this forum You cannot delete your posts in this forum You cannot edit your posts in this forum You cannot create polls in this forum You cannot vote in polls in this forum |