- Timestamp:
- Jun 15, 2008, 5:13:41 PM (13 years ago)
- Location:
- neercs/trunk/src
- Files:
-
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
neercs/trunk/src/effects.c
r2404 r2421 25 25 26 26 27 void draw_thumbnails(cucul_canvas_t *cv, struct screen_list *screen_list , int pty)27 void draw_thumbnails(cucul_canvas_t *cv, struct screen_list *screen_list) 28 28 { 29 29 char const * const *fonts; … … 66 66 cucul_set_color_ansi(cv, CUCUL_WHITE, CUCUL_BLUE); 67 67 68 if( pty == i)68 if(screen_list->pty == i) 69 69 cucul_draw_cp437_box(cv,20 * i, 70 70 cucul_get_canvas_height(cv) - 6, 19, 6); … … 82 82 83 83 /* FIXME, make this stuff more configurable */ 84 void draw_status(cucul_canvas_t *cv, struct screen_list *screen_list , int pty)84 void draw_status(cucul_canvas_t *cv, struct screen_list *screen_list) 85 85 { 86 86 int x = 0, y = cucul_get_canvas_height(cv) - 1; … … 116 116 { 117 117 char text[256]; 118 sprintf(text, "%d/%d", pty+1, screen_list->count);118 sprintf(text, "%d/%d", screen_list->pty+1, screen_list->count); 119 119 x++; 120 120 cucul_set_color_ansi(cv, CUCUL_LIGHTBLUE, CUCUL_BLUE); … … 169 169 170 170 171 void draw_help(cucul_canvas_t *cv, struct screen_list *screen_list , int pty)171 void draw_help(cucul_canvas_t *cv, struct screen_list *screen_list) 172 172 { 173 173 int w = 65, h = 20; … … 197 197 cucul_printf(cv, x, y++, ""); 198 198 cucul_printf(cv, x, y++, "All shortcuts are in format 'ctrl-a-X' where X is :"); 199 200 199 cucul_printf(cv, x, y++, "n:\t Next window"); 201 200 cucul_printf(cv, x, y++, "p:\t Previous window"); -
neercs/trunk/src/main.c
r2402 r2421 43 43 struct screen_list *screen_list = NULL; 44 44 char *default_shell = NULL; 45 int pty = 0, prevpty = 0,i, w, h, nt, args = 0;45 int i, w, h, nt, args = 0; 46 46 int eof = 0, refresh = 1, command = 0; 47 47 … … 97 97 screen_list->wm_type = WM_VSPLIT; 98 98 screen_list->in_bell = 0; 99 screen_list->pty = screen_list->prevpty = 0; 100 99 101 100 102 for(i = 0; i < nt; i++) … … 118 120 119 121 /* Windows are in a temporary state, resize them to the right dimensions */ 120 update_windows_props(cv, screen_list , pty);122 update_windows_props(cv, screen_list); 121 123 caca_refresh_display(dp); 122 124 … … 127 129 int ret; 128 130 129 refresh |= update_screens_contents(screen_list, 130 &pty, &prevpty); 131 refresh |= update_screens_contents(screen_list); 131 132 132 133 /* No more screens, exit */ … … 149 150 { 150 151 case 0x01: //CACA_KEY_CTRL_A: 151 pty ^=prevpty;152 prevpty ^=pty;153 pty ^=prevpty;152 screen_list->pty ^= screen_list->prevpty; 153 screen_list->prevpty ^= screen_list->pty; 154 screen_list->pty ^= screen_list->prevpty; 154 155 refresh = 1; 155 156 break; … … 163 164 case '\0': 164 165 case 0x0e: //CACA_KEY_CTRL_N: 165 prevpty =pty;166 pty = (pty + 1) % screen_list->count;166 screen_list->prevpty = screen_list->pty; 167 screen_list->pty = (screen_list->pty + 1) % screen_list->count; 167 168 refresh = 1; 168 169 break; 169 170 case 'p': 170 171 case 0x10: //CACA_KEY_CTRL_P: 171 prevpty =pty;172 pty = (pty + screen_list->count - 1) % screen_list->count;172 screen_list->prevpty = screen_list->pty; 173 screen_list->pty = (screen_list->pty + screen_list->count - 1) % screen_list->count; 173 174 refresh = 1; 174 175 break; 175 176 case 'c': 176 177 case 0x03: //CACA_KEY_CTRL_C: 177 prevpty =pty;178 pty =178 screen_list->prevpty = screen_list->pty; 179 screen_list->pty = 179 180 add_screen(screen_list, create_screen(w, h, default_shell)); 180 181 refresh = 1; … … 188 189 break; 189 190 case 0x0b: //CACA_KEY_CTRL_K: 190 remove_screen(screen_list, pty, 1);191 pty =prevpty;192 prevpty = 0;191 remove_screen(screen_list, screen_list->pty, 1); 192 screen_list->pty = screen_list->prevpty; 193 screen_list->prevpty = 0; 193 194 refresh = 1; 194 195 break; … … 207 208 command = 1; break; 208 209 case CACA_KEY_UP: 209 write(screen_list->screen[ pty]->fd, "\x1b[A", 3); break;210 write(screen_list->screen[screen_list->pty]->fd, "\x1b[A", 3); break; 210 211 case CACA_KEY_DOWN: 211 write(screen_list->screen[ pty]->fd, "\x1b[B", 3); break;212 write(screen_list->screen[screen_list->pty]->fd, "\x1b[B", 3); break; 212 213 case CACA_KEY_RIGHT: 213 write(screen_list->screen[ pty]->fd, "\x1b[C", 3); break;214 write(screen_list->screen[screen_list->pty]->fd, "\x1b[C", 3); break; 214 215 case CACA_KEY_LEFT: 215 write(screen_list->screen[ pty]->fd, "\x1b[D", 3); break;216 write(screen_list->screen[screen_list->pty]->fd, "\x1b[D", 3); break; 216 217 case CACA_KEY_ESCAPE: 217 218 if(screen_list->help) screen_list->help = 0; 218 219 default: 219 write(screen_list->screen[ pty]->fd, &c, 1); break;220 write(screen_list->screen[screen_list->pty]->fd, &c, 1); break; 220 221 } 221 222 } … … 223 224 else if(ret && (caca_get_event_type(&ev) & CACA_EVENT_RESIZE)) 224 225 { 225 update_windows_props(cv, screen_list, pty); 226 226 update_windows_props(cv, screen_list); 227 227 cucul_clear_canvas(cv); 228 228 refresh = 1; … … 237 237 { 238 238 refresh = 0; 239 refresh_screens(cv, dp, screen_list , pty);239 refresh_screens(cv, dp, screen_list); 240 240 } 241 241 -
neercs/trunk/src/neercs.h
r2403 r2421 16 16 #include <stdint.h> 17 17 #include <cucul.h> 18 19 20 #define CURRENTSCREEN screen_list->screen[screen_list->pty] 21 18 22 19 23 enum wm_types … … 45 49 long int total; 46 50 int bell; 51 unsigned int scroll, s1, s2; 47 52 int pid; 53 54 int kill_time; 48 55 49 56 int x, y; … … 60 67 int help; 61 68 69 70 int pty, prevpty; 62 71 int count; 63 72 int width, height; … … 73 82 void refresh_screens(cucul_canvas_t *cv, 74 83 caca_display_t *dp, 75 struct screen_list *screen_list, 76 int pty); 77 int update_screens_contents(struct screen_list* screen_list, 78 int *pty, int *prevpty); 84 struct screen_list *screen_list); 85 int update_screens_contents(struct screen_list* screen_list); 79 86 80 87 /* Screens management */ … … 86 93 87 94 /* Window managers */ 88 void update_windows_props(cucul_canvas_t *cv, struct screen_list *screen_list , int pty);89 void update_windows_props_cards(cucul_canvas_t *cv, struct screen_list *screen_list , int pty);90 void update_windows_props_hsplit(cucul_canvas_t *cv, struct screen_list *screen_list , int pty);91 void update_windows_props_full(cucul_canvas_t *cv, struct screen_list *screen_list , int pty);92 void update_windows_props_vsplit(cucul_canvas_t *cv, struct screen_list *screen_list , int pty);95 void update_windows_props(cucul_canvas_t *cv, struct screen_list *screen_list); 96 void update_windows_props_cards(cucul_canvas_t *cv, struct screen_list *screen_list); 97 void update_windows_props_hsplit(cucul_canvas_t *cv, struct screen_list *screen_list); 98 void update_windows_props_full(cucul_canvas_t *cv, struct screen_list *screen_list); 99 void update_windows_props_vsplit(cucul_canvas_t *cv, struct screen_list *screen_list); 93 100 94 101 /* Effects and addons */ 95 void draw_thumbnails(cucul_canvas_t *cv, struct screen_list *screen_list , int pty);96 void draw_status(cucul_canvas_t *cv, struct screen_list *screen_list , int pty);97 void draw_help(cucul_canvas_t *cv, struct screen_list *screen_list , int pty);102 void draw_thumbnails(cucul_canvas_t *cv, struct screen_list *screen_list); 103 void draw_status(cucul_canvas_t *cv, struct screen_list *screen_list); 104 void draw_help(cucul_canvas_t *cv, struct screen_list *screen_list); 98 105 99 106 -
neercs/trunk/src/screens.c
r2403 r2421 45 45 s->bell = 0; 46 46 s->visible = 1; 47 s->scroll = 0; 47 48 s->fd = create_pty(command, w, h, &s->pid); 48 49 … … 83 84 sizeof(sizeof(struct screen*)) 84 85 * (list->count+1)); 86 if(!list->screen) 87 fprintf(stderr, "Can't allocate memory at %s:%d\n", __FUNCTION__, __LINE__); 85 88 list->screen[list->count] = s; 86 89 list->count++; … … 124 127 sizeof(sizeof(struct screen*)) 125 128 * (list->count)); 129 if(!list->screen) 130 fprintf(stderr, "Can't allocate memory at %s:%d\n", __FUNCTION__, __LINE__); 126 131 127 132 list->count--; … … 133 138 void refresh_screens(cucul_canvas_t *cv, 134 139 caca_display_t *dp, 135 struct screen_list *screen_list, 136 int pty) 140 struct screen_list *screen_list) 137 141 { 138 142 int i; … … 141 145 screen_list->height = cucul_get_canvas_height(cv) - (screen_list->mini*6); 142 146 143 update_windows_props(cv, screen_list , pty);144 145 if(screen_list->screen[ pty]->title)146 caca_set_display_title(dp, screen_list->screen[ pty]->title);147 update_windows_props(cv, screen_list); 148 149 if(screen_list->screen[screen_list->pty]->title) 150 caca_set_display_title(dp, screen_list->screen[screen_list->pty]->title); 147 151 else 148 152 caca_set_display_title(dp, PACKAGE_STRING); … … 154 158 for(i = screen_list->count - 1; i >=0; i--) 155 159 { 156 if(i!= pty && screen_list->screen[i]->visible)160 if(i!=screen_list->pty && screen_list->screen[i]->visible) 157 161 { 158 162 cucul_blit(cv, … … 176 180 177 181 cucul_blit(cv, 178 screen_list->screen[ pty]->x,179 screen_list->screen[ pty]->y,180 screen_list->screen[ pty]->cv, NULL);181 182 if(screen_list->screen[ pty]->bell)182 screen_list->screen[screen_list->pty]->x, 183 screen_list->screen[screen_list->pty]->y, 184 screen_list->screen[screen_list->pty]->cv, NULL); 185 186 if(screen_list->screen[screen_list->pty]->bell) 183 187 { 184 188 cucul_set_color_ansi(cv, CUCUL_RED, CUCUL_BLACK); 185 screen_list->screen[ pty]->bell = 0;189 screen_list->screen[screen_list->pty]->bell = 0; 186 190 screen_list->in_bell--; 187 191 } … … 192 196 193 197 cucul_draw_cp437_box(cv, 194 screen_list->screen[ pty]->x - 1,195 screen_list->screen[ pty]->y - 1,196 screen_list->screen[ pty]->w + 2,197 screen_list->screen[ pty]->h + 2);198 199 if(screen_list->screen[ pty]->title)198 screen_list->screen[screen_list->pty]->x - 1, 199 screen_list->screen[screen_list->pty]->y - 1, 200 screen_list->screen[screen_list->pty]->w + 2, 201 screen_list->screen[screen_list->pty]->h + 2); 202 203 if(screen_list->screen[screen_list->pty]->title) 200 204 { 201 205 cucul_printf(cv, 202 screen_list->screen[ pty]->x,203 screen_list->screen[ pty]->y - 1,206 screen_list->screen[screen_list->pty]->x, 207 screen_list->screen[screen_list->pty]->y - 1, 204 208 " %.*s ", 205 screen_list->screen[ pty]->w - 3,206 screen_list->screen[ pty]->title);209 screen_list->screen[screen_list->pty]->w - 3, 210 screen_list->screen[screen_list->pty]->title); 207 211 } 208 212 209 213 cucul_gotoxy(cv, 210 screen_list->screen[ pty]->x +211 cucul_get_cursor_x(screen_list->screen[ pty]->cv),212 screen_list->screen[ pty]->y +213 cucul_get_cursor_y(screen_list->screen[ pty]->cv));214 screen_list->screen[screen_list->pty]->x + 215 cucul_get_cursor_x(screen_list->screen[screen_list->pty]->cv), 216 screen_list->screen[screen_list->pty]->y + 217 cucul_get_cursor_y(screen_list->screen[screen_list->pty]->cv)); 214 218 215 219 216 220 if(screen_list->mini) 217 221 { 218 draw_thumbnails(cv, screen_list , pty);222 draw_thumbnails(cv, screen_list); 219 223 } 220 224 if(screen_list->status) 221 225 { 222 draw_status(cv, screen_list , pty);226 draw_status(cv, screen_list); 223 227 } 224 228 if(screen_list->help) 225 229 { 226 draw_help(cv, screen_list , pty);230 draw_help(cv, screen_list); 227 231 } 228 232 … … 231 235 232 236 233 int update_screens_contents(struct screen_list* screen_list, 234 int *pty, int *prevpty) 237 int update_screens_contents(struct screen_list* screen_list) 235 238 { 236 239 int i, refresh = 0; … … 285 288 realloc(screen_list->screen[i]->buf, 286 289 screen_list->screen[i]->total + 1024); 290 if(!screen_list->screen[i]->buf) 291 fprintf(stderr, "Can't allocate memory at %s:%d\n", __FUNCTION__, __LINE__); 292 287 293 nr = read(screen_list->screen[i]->fd, 288 294 screen_list->screen[i]->buf + … … 300 306 destroy_screen(screen_list->screen[i]); 301 307 remove_screen(screen_list, i, 0); 302 if(i < (*prevpty)) (*prevpty)--;303 if(i == *pty)308 if(i < screen_list->prevpty) screen_list->prevpty--; 309 if(i == screen_list->pty) 304 310 { 305 *pty = *prevpty;306 *prevpty = 0;311 screen_list->pty = screen_list->prevpty; 312 screen_list->prevpty = 0; 307 313 } 308 if(i < ( *pty)) (*pty)--;314 if(i < (screen_list->pty)) (screen_list->pty)--; 309 315 refresh = 1; 310 316 } -
neercs/trunk/src/term.c
r2402 r2421 109 109 unsigned int param, inter, final; 110 110 111 111 112 /* Compute offsets to parameter bytes, intermediate bytes and 112 113 * to the final byte. Only the final byte is mandatory, there … … 165 166 * ECMA-48 5.4: Control sequences, and the code definitions are 166 167 * given in ECMA-48 8.3: Definition of control functions. */ 168 167 169 switch(buffer[i + final]) 168 170 { -
neercs/trunk/src/wm.c
r2403 r2421 42 42 } 43 43 44 void update_windows_props(cucul_canvas_t *cv, struct screen_list *screen_list , int pty)44 void update_windows_props(cucul_canvas_t *cv, struct screen_list *screen_list) 45 45 { 46 if(!screen_list->count) return; 47 46 48 switch(screen_list->wm_type) 47 49 { 48 50 case WM_CARD: 49 update_windows_props_cards(cv, screen_list , pty);51 update_windows_props_cards(cv, screen_list); 50 52 break; 51 53 case WM_HSPLIT: 52 update_windows_props_hsplit(cv, screen_list , pty);54 update_windows_props_hsplit(cv, screen_list); 53 55 break; 54 56 case WM_VSPLIT: 55 update_windows_props_vsplit(cv, screen_list , pty);57 update_windows_props_vsplit(cv, screen_list); 56 58 break; 57 59 case WM_FULL: 58 60 default: 59 update_windows_props_full(cv, screen_list , pty);61 update_windows_props_full(cv, screen_list); 60 62 break; 61 63 } 62 64 } 63 65 64 void update_windows_props_hsplit(cucul_canvas_t *cv, struct screen_list *screen_list , int pty)66 void update_windows_props_hsplit(cucul_canvas_t *cv, struct screen_list *screen_list) 65 67 { 66 68 int i; … … 85 87 } 86 88 87 void update_windows_props_vsplit(cucul_canvas_t *cv, struct screen_list *screen_list , int pty)89 void update_windows_props_vsplit(cucul_canvas_t *cv, struct screen_list *screen_list) 88 90 { 89 91 int i; … … 109 111 110 112 111 void update_windows_props_full(cucul_canvas_t *cv, struct screen_list *screen_list , int pty)113 void update_windows_props_full(cucul_canvas_t *cv, struct screen_list *screen_list) 112 114 { 113 115 int i; … … 124 126 w, h); 125 127 } 126 screen_list->screen[ pty]->visible = 1;128 screen_list->screen[screen_list->pty]->visible = 1; 127 129 } 128 130 129 131 130 void update_windows_props_cards(cucul_canvas_t *cv, struct screen_list *screen_list , int pty)132 void update_windows_props_cards(cucul_canvas_t *cv, struct screen_list *screen_list) 131 133 { 132 134 int i;
Note: See TracChangeset
for help on using the changeset viewer.