-
Notifications
You must be signed in to change notification settings - Fork 19
/
Copy pathngui_info_prompt.c
150 lines (123 loc) · 4.94 KB
/
ngui_info_prompt.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
#include "ngui.h"
#include "ngui_info_prompt.h"
#include "ngui_textlabel.h"
#include "ngui_textbox.h"
#include "ngui_button.h"
#include <string.h>
#include <SDL.h>
#include "nunifont.h"
#include <stdbool.h>
typedef struct {
bool valid;
int x;
int y;
char p1[100];
char p2[100];
char p3[100];
int p1_opt;
int p2_opt;
int p3_opt;
void (*callback)(const char *,const char *,const char *);
int textbox1;
int textbox2;
int textbox3;
int textlabel1;
int textlabel2;
int textlabel3;
int button1;
} ngui_info_prompt_data;
int ngui_info_prompts_size = 0;
ngui_info_prompt_data ngui_info_prompts[50];
void ngui_receive_event_info_prompt(SDL_Event *event, ngui_info_prompt_data *d) {
// d->callback("127.0.0.1","user","password");
}
void ngui_render_info_prompt(ngui_info_prompt_data *d) {
// all rendering is performed by component items.
}
void ngui_info_prompt_button_call(char *caller) {
//TODO: this sucks
char *t1 = ngui_textbox_get_value(ngui_info_prompts[0].textbox1);
char *t2 = ngui_textbox_get_value(ngui_info_prompts[0].textbox2);
char *t3 = ngui_textbox_get_value(ngui_info_prompts[0].textbox3);
ngui_info_prompts[0].callback(t1,
t2,
t3
);
}
void ngui_info_prompt_textbox_call(char *caller) {
// trigger a redraw
ngui_redraw_required();
}
void ngui_delete_info_prompt(int id) {
ngui_info_prompts[id].valid = false;
ngui_delete_textlabel(ngui_info_prompts[id].textlabel1);
ngui_delete_textlabel(ngui_info_prompts[id].textlabel2);
ngui_delete_textlabel(ngui_info_prompts[id].textlabel3);
ngui_delete_textbox(ngui_info_prompts[id].textbox1);
ngui_delete_textbox(ngui_info_prompts[id].textbox2);
ngui_delete_textbox(ngui_info_prompts[id].textbox3);
ngui_delete_button(ngui_info_prompts[id].button1);
}
int ngui_add_info_prompt(int x,int y,
const char *p1 ,const char *p2 ,const char *p3,
int p1_opt,int p2_opt,int p3_opt,
void *callback) {
ngui_info_prompts[ngui_info_prompts_size].valid=true;
ngui_info_prompts[ngui_info_prompts_size].x = x;
ngui_info_prompts[ngui_info_prompts_size].y = y;
strcpy(ngui_info_prompts[ngui_info_prompts_size].p1,p1);
strcpy(ngui_info_prompts[ngui_info_prompts_size].p2,p2);
strcpy(ngui_info_prompts[ngui_info_prompts_size].p3,p3);
ngui_info_prompts[ngui_info_prompts_size].p1_opt = p1_opt;
ngui_info_prompts[ngui_info_prompts_size].p2_opt = p2_opt;
ngui_info_prompts[ngui_info_prompts_size].p3_opt = p3_opt;
ngui_info_prompts[ngui_info_prompts_size].callback = (void (*)(const char *,const char *,const char *)) callback;
/*
int l1 = ngui_add_textlabel((ngui_screen->w/2)-(strlen(p1)*8),
(ngui_screen->h/2)-(strlen(p1)*8),
p1);
int l2 = ngui_add_textlabel((ngui_screen->w/2)-(strlen(p2)*8),
(ngui_screen->h/2)-(strlen(p2)*8)+32,
p2);
int l3 = ngui_add_textlabel((ngui_screen->w/2)-(strlen(p3)*8),
(ngui_screen->h/2)-(strlen(p3)*8)+64,
p3);
int tb1 = ngui_add_textbox((ngui_screen->w/2)+20,
(ngui_screen->h/2)-(strlen(p1)*8),
"localhost",false,ngui_info_prompt_textbox_call
);
int tb2 = ngui_add_textbox((ngui_screen->w/2)+20,
(ngui_screen->h/2)-(strlen(p2)*8)+32,
"user",false,ngui_info_prompt_textbox_call
);
int tb3 = ngui_add_textbox((ngui_screen->w/2)+20,
(ngui_screen->h/2)-(strlen(p3)*8)+64,
"password",true,ngui_info_prompt_textbox_call
);
int b1 = ngui_add_button((ngui_screen->w/2)-(strlen(p3)*8),
(ngui_screen->h/2)-(strlen(p3)*8)+80,
"OK",
ngui_info_prompt_button_call);
ngui_info_prompts[ngui_info_prompts_size].textbox1 = tb1;
ngui_info_prompts[ngui_info_prompts_size].textbox2 = tb2;
ngui_info_prompts[ngui_info_prompts_size].textbox3 = tb3;
ngui_info_prompts[ngui_info_prompts_size].button1 = b1;
ngui_info_prompts[ngui_info_prompts_size].textlabel1 = l1;
ngui_info_prompts[ngui_info_prompts_size].textlabel2 = l2;
ngui_info_prompts[ngui_info_prompts_size].textlabel3 = l3;
*/
ngui_info_prompts_size++;
return ngui_info_prompts_size-1;
}
void ngui_receiveall_info_prompt(SDL_Event *event) {
for(int n=0;n<ngui_info_prompts_size;n++) {
ngui_info_prompt_data *d = &ngui_info_prompts[n];
ngui_receive_event_info_prompt(event,d);
}
}
void ngui_renderall_info_prompt() {
for(int n=0;n<ngui_info_prompts_size;n++) {
ngui_info_prompt_data *d = &ngui_info_prompts[n];
ngui_render_info_prompt(d);
}
}