Results 1 to 10 of 69

Thread: Hammer3 in alpha

Threaded View

Previous Post Previous Post   Next Post Next Post
  1. #1

    Default Hammer3 in alpha


    Over the past 3 months me and Sergey have revised the DataFlex code editor "The Hammer" and made quite dramatic changes to it.
    We have replaced the codemax control that was at the heart of all previous versions of the Hammer (like Data Access Studio) and have refactored the scintilla control so that it understands DataFlex.

    At this moment we are pretty close to feature parity with earlier versions. We are however no longer limited/crippled by an editor control that is no longer under active development and as such we are able to offer new features.

    New features already in this alpha are:
    - completely redesigned GUI based around codejock and using codejock panels. Only depending on what is included in DataFlex (so no need to buy the codejock suite to be able to compile)
    - more integrated preferences dialog where you can tweak the settings
    - support for editing ANY dataflex version
    - revised project workspace that embeds the dataflex project, but can be customized
    - embedded database explorer
    - embedded workspace explorer
    - component palette
    - theme based color definitions
    - improved code parser, fixes a number of bugs such as memory leaks when bumping into unparseable code and adds support for structures, dataflex macro's
    - code complete on functions (writes out default variables based on return type)
    - new integrated compiler using activex (when available)
    - there's drag and drop support from any of the panels for pretty much any of the items

    Then for scintilla and the editor part, it already includes a number of auto prompt lists that have been available before, but have been improved and extended.
    - command autoprompts
    - find autoprompt
    - filebased command prompt (open/reread/..)
    - function tooltips that highlight/bold the parameter you are on
    - code collapse
    - embedded language support (eg. javascript in html)

    While DataFlex is (obviously) our main target we will also support other languages.
    This is a part I'm currently working on and extending.
    For now there's support for:
    - DataFlex
    - SQL
    - Html (with javascript embedded)
    - Pascal
    - C++

    More languages to follow. The scintilla control understands 122 languages, but we have to instruct it about things like what the language keywords are, well a bit more than that, but I'll not bore you with the details. If you try one of the above languages it will suggest a predefined definition you can use. (You should save in preferences afterwards I forgot to do that, will fix in next rev. Fixed in build July 20th)

    Finally here's a screenshot or two, first one with the lime theme:
    Click image for larger version. 

Name:	Hammer3alpha-Lime-Theme.png 
Views:	379 
Size:	244.9 KB 
ID:	11141

    and here's one with a white theme and using Deja Vu Sans as font and I collapsed an object to show how that works.
    Click image for larger version. 

Name:	Hammer3alpha-White-Theme.png 
Views:	330 
Size:	238.4 KB 
ID:	11142

    Theme selection:
    Click image for larger version. 

