MXSEditor global utility pugin

8 votes
Version: 
1.00

This 3ds Max plugin provides a powerful Maxscript interface to the maxscript editor (MXSE) and the underlying Scintilla/SciTE editor component. Additionally it enables the Maxscript Editor to be used as an extended viewport.

FEATURES:

  • Maxscript Editor as Extended Viewport
  • Extensive control over the Maxscript Editor via maxscript
  • Access to the Scintilla/SciTE internal command set (see Scintilla Docs )
  • Callback mechanism to get notified about changes and events occuring in the maxscript editor

To make use of the maxscript exposure of the SciTE interface,  knowledge of the SciTE interal API is a plus. It’s important to read the accompanying documentation, as well as the references to the SciTE online documentation. There is also a better formatted PDF documentation in the download package.

MXSEditor Global Utility Plugin V1.0

Author:    Josef Wienerroither
Created:   August 2011
Modified:  September 30th, 2018

HISTORY:

  • Version:  V1.0, RELEASE DC20180930,
    Added Max 2018 and Max 2019 versions
  • Version:  V1.0, RELEASE DC20170720
    First public final release version
    Added documentation
  • Version:  V1.0, DC20160606,
    Updated to Unicode, Compatible with Max 2008 - Max2017, x86 and x64
    Implemented, fixed callback functionality
    Lots of other fixes and updates
  • Version:  V0.50 - Beta 1, DC20120214,
    First public release

AUTHOR:   
    Josef Wienerroither aka "spacefrog"  www.frogsinspace.at  | [email protected]

INSTALL:
    Copy the appropiate file according to your 3ds Max version into your plugins folder
    restart 3ds Max. The plugin should now be operational
    You simply can check this by typeing "showinterface MXSEditor" in the listener
    If you get the public properties and functions listed, the plugin was loaded successfully

FEATURES:
    Use Maxscript Editor as Extended Viewport ( enabled right after install )
    Access various basic Maxscript Editor functionality via maxscript not available before
    Extensive maxscript control of the Maxscript Editor using SciTE's internal command interface
    For detailed usage, read the PDF documentation, or the online documentation

USAGE NOTES ( PLEASE REFER TO THE PDF FOR DETAILED USAGE ! )
    If you just want to use the maxscript editor in an extended viewport, you can do so right after installation
    There are some limitations to that though, which are also true for the 3ds Max built in Listener in an extended viewport     though. eg. if you close the Maxscript editor while it's in the extended viewport via the 3ds Max "Maxscript" menu, or via     keyboard shortcut, you well end up with a blank viewport that seems to be dead. Actually the Maxscript editor just gets     hidden in this case, so you simply can reopen it and everything will keep working.
    So it's better to end the extended viewport by switching the viewport to a standard view like "Top" etc.., using the
    right mousebutton menu while hovering the mouse cursor over the maxscript editors menu area. This is essentially      standard behavior for extended viewports in Max.

MAXSCRIPT INTERFACES & STRUCTS
    Right after installation you will get several addional Maxscript interfaces and structs at your disposal
    The functionality is documented in the accompanying PDF or on the plugin's website.

    Here are just the basic maxscript interfaces and structs listed :

          Interface: MXSEditor
           Properties:
            .x : integer : Read|Write
            .y : integer : Read|Write
            .width : integer : Read|Write
            .height : integer : Read|Write
            .enableCallbacks : boolean : Read|Write
            .isVisible : boolean : Read|Write
            .verbose : boolean : Read|Write
            .isExtendedVP : boolean : Read
            .mainHWND : HWND : Read
            .editHWND : HWND : Read
            .documentCount : integer : Read
            .currentDocument : string : Read
           Methods:
            <void>redraw()
            <void>show()
            <boolean>endExtendedVP()
            <void>reloadOptions()
            <boolean>editFile <string>filename quiet:<boolean>
               quiet default value: false
            <string>documentAtNumber <integer>index
            <void>menuCommand <string>menucode
            <boolean>setWindowPosition <integer>x <integer>y <integer>width <integer>height
            <string>getConfigProperty <string>name
            <integer>getConfigIntProperty <string>name
            <void>setConfigProperty <string>name <string>value
            <integer>listFunctions()
            <integer>listConstants()
            <integer>listProperties()
            <integer>listMenucodes()

       
    Interface: MXSEFuncs
    interface to MXS Editor's Scintilla edit component functionionality. Functions are called using the internal Scintilla
    messaging system, see some more docs here http://www.scintilla.org/ScintillaDoc.html or  find the most complete
    info by studying the scintilla source code ;-)
   
    mxsefuncs.list() ... list all scintilla internal functions, including parameter types and return type (function signature)
   
    mxsefuncs.call() ... call a scintilla internal function, function name is passed as string value ( without braces
        followed by parameters. Function parameters/return values are past as their respective maxscript equivalents
        eg.: set the background color of selected text, mxsefuncs.list() returns the following function signature:
        void SetSelBack(bool, color)
        thus to set the background color for selected text to some random color we enter the following in the listener:
                                       
        mxsefuncs.call "SetSelBack" true new (color 100 200 30 128)                             
        see http://www.scintilla.org/ScintillaDoc.html#SCI_SETSELBACK what the boolean parameter does...
                                       
        you can pass maxscript variables by reference on functions that require data to be returned ( eg. the selected text)
        so if you do this:
        mxsefuncs.call "GetSelText" &myText
        the Maxscript variable myText will recieve the currently selected text ( selected text in  the Maxscript editor )
                                   
        Best way to find out how those functions work, is by experiment and study of the docs at
        http://www.scintilla.org/ScintillaDoc.html
   
    Interface:MXSEProps
    struct to get, set and list all current scintilla config properties, essentially the internal settings of the editor component
    see Scintilla documentation ->http://www.scintilla.org/ScintillaDoc.html
                   
    mxseprops.list() ... list all the available properties and their signature ( mxseprops.dump() is exactly the same )
                                 ... Note:  those are not properties defined in the external scintilla "options" files
               
    mxseprops.get()
    mxseprops.set()  ... Set or get a property, see mxsefuncs.call() for examples how parameters and names are passed
   
   
    Interface: MXSECallback
        struct to allow you to hook maxscript functions onto specific editor events ( eg. an entered character etc.. )
        See the comprehensive PDF or online documentation for further details

Version Requirement: 
3ds Max 2008 and up
Video URL: 

Comments

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.
SonyaKeller's picture

Nice post.

“玩现代育儿的油画肖像是非常好的帖子,我非常欣赏法国讽刺作家代写招聘 的努力。我实际上是通过写作服务论坛这个链接,我真的很喜欢它。”

spacefrog's picture

Added 3ds Max 2018 and 3ds Max 2019 versions

Just a wink that i added builds for the current 3ds Max versions to the zip package. Simply download again and you'll find builds for Max 2018/2019 in the zip

fajar's picture

is it possible to add or

is it possible to add or activated auto complete including all function or struct function in current doc with this extension?

spacefrog's picture

An annoying bug slipped into the release...

Thanks for the vote, barigazy

looks like a bug slipped into the release with the extended viewport functionality:
You can't close a tab/file using the File->Close menu or using RMB->Close on a tab. As i always use Ctrl->w or Ctrl->F4 to close the current window, i did'nt catch this. This bug is especially annoying as you don't have a close button while the editor is in an extended viewport. Will fix this in the next release.

barigazy's picture

...+1

Thank you Josef for sharing this plugin.
MXS Editor as extended view is great idea.
Nice work!

bga

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.