X-Function Related
Popup menu within GetN dialog (ORG-8466)
Create a new X-Function, and in tree view of X-Function Builder, set GetN Dialog Custom Buttons with "Popup Menu".
Then, edit in Code Builder, include header file "control.h" (#include <control.h>), then in <xf-name>_event1 function, add the following code;
if( nEventID == GETNE_ON_CUSTOM_BUTTON1 ) { Menu m; m.Create(); m.Add("Item 1",1,MF_DISABLED); POINT pt; GetCursorPos(&pt); m.TrackPopupResMenu(0, pt.x, pt.y, GetWindow()); }
The result will be
Support adding help file for customized X-Function (ORG-7549)
When creating an X-Function in X-Function Builder, in the tree view, it is allowed to specify the Document Name, then the help button in the X-Function dialog will open this specified help file if clicked.
Ability to clear documentation when duplicating an X-Function (ORG-7616)
In X-Function Builder, menu Tools: Clear Document is used to remove document related contents after duplicating an existing X-Function.
Provide command to open X-Function in X-Function Builder (ORG-7786)
edit -x integ1; // Or using this integ1 -e;
Support Auto checkbox for Slider control (ORG-7847)
#include <GetNBox.h> void test_GetN() { GETN_TREE(tr) GETN_SLIDER(slider, "test", 0, "1|100|100") TreeNode trN = tr.slider; octree_set_auto_support(&trN, 1); GetNBox(tr); }
The result dialog is:
Error message of X-Function shows in window (Script Window) where it runs (ORG-8836)
Code Builder
Improve TreeNode display in Code Builder Variable window (ORG-8689)
Run
void test_treenode() { Tree tr; tr.a.nVal = 10; tr.b.strVal = "Fol"; vector<int> vn = {1,2}; tr.c.nVals = vn; vector<string> vs = {"a","b"}; tr.d.strVals = vs; tr.e.a.strVals = vs; TreeNode trA = tr.a; TreeNode trB = tr.b; TreeNode trC = tr.c; TreeNode trD = tr.d; TreeNode trE = tr.e; }
And get:
Change hot key in Code Builder, Ctrl+Shift+F for find in files, and Ctrl+Shift+C for copy full path (ORG-7919)
Origin C
Add more Page and Layer classes LabTalk evaluation functions (ORG-8470)
BOOL LT_evaluate(LPCSTR lpcszLabTalkExpression, double * lpdbResult); BOOL LT_get_var(LPCSTR lpcszLabTalkVarName, double * lpdbResult); BOOL LT_set_var(LPCSTR lpcszLabTalkVarName, double dbValue); BOOL LT_get_str(LPCSTR lpcszLabTalkString, char* pBuffer, int nBufferSize); BOOL LT_set_str(LPCSTR lpcszVar, LPCSTR lpcszContent);
OC vector::SetSubVector supports copy by counting elements (ORG-8024)
int vectorbase::SetSubVector(vectorbase& vbSource, int c1 = 0, int nCount = -1); int vector<string>::SetSubVector(vectorbase& vbSource, int c1 = 0, int nCount = -1);
Expose Column method GetAdditionalInfo to OC for getting additional text (ORG-9101)
void test_GetAdditionalInfo() { Worksheet wks = Project.ActiveLayer(); Column col(wks, 0); string strTextInfo; col.GetAdditionalInfo(strTextInfo); out_str(strTextInfo); }
Improve speed of OC compiler (ORG-8697)
LabTalk
LabTalk callable OC function to force recalculate operation executed (ORG-7877)
Click on the recalculate lock and select Show Info from the context menu to get the "operation_uid", then run execute_operation function.
execute_operation(operation_uid);
Improve LabTalk "type -gb" command for text file output (ORG-8306)
type -gb[ef[r|n]]
e is for New file which will erase existing file.
f is for output to file only, instead of file and script window.
New line is \r\n by default, n = use \n as new line, r = use \r as new line.
Better error checking in LabTalk function (ORG-9155)
In an OGS file, add the following script, and then run the main section, the error message will go to Message Log.
[Main] Function int aa(int nn) { ty "inside function"; sdf;//error return 1; } int nErr = aa(0); ty "after function";