aboutsummaryrefslogtreecommitdiff
path: root/entry/entry.c
diff options
context:
space:
mode:
Diffstat (limited to 'entry/entry.c')
-rw-r--r--entry/entry.c63
1 files changed, 48 insertions, 15 deletions
diff --git a/entry/entry.c b/entry/entry.c
index d5cf4c8..0339d4f 100644
--- a/entry/entry.c
+++ b/entry/entry.c
@@ -21,12 +21,9 @@
#include <stdio.h>
#include <string.h>
-/* TODO: make "display only" option, to force box to never accept focus */
-/* TODO: make focus option only accept regular and shifted chars, not Cmd, Alt, Ctrl */
-/* TODO: make entry_save include whole classname, including namespace prefix */
+/* TODO: get Ctrl-A working to select all */
/* TODO: make [size( message redraw object */
/* TODO: set message doesnt work with a loadbang */
-/* TODO: make message to add a single character to the existing text */
/* TODO: complete inlet draw/erase logic */
#ifdef _MSC_VER
@@ -40,7 +37,7 @@
#define BACKGROUNDCOLOR "grey70"
-#define DEBUG(x) x
+#define DEBUG(x)
typedef struct _entry
{
@@ -265,10 +262,6 @@ static void create_widget(t_entry *x, t_glist *glist)
canvas, x, x->x_receive_name->s_name););
sys_vgui("bind .x%x.c.s%x.text <KeyRelease> {+pd %s keyup %%N \\;} \n",
canvas, x, x->x_receive_name->s_name);
- DEBUG(post("bind .x%x.c.s%x.text <Leave> {focus [winfo parent .x%x.c.s%x]} \n",
- canvas, x, canvas, x););
- sys_vgui("bind .x%x.c.s%x.text <Leave> {focus [winfo parent .x%x.c.s%x]} \n",
- canvas, x, canvas, x);
DEBUG(post("pdtk_standardkeybindings .x%x.c.s%x.text \n", canvas, x););
sys_vgui("pdtk_standardkeybindings .x%x.c.s%x.text \n", canvas, x);
}
@@ -422,9 +415,9 @@ static void entry_vis(t_gobj *z, t_glist *glist, int vis)
}
}
-static void entry_add(t_entry* x, t_symbol *s, int argc, t_atom *argv)
+static void entry_append(t_entry* x, t_symbol *s, int argc, t_atom *argv)
{
- DEBUG(post("entry_add"););
+ DEBUG(post("entry_append"););
int i;
t_symbol *tmp_symbol = s; /* <-- this gets rid of the unused variable warning */
t_float tmp_float;
@@ -454,6 +447,41 @@ static void entry_add(t_entry* x, t_symbol *s, int argc, t_atom *argv)
sys_vgui(".x%x.c.s%x.text yview end-2char \n", x->x_glist, x );
}
+static void entry_key(t_entry* x, t_symbol *s, int argc, t_atom *argv)
+{
+ DEBUG(post("entry_key"););
+ t_symbol *tmp_symbol = s; /* <-- this gets rid of the unused variable warning */
+ t_int tmp_int;
+
+ tmp_symbol = atom_getsymbolarg(0, argc, argv);
+ if(tmp_symbol == &s_)
+ {
+ tmp_int = (t_int) atom_getfloatarg(0, argc , argv);
+ if(tmp_int < 10)
+ {
+ DEBUG(post(".x%x.c.s%x.text insert end %d\n", x->x_glist, x, tmp_int););
+ sys_vgui(".x%x.c.s%x.text insert end %d\n", x->x_glist, x, tmp_int);
+ }
+ else if(tmp_int == 10)
+ {
+ DEBUG(post(".x%x.c.s%x.text insert end {\n}\n", x->x_glist, x););
+ sys_vgui(".x%x.c.s%x.text insert end {\n}\n", x->x_glist, x);
+ }
+ else
+ {
+ DEBUG(post(".x%x.c.s%x.text insert end [format \"%c\" %d]\n", x->x_glist, x, tmp_int););
+ sys_vgui(".x%x.c.s%x.text insert end [format \"%c\" %d]\n", x->x_glist, x, tmp_int);
+ }
+ }
+ else
+ {
+ DEBUG(post(".x%x.c.s%x.text insert end %s\n", x->x_glist, x, tmp_symbol->s_name ););
+ sys_vgui(".x%x.c.s%x.text insert end %s\n", x->x_glist, x, tmp_symbol->s_name );
+ }
+ DEBUG(post(".x%x.c.s%x.text yview end-2char \n", x->x_glist, x ););
+ sys_vgui(".x%x.c.s%x.text yview end-2char \n", x->x_glist, x );
+}
+
/* Clear the contents of the text widget */
static void entry_clear(t_entry* x)
{
@@ -468,7 +496,7 @@ static void entry_set(t_entry* x, t_symbol *s, int argc, t_atom *argv)
int i;
entry_clear(x);
- entry_add(x, s, argc, argv);
+ entry_append(x, s, argc, argv);
}
/* Output the symbol */
@@ -723,8 +751,13 @@ void entry_setup(void) {
A_GIMME,
0);
- class_addmethod(entry_class, (t_method)entry_add,
- gensym("add"),
+ class_addmethod(entry_class, (t_method)entry_append,
+ gensym("append"),
+ A_GIMME,
+ 0);
+
+ class_addmethod(entry_class, (t_method)entry_key,
+ gensym("key"),
A_GIMME,
0);
@@ -755,7 +788,7 @@ void entry_setup(void) {
up_symbol = gensym("up");
down_symbol = gensym("down");
- post("Text v0.1 Ben Bogart.\nCVS: $Revision: 1.21 $ $Date: 2007-10-29 17:44:23 $");
+ post("Text v0.1 Ben Bogart.\nCVS: $Revision: 1.22 $ $Date: 2007-10-30 03:59:52 $");
}