Skip to content

Commit e8ce93c

Browse files
committed
Adds lua help functions
1 parent 004b3be commit e8ce93c

9 files changed

Lines changed: 145 additions & 14 deletions

File tree

include/commandLine.h

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -394,6 +394,11 @@ struct CommandLine
394394
*/
395395
inline int lua_setOption(lua_State * lua)
396396
{
397+
if (lua_gettop(lua) >= 1 && lua_isstring(lua, 1) && std::string(lua_tostring(lua, 1)) == "help")
398+
{
399+
lua_writestring("setOption:\n Arguments:\n name [string],\n value\n Set option name to value.\n");
400+
return 0;
401+
};
397402
int args = lua_gettop(lua);
398403
if (args != 2)
399404
{
@@ -502,6 +507,11 @@ struct CommandLine
502507
*/
503508
inline int lua_getOption(lua_State * lua)
504509
{
510+
if (lua_gettop(lua) >= 1 && lua_isstring(lua, 1) && std::string(lua_tostring(lua, 1)) == "help")
511+
{
512+
lua_writestring("getOption:\n Arguments:\n name [string]\n Get the value of option name.\n");
513+
return 0;
514+
};
505515
int args = lua_gettop(lua);
506516
if (args != 1)
507517
{

include/console.h

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -106,6 +106,11 @@ int dispatchCommandLine(lua_State * lua)
106106
*/
107107
int lua_startRecord(lua_State * lua)
108108
{
109+
if (lua_gettop(lua) >= 1 && lua_isstring(lua, 1) && std::string(lua_tostring(lua, 1)) == "help")
110+
{
111+
lua_writestring("startRecord:\n Arguments: none\n Start video recording.\n");
112+
return 0;
113+
};
109114
LuaExtraSpace * extraSpace = *static_cast<LuaExtraSpace**>(lua_getextraspace(lua));
110115
if (!extraSpace->visualisationState->recording)
111116
{
@@ -122,6 +127,11 @@ int lua_startRecord(lua_State * lua)
122127
*/
123128
int lua_stopRecord(lua_State * lua)
124129
{
130+
if (lua_gettop(lua) >= 1 && lua_isstring(lua, 1) && std::string(lua_tostring(lua, 1)) == "help")
131+
{
132+
lua_writestring("stopRecord:\n Arguments: none\n Stop video recording.\n");
133+
return 0;
134+
};
125135
LuaExtraSpace * extraSpace = *static_cast<LuaExtraSpace**>(lua_getextraspace(lua));
126136
if (extraSpace->visualisationState->recording)
127137
{
@@ -138,6 +148,11 @@ int lua_stopRecord(lua_State * lua)
138148
*/
139149
int lua_play(lua_State * lua)
140150
{
151+
if (lua_gettop(lua) >= 1 && lua_isstring(lua, 1) && std::string(lua_tostring(lua, 1)) == "help")
152+
{
153+
lua_writestring("play:\n Arguments: none\n Play the trajectory.\n");
154+
return 0;
155+
};
141156
LuaExtraSpace * extraSpace = *static_cast<LuaExtraSpace**>(lua_getextraspace(lua));
142157
extraSpace->options->play.value = true;
143158
return 0;
@@ -151,6 +166,11 @@ int lua_play(lua_State * lua)
151166
*/
152167
int lua_exit(lua_State * lua)
153168
{
169+
if (lua_gettop(lua) >= 1 && lua_isstring(lua, 1) && std::string(lua_tostring(lua, 1)) == "help")
170+
{
171+
lua_writestring("exit:\n Arguments: none\n Quit sfoav.\n");
172+
return 0;
173+
};
154174
LuaExtraSpace * extraSpace = *static_cast<LuaExtraSpace**>(lua_getextraspace(lua));
155175
*(extraSpace->exit) = true;
156176
return 0;
@@ -164,6 +184,11 @@ int lua_exit(lua_State * lua)
164184
*/
165185
int lua_pause(lua_State * lua)
166186
{
187+
if (lua_gettop(lua) >= 1 && lua_isstring(lua, 1) && std::string(lua_tostring(lua, 1)) == "help")
188+
{
189+
lua_writestring("pause:\n Arguments: none\n Pause the trajectory.\n");
190+
return 0;
191+
};
167192
LuaExtraSpace * extraSpace = *static_cast<LuaExtraSpace**>(lua_getextraspace(lua));
168193
extraSpace->options->play.value = false;
169194
return 0;
@@ -207,6 +232,25 @@ class Console
207232
end
208233
use(sfoav))";
209234
runString(init);
235+
236+
const char * help = R"(
237+
function help(func)
238+
if func == sfoav or func == nil then
239+
for k,v in pairs(sfoav) do
240+
v("help")
241+
print("\n")
242+
end
243+
return
244+
end
245+
for k,v in pairs(sfoav) do
246+
if v == func then
247+
func("help")
248+
print("\n")
249+
return
250+
end
251+
end
252+
end)";
253+
runString(help);
210254
}
211255

212256
~Console(){ lua_close(lua); }

include/consoleWindow.h

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,6 @@ This is free software, and you are welcome to redistribute it under certain cond
7373
memset(InputBuf, 0, sizeof(InputBuf));
7474
HistoryPos = -1;
7575

76-
Commands.push_back("HELP");
7776
Commands.push_back("HISTORY");
7877
Commands.push_back("CLEAR");
7978
AutoScroll = true;
@@ -166,7 +165,8 @@ This is free software, and you are welcome to redistribute it under certain cond
166165

167166
focussed = ImGui::IsWindowFocused();
168167

169-
ImGui::TextWrapped("Enter 'HELP' for help.");
168+
ImGui::TextWrapped("Enter 'help()' for a list of functions.");
169+
ImGui::TextWrapped("For help with each function: 'help(zoomCamera)'.");
170170

171171
if (ImGui::SmallButton("Clear")) { clearLog(); }
172172

@@ -260,14 +260,6 @@ This is free software, and you are welcome to redistribute it under certain cond
260260
{
261261
clearLog();
262262
}
263-
else if (Stricmp(command_line, "HELP") == 0)
264-
{
265-
addLog("Commands:");
266-
for (int i = 0; i < Commands.Size; i++)
267-
{
268-
addLog("- %s", Commands[i]);
269-
}
270-
}
271263
else if (Stricmp(command_line, "HISTORY") == 0)
272264
{
273265
int first = History.Size - 10;

include/luaBindings/camera.h

Lines changed: 36 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,11 @@
1111
*/
1212
inline int Camera::lua_cameraPosition(lua_State * lua)
1313
{
14+
if (lua_gettop(lua) >= 1 && lua_isstring(lua, 1) && std::string(lua_tostring(lua, 1)) == "help")
15+
{
16+
lua_writestring("cameraPosition:\n Arguments:\n spherical [bool, optional]\n Get the position of the camera.\n By default in cartesian form.\n");
17+
return 0;
18+
};
1419
int args = lua_gettop(lua);
1520
bool spherical = false;
1621
if (args == 1)
@@ -41,6 +46,11 @@ inline int Camera::lua_cameraPosition(lua_State * lua)
4146
*/
4247
inline int Camera::lua_setCameraPosition(lua_State * lua)
4348
{
49+
if (lua_gettop(lua) >= 1 && lua_isstring(lua, 1) && std::string(lua_tostring(lua, 1)) == "help")
50+
{
51+
lua_writestring("setCameraPosition:\n Arguments:\n x [number],\b y [number],\n z[number]\n Set the position of the camera.\n");
52+
return 0;
53+
};
4454
int args = lua_gettop(lua);
4555
if (args != 3)
4656
{
@@ -68,6 +78,11 @@ inline int Camera::lua_setCameraPosition(lua_State * lua)
6878
*/
6979
inline int Camera::lua_rotateCamera(lua_State * lua)
7080
{
81+
if (lua_gettop(lua) >= 1 && lua_isstring(lua, 1) && std::string(lua_tostring(lua, 1)) == "help")
82+
{
83+
lua_writestring("rotateCamera:\n Arguments:\n phi [number]\n Rotate the camera by phi radians.\n");
84+
return 0;
85+
};
7186
int args = lua_gettop(lua);
7287
if (args != 1)
7388
{
@@ -93,6 +108,11 @@ inline int Camera::lua_rotateCamera(lua_State * lua)
93108
*/
94109
inline int Camera::lua_zoomCamera(lua_State * lua)
95110
{
111+
if (lua_gettop(lua) >= 1 && lua_isstring(lua, 1) && std::string(lua_tostring(lua, 1)) == "help")
112+
{
113+
lua_writestring("zoomCamera:\n Arguments:\n r [number]\n Zoom the camera.\n");
114+
return 0;
115+
};
96116
int args = lua_gettop(lua);
97117
if (args != 1)
98118
{
@@ -118,6 +138,11 @@ inline int Camera::lua_zoomCamera(lua_State * lua)
118138
*/
119139
inline int Camera::lua_inclineCamera(lua_State * lua)
120140
{
141+
if (lua_gettop(lua) >= 1 && lua_isstring(lua, 1) && std::string(lua_tostring(lua, 1)) == "help")
142+
{
143+
lua_writestring("inclineCamera:\n Arguments:\n theta [number]\n Incline the camera by theta radians.\n");
144+
return 0;
145+
};
121146
int args = lua_gettop(lua);
122147
if (args != 1)
123148
{
@@ -143,6 +168,11 @@ inline int Camera::lua_inclineCamera(lua_State * lua)
143168
*/
144169
inline int Camera::lua_setCameraFieldOfView(lua_State * lua)
145170
{
171+
if (lua_gettop(lua) >= 1 && lua_isstring(lua, 1) && std::string(lua_tostring(lua, 1)) == "help")
172+
{
173+
lua_writestring("setCameraFieldOfView:\n Arguments:\n fov [number]\n Set the camera's fov in degrees.\n");
174+
return 0;
175+
};
146176
int args = lua_gettop(lua);
147177
if (args != 1)
148178
{
@@ -160,14 +190,19 @@ inline int Camera::lua_setCameraFieldOfView(lua_State * lua)
160190
}
161191

162192
/**
163-
* @brief Set the field of view.
193+
* @brief Get the field of view.
164194
*
165195
* @remark Lua arguments are:
166196
* @param lua the Lua context.
167197
* @return int the return code.
168198
*/
169199
inline int Camera::lua_getCameraFieldOfView(lua_State * lua)
170200
{
201+
if (lua_gettop(lua) >= 1 && lua_isstring(lua, 1) && std::string(lua_tostring(lua, 1)) == "help")
202+
{
203+
lua_writestring("getCameraFieldOfView:\n Arguments: none\n Get the camera's fov in degrees.\n");
204+
return 0;
205+
};
171206
lua_pushnumber(lua, fieldOfView);
172207
return 1;
173208
}

include/luaBindings/visualisationState/atoms.h

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,11 @@
2424
inline int VisualisationState::lua_setAtomColour(lua_State * lua)
2525
{
2626
int args = lua_gettop(lua);
27+
if (lua_gettop(lua) >= 1 && lua_isstring(lua, 1) && std::string(lua_tostring(lua, 1)) == "help")
28+
{
29+
lua_writestring("setAtomColour:\n Arguments:\n i [number]\n r [number]\n g [nummber]\n b [number]\n a [number]\n Set atom i's colour.\n");
30+
return 0;
31+
};
2732
if (args < 4 || args > 5)
2833
{
2934
const std::string msg = "setAtomColour expects an atom index and RGB or RGBA arguments.\n";
@@ -72,6 +77,11 @@ inline int VisualisationState::lua_setAtomColour(lua_State * lua)
7277
inline int VisualisationState::lua_getAtomColour(lua_State * lua)
7378
{
7479
int args = lua_gettop(lua);
80+
if (lua_gettop(lua) >= 1 && lua_isstring(lua, 1) && std::string(lua_tostring(lua, 1)) == "help")
81+
{
82+
lua_writestring("setAtomColour:\n Arguments: none\n Get atom i's colour.\n");
83+
return 0;
84+
};
7585
if (args != 1)
7686
{
7787
const std::string msg = "getAtomColour expects an atom index as argument.\n";
@@ -114,6 +124,11 @@ inline int VisualisationState::lua_getAtomColour(lua_State * lua)
114124
*/
115125
inline int VisualisationState::lua_atomCount(lua_State * lua)
116126
{
127+
if (lua_gettop(lua) >= 1 && lua_isstring(lua, 1) && std::string(lua_tostring(lua, 1)) == "help")
128+
{
129+
lua_writestring("atomCount:\n Arguments: none\n Get number of atoms.\n");
130+
return 0;
131+
};
117132
lua_pushinteger(lua, atomCount);
118133
return 1;
119134
}
@@ -131,6 +146,11 @@ inline int VisualisationState::lua_atomCount(lua_State * lua)
131146
inline int VisualisationState::lua_getAtomsNeighbours(lua_State * lua)
132147
{
133148
int args = lua_gettop(lua);
149+
if (lua_gettop(lua) >= 1 && lua_isstring(lua, 1) && std::string(lua_tostring(lua, 1)) == "help")
150+
{
151+
lua_writestring("setAtomColour:\n Arguments:\n i [number]\n cutoff [number]\n Get atom i's neighbours within cutoff.\n");
152+
return 0;
153+
};
134154
if (args < 2)
135155
{
136156
const std::string msg = "getAtomsNeighbours expects an atom index and cutoff distance as argument.\n";
@@ -187,6 +207,11 @@ inline int VisualisationState::lua_getAtomsNeighbours(lua_State * lua)
187207
inline int VisualisationState::lua_getAtom(lua_State * lua)
188208
{
189209
int args = lua_gettop(lua);
210+
if (lua_gettop(lua) >= 1 && lua_isstring(lua, 1) && std::string(lua_tostring(lua, 1)) == "help")
211+
{
212+
lua_writestring("getAtom:\n Arguments: \n i [number]\n Get atom i's state.\n");
213+
return 0;
214+
};
190215
if (args != 1)
191216
{
192217
const std::string msg = "getAtom expects an atom index as argument.\n";
@@ -264,6 +289,11 @@ inline int VisualisationState::lua_getAtom(lua_State * lua)
264289
inline int VisualisationState::lua_getAtomsBonds(lua_State * lua)
265290
{
266291
int args = lua_gettop(lua);
292+
if (lua_gettop(lua) >= 1 && lua_isstring(lua, 1) && std::string(lua_tostring(lua, 1)) == "help")
293+
{
294+
lua_writestring("getAtomsBonds:\n Arguments:\n i [number]\n Get atom i's bonds.\n");
295+
return 0;
296+
};
267297
if (args != 1)
268298
{
269299
const std::string msg = "getAtomsBonds expects an atom index as argument.\n";

include/luaBindings/visualisationState/bonds.h

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,11 @@
1212
*/
1313
inline int VisualisationState::lua_bond(lua_State * lua)
1414
{
15+
if (lua_gettop(lua) >= 1 && lua_isstring(lua, 1) && std::string(lua_tostring(lua, 1)) == "help")
16+
{
17+
lua_writestring("bond:\n Arguments:\n i [number]\n j [number]\n Bond i and j.\n");
18+
return 0;
19+
};
1520
int args = lua_gettop(lua);
1621
if (args != 2)
1722
{
@@ -56,6 +61,11 @@ inline int VisualisationState::lua_bond(lua_State * lua)
5661
*/
5762
inline int VisualisationState::lua_unbond(lua_State * lua)
5863
{
64+
if (lua_gettop(lua) >= 1 && lua_isstring(lua, 1) && std::string(lua_tostring(lua, 1)) == "help")
65+
{
66+
lua_writestring("unbond:\n Arguments:\n i [number]\n j [number]\n Unbond i and j.\n");
67+
return 0;
68+
};
5969
int args = lua_gettop(lua);
6070
if (args != 2)
6171
{

include/luaBindings/visualisationState/utils.h

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,11 @@
1111
*/
1212
inline int VisualisationState::lua_setText(lua_State * lua)
1313
{
14+
if (lua_gettop(lua) >= 1 && lua_isstring(lua, 1) && std::string(lua_tostring(lua, 1)) == "help")
15+
{
16+
lua_writestring("setText:\n Arguments:\n message [string]\n Set the info message.\n");
17+
return 0;
18+
};
1419
int args = lua_gettop(lua);
1520
if (args != 1)
1621
{
@@ -35,6 +40,11 @@ inline int VisualisationState::lua_setText(lua_State * lua)
3540
*/
3641
inline int VisualisationState::lua_getFrame(lua_State * lua)
3742
{
43+
if (lua_gettop(lua) >= 1 && lua_isstring(lua, 1) && std::string(lua_tostring(lua, 1)) == "help")
44+
{
45+
lua_writestring("getFrame:\n Arguments: none\n Get the current frame number.");
46+
return 0;
47+
};
3848
lua_pushinteger(lua, frame);
3949
return 1;
4050
}

include/vendored/lua/src/lauxlib.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -258,7 +258,7 @@ typedef struct luaL_Stream {
258258

259259
/* print a string */
260260
#if !defined(lua_writestring)
261-
#define lua_writestring(s,l) (std::cout << s)
261+
#define lua_writestring(s) (std::cout << s)
262262
#endif
263263

264264
/* print a newline and flush the output */

include/vendored/lua/src/lbaselib.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,8 +27,8 @@ static int luaB_print (lua_State *L) {
2727
size_t l;
2828
const char *s = luaL_tolstring(L, i, &l); /* convert it to string */
2929
if (i > 1) /* not the first element? */
30-
lua_writestring("\t", 1); /* add a tab before it */
31-
lua_writestring(s, l); /* print it */
30+
lua_writestring("\t"); /* add a tab before it */
31+
lua_writestring(s); /* print it */
3232
lua_pop(L, 1); /* pop result */
3333
}
3434
lua_writeline();

0 commit comments

Comments
 (0)