Name:	Hammer3alpha-Theme-selection.png 
Views:	322 
Size:	47.3 KB 
ID:	11140

    I'm pretty sure I forgot list some of the features, but this is at least a short overview of the new features.

    You can download right now from:

    In order to run you will have to unzip and then compile the Hammer3.src in the workspace using a DataFlex version >= DataFlex 18.1
    The zip has all you need to compile and run.


    (on behalf of the Hammer3 team )

    Please note that if you have installed a Hammer3 version from before July 22nd that if you want all the changes that you should delete (or rename) from the data folder CODEMAXEDIT<WindowsUsername>.INI so that the correct defaults are used. Without that you will miss out on things like code collapse support on struct/for/repeat

    Update 2017-07-21
    • ThaHammerActions.pkg, a transfer file needs a .src file to be open, so tell the user why it failed.
    • Pkg/cEditorProperties.pkg, on starting a new Hammer for the verify first time, you get an error that the current folder does not exist. This now no longer happens as we test for "first time" run.
    • Pkg/cWorkspaceHandlerBase.pkg, also fixed a first time run on it mentioning that it can't find VDF7, we now use VDF version -1 as initial default and test against that.
    • Programs/CODEMAXEDIT.ini, a number of defaults fixed. "For" and "Repeat" was missing in keywords and as a result no code collapse on for or repeat loops. Also fixed start folder to <undefined> and start DF to -1.

    Update 2017-07-22
    • Bug 71: The Month and Day values are reversed with USA dates
    • Changing defaults for new start:
      - Struct/End_Struct now works with code collapse and is recognized as keyword
      - Sets the default White Schema instead of old color schema
      - Showing Braces to true
      - Select Whole Line
      - Font default: Courier New
      - Line Comment also support #REM
    • Add DEF files, update .FD (no changes)
    • TH3EditToolBar.pkg, add find/Replace to buttons
    • cEditorEdit.pkg, fix 1 line too high issue on insert revision entry, make revision entry 1 undo action instead of two.
      cSciLexer.pkg, wrap beginundoaction/endundoaction in methods StartUndoTransaction/EndUndoTransaction so can make it control independent.
      cCodemax.pkg empty StartUndoTransaction/EndUndoTransaction

    Update 2017-07-25
    • Reindexed all data files as the indexes of VDFCLS got corrupt causing the images in the code explorer to always show a question mark instead of the control they stand for.
    • Initial language support for:
      - Javascript
      - Java
      - CSharp
      - Swift

    - Go

    • Bug 49 - clicking toolbar button while focus not in editor can trigger error 98.
    • CODEMAXEDIT.ini, add default file extension matching the new language support (IOW, delete/rename your local codemax___.ini if you like to take over those defaults)

    Update 2017-07-31
    • Internationalisation (i18n) support, translates the whole UI interface on the fly. Currently supported are English and Russian.
      See *.LNG files under Programs folder. The LNG filename should be in English. Code pages at the top are not used so far, but more likely will be used soon (for example for the HTML output we do), but this area (header) more likely will be changed/re-designed.

      // Is a comment (ignored)
      // Format:

      Translation do work on the fly. So you may switch from Russian to English and vice versa without restarting The Hammer.
    • VDFCLS application is compilable and operational now.
    • VDFCLS application got a new modern design + Resizable, including ASDB Compiler.
    • Removed unused files from pkg folder, moved codemax specific files to Codemax subfolder.

    Update 2017-08-06
    • database explorer, close all files after building up the treeview so that it does not interfere with an open database builder that you might want to use to change a data file.
    • database explorer, Brought back logic on parent file open problem that got lost over last merge.
    • Added ignore_error 12293 (login unsuccessful) for if login to a database did not succeed (suppress error on open workspace)
    • New scilexer dll which has
      - folding support for #command and #header
      - Improved icode / macro support, now is able to recognize icode (!a !Z !1 etc..), currently displayed with the color for numbers. Introduced SCE_DF_ICODE type.
      - preprocessor detectionion on key word instead of preprocessor per line
      - fix on hexadecimal detection
      - fix comment detection (detect #REM, don't see (* *) as comment )

    Update 2017-08-10
    • Add initial DF19 cConnection support (need to compile with DF19)
    • Dynamically load database driver if not already loaded.
    • Put workspace path before df_open_Path in DoSetOpenPath to ensure the right / DFConnId.ini gets loaded
    • Added logic for performance counters (for now behind key combo Ctrl+O - keybinding likely to change!)
    • The change in df_open_path broke where the codemaxedit<user>.ini was saved, fixed that.
    • Using enter on a autocomplete/codelist sometimes inserted unwanted characters, it now behaves like a tab
    • Table column autocomplete moved to first character in line because the selected column got lost.

    Update 2017-08-11

    • Keyboard shortcut list under settings missed a whole bunch of extra commands.
    • Keyboard shortcut definition screen had some translations moved to the wrong objects
    • Some more hotkey assignments patched, insert header, revision marker etc..
    • Put a lot new keywords in CODEMAXEDIT.INI, reordered alphabetically (Yes that means delete your codemaxedit<user>.ini file again, sorry)
    • Fixed an issue where the column autocomplete list did not work for tables with more than 8 characters in the filename

    Update 2017-08-12

    • Complete removal of support for the codemax control.
    • Tweaked reload last edited file logic to only run on startup of Hammer, not on switching workspace.
    • Removing files from the list to reload when changing workspace / startup now moved to be run after reload as otherwise you could end up with an index out of bound error.

    Update 2017-08-13

    • SciLexer.dll, Added #$@ as valid characters in a DataFlex identifier
    • SciLexer.dll, Added support for legacy DataFlex images, including folding support
    • Added support for ini style files. (*.ini, *.ws and *.sws)
    • Added support for plain text (*.txt and *.log)
    • Fix an issue with background colors set as transparent in colorer by using -1, which was not understood and caused black background (for ex. visible on .xml files)
    • CODEMAXEDIT.ini, add new filetypes (as mentioned before, delete your local codemaxedit<user>.ini file to get the changes)

    Update 2017-08-14

    • Changed test for minimum version to compile to DF18.1 instead of DF18.0, to make it more clear instead of just the documentation.
    •, add "Text" and "Ini" file types
    • cSciLexer.pkg, rewritten CM_OpenFile to use UChar arrays with Read_Block, instead of readln.
      This increases opening and reading files by a factor of up to 117x.
    • Fix funky return key bug where the cursor position got lost due to database case normalisation logic.

    Update 2017-08-18

    • Upped the limit for the line parser elements from 200 to 500 so that you can have up to 500 DataFlex keywords in the language definition
    • Raveen improved the revision entry dialog and added a feature for subheader templates
    • Code cleanup
    • Clear tooltip on opening parenthesis so that it does not show an old tooltip.
    • Added Enum_List/End_Enum_List to tokens.ini that it shows up in the command autocomplete list
    • Fixed an issue with using %1 as a parameter on menu items while called from the main menu. In that case it did not pass the current file so could not expand the requested parameter.

    Update 2017-08-19

    • Open file dialogs now check if directory exists before opening, shows error if not exists (would it be better if that just falls back to another folder?)
    • Shortcut keys, Ctrl+O -> File Open, Ctrl+N -> File New, Ctrl+F4 -> Close File, Ctrl+W -> Select Workspace, Ctrl+Tab -> Next Window, Ctrl+Shift+Tab -> Previous Window, Ctrl+Alt+H -> Revision Marker screen.
    • Fixed a bunch of shortcut keys that could not work (too many to list), moved performance counters to dynamic hotkey definition.
    • New settings and/or options: Auto Save option on compile, trim line endings on save, escape key closes output panel
    • Fix on when using enter to break a line in two and the cursor would end up at the end of the line instead of at the indentation point of the next line.
    • When a tooltip displays the end key no longer cancels the tooltip
    • Peter tweaked the TH3WorkspaceConfigure dialog a bit so that it all aligns a bit better.

    Update 2017-08-20

    • Added missing strings in embedded translation that Bob Worsley reported (thanks Bob)
    • Registering a class would sometimes not popup the dialog because the currenttreeitem would end up being set to 0.
    • Once you did get the dialog to popup, it would not save because sysfile wasn't opened.

    Update 2017-08-21
    • Internal compiler used psBuffer__ properties instead of Current__ properties and as such your compiled program would end up in the last workspace of the list instead of the current workspace.
    • If starting to compile and a find pane is open in the output panes then switch to the compiler window so we can see the progress.
    • Make debugging easy, name our panes so that we see the name instead of "oObject" in the debugger watch.
    • Find Next/Find Previous, show in status bar when no more results for find operation
    • Name our oFile edit objects after the files that they are editing, so that our debugging is a lot easier.
      Beware on sanitizing the characters as not all valid filename characters are valid in an object name, so filter the valid ones.
    • Object oCodeContextMenu was supposed to be linked dynamically to the parent treeview via phoServedObject. Instead it was always set to latest. Changed it into a class and made the contextmenu a menu local to the treeview, thereby removing the need to update that property on switching views.

    Update 2017-08-22
    • Raveen fixed that the function InsertRevisionString procedure stopped early searching for a Revision end marker
    • Edit menu displayed wrong shortcut for the replace menu option.
    • Find dialog now shows search down as default
    • Replace dialog got rid of annoying running bell sounds when using shortcut keys
    • If a file was updated by an external editor it would set the changed state, it no longer does that.
    • Ctrl+F7 default shortcut for locate in code explorer (same as in DF Studio)
    • scintilla wrapper, show cursor wait on save, increased block size from 512 to 1024 when saving
    • CODEMAXEDIT.ini, added "Studio open current file", changed filetab looks, default autosave on compile on, trim EOL on, close output pane on escape also on.

    Update 2017-08-23
    • New parser.dll, version 3.0.250. fixes an issue with class names that have comments stuck to it being detected as part of the class.
      Eg. Object oMyForm is a Form//dbTextEdit
      would see the class as "Form//dbTextEdit" instead of "Form".
    • THAbout.dg, tweak, move a few details so they look better at a higher DPI size.
    • Code cleanup, remove compiler directives and code for pbSizeToClientArea wherever possible
    • When using goto line function via popup or by double clicking in the code explorer, your selected line could be at end or start of your view. If that happens we now scroll 5 lines extra so that you can see more context.

    Update 2017-08-24

    • Raveen added DataFlex 19 managed connection support to the Hammer. Of course this requires you to compile with DataFlex 19 (see last post on this thread for more details)
    • Raveen also reworked the Database explorer in the tools pane on the right hand side so that it is a lot faster when you have a lot of tables. He says it is really noticable on SQL, I also noticed the speed up on embedded.
    • Ivan Schoof has translated the English.lng into Spanish, so we now have support for the Spanish language!
    • I started on a Dutch translation and a tiny bit of Portuguese
    • Added an "X" prompt button to the search/filter forms so you can remove filters with one click of the mouse.
    • Translated the new LoginConnectionDialog that is used by the managed connection support and added it to the language files (english only of course)

    Update 2017-08-25

    • Ivan had made some correction and added translations for new strings in Spanish
    • Using the x-button in the tab view on a non active view would close the active view instead. This has been fixed. Also addressed issues with using the context menu x-button option. Closing a view now should work as you expect it to work.
    • Tooltips on methods and functions could not calculate the parameters and parameter offset correctly if the function or method had extra spaces in parameter declarations. This has been addressed and the general functionality of how tooltips work has been improved a bit.
    Last edited by wila; 25-Aug-2017 at 03:40 PM. Reason: updating list of changes

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts