/* -*- mode: c; c-basic-offset: 4; tab-width: 4; indent-tabs-mode: t -*-
+ * vim: ts=4 sw=4 noet ai cindent syntax=c
*
* Conky, a system monitor, based on torsmo
*
* Copyright (c) 2009 Toni Spets
- * Copyright (c) 2005-2009 Brenden Matthews, Philip Kovacs, et. al.
+ * Copyright (c) 2005-2010 Brenden Matthews, Philip Kovacs, et. al.
* (see AUTHORS)
* All rights reserved.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
- * vim: ts=4 sw=4 noet ai cindent syntax=c
- *
*/
#include "conky.h"
static char *draw_pre_hook = 0;
static char *draw_post_hook = 0;
+static char *startup_hook = 0;
static char *shutdown_hook = 0;
lua_State *lua_L = NULL;
lua_error(L);
}
str = strdup(lua_tostring(L, 1));
- evaluate(str, buf);
+ evaluate(str, buf, max_user_text);
lua_pushstring(L, buf);
free(str);
free(buf);
string: <function> [par1] [par2...]
retc: the number of return values expected
*/
-char *llua_do_call(const char *string, int retc)
+static char *llua_do_call(const char *string, int retc)
{
static char func[64];
int argc = 0;
return func;
}
+#if 0
/*
* same as llua_do_call() except passes everything after func as one arg.
*/
-char *llua_do_read_call(const char *function, const char *arg, int retc)
+static char *llua_do_read_call(const char *function, const char *arg, int retc)
{
static char func[64];
snprintf(func, 64, "conky_%s", function);
return func;
}
+#endif
-char *llua_getstring(const char *args)
+/* call a function with args, and return a string from it (must be free'd) */
+static char *llua_getstring(const char *args)
{
char *func;
char *ret = NULL;
return ret;
}
-char *llua_getstring_read(const char *function, const char *arg)
+#if 0
+/* call a function with args, and return a string from it (must be free'd) */
+static char *llua_getstring_read(const char *function, const char *arg)
{
char *func;
char *ret = NULL;
return ret;
}
+#endif
-int llua_getnumber(const char *args, double *ret)
+/* call a function with args, and put the result in ret */
+static int llua_getnumber(const char *args, double *ret)
{
char *func;
free(draw_post_hook);
draw_post_hook = 0;
}
+ if (startup_hook) {
+ free(startup_hook);
+ startup_hook = 0;
+ }
+ if (shutdown_hook) {
+ free(shutdown_hook);
+ shutdown_hook = 0;
+ }
if(!lua_L) return;
lua_close(lua_L);
lua_L = NULL;
lua_setfield(lua_L, -2, key);
}
+void llua_set_startup_hook(const char *args)
+{
+ if (startup_hook) free(startup_hook);
+ startup_hook = strdup(args);
+}
+
+void llua_set_shutdown_hook(const char *args)
+{
+ if (shutdown_hook) free(shutdown_hook);
+ shutdown_hook = strdup(args);
+}
+
+void llua_startup_hook(void)
+{
+ if (!lua_L || !startup_hook) return;
+ llua_do_call(startup_hook, 0);
+}
+
+void llua_shutdown_hook(void)
+{
+ if (!lua_L || !shutdown_hook) return;
+ llua_do_call(shutdown_hook, 0);
+}
+
#ifdef X11
void llua_draw_pre_hook(void)
{
llua_do_call(draw_post_hook, 0);
}
-void llua_shutdown_hook(void)
-{
- if (!lua_L || !shutdown_hook) return;
- llua_do_call(shutdown_hook, 0);
-}
-
void llua_set_draw_pre_hook(const char *args)
{
draw_pre_hook = strdup(args);
draw_post_hook = strdup(args);
}
-void llua_set_shutdown_hook(const char *args)
-{
- shutdown_hook = strdup(args);
-}
-
#ifdef LUA_EXTRAS
void llua_set_userdata(const char *key, const char *type, void *value)
{
lua_setglobal(lua_L, "conky_info");
}
+void print_lua(struct text_object *obj, char *p, int p_max_size)
+{
+ char *str = llua_getstring(obj->data.s);
+ if (str) {
+ snprintf(p, p_max_size, "%s", str);
+ free(str);
+ }
+}
+
+void print_lua_parse(struct text_object *obj, char *p, int p_max_size)
+{
+ char *str = llua_getstring(obj->data.s);
+ if (str) {
+ evaluate(str, p, p_max_size);
+ free(str);
+ }
+}
+
+void print_lua_bar(struct text_object *obj, char *p, int p_max_size)
+{
+ double per;
+ if (llua_getnumber(obj->data.s, &per)) {
+ new_bar(obj, p, p_max_size, (per/100.0 * 255));
+ }
+}
+
+#ifdef X11
+void print_lua_graph(struct text_object *obj, char *p, int p_max_size)
+{
+ double per;
+
+ if (!p_max_size)
+ return;
+
+ if (llua_getnumber(obj->data.s, &per)) {
+ new_graph(obj, p, p_max_size, per);
+ }
+}
+#endif /* X11 */
+
+void print_lua_gauge(struct text_object *obj, char *p, int p_max_size)
+{
+ double per;
+
+ if (!p_max_size)
+ return;
+
+ if (llua_getnumber(obj->data.s, &per)) {
+ new_gauge(obj, p, p_max_size, (per/100.0 * 255));
+ }
+}