Changeset 2367 for neercs


Ignore:
Timestamp:
Jun 13, 2008, 1:51:07 PM (12 years ago)
Author:
Jean-Yves Lamoureux
Message:
  • Added a status bar and an help screen
Location:
neercs/trunk/src
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • neercs/trunk/src/effects.c

    r2362 r2367  
    1414 */
    1515
     16#include <stdio.h>
     17#include <stdlib.h>
     18#include <string.h>
    1619#include <cucul.h>
    1720#include <caca.h>
    18 #include <stdlib.h>
     21#include <config.h>
     22#include <time.h>
    1923
    2024#include "neercs.h"
     
    7680
    7781}
     82
     83/* FIXME, make this stuff more configurable */
     84void draw_status(cucul_canvas_t *cv, struct screen_list *screen_list, int pty)
     85{
     86    int x = 0, y = cucul_get_canvas_height(cv) - 1;
     87
     88
     89        cucul_set_color_ansi(cv, CUCUL_BLUE, CUCUL_BLUE);
     90        cucul_fill_box(cv,
     91                       x, y,
     92                       cucul_get_canvas_width(cv), 1, '#');
     93
     94/* Hour */
     95    {
     96        time_t now = time ((time_t *) 0);
     97        struct tm *t = localtime(&now);
     98        char hour[256];
     99        sprintf(hour, "%02d:%02d", t->tm_hour, t->tm_min);
     100
     101        cucul_set_color_ansi(cv, CUCUL_LIGHTBLUE, CUCUL_BLUE);
     102        cucul_printf(cv, x, y,
     103                     "[");
     104
     105        cucul_set_color_ansi(cv, CUCUL_DEFAULT, CUCUL_BLUE);
     106        cucul_printf(cv, x+1, y,
     107                     hour);
     108        cucul_set_color_ansi(cv, CUCUL_LIGHTBLUE, CUCUL_BLUE);
     109        cucul_printf(cv, x + strlen(hour) + 1, y,
     110                     "]");
     111        x += 7;
     112
     113    }
     114
     115/* Window */
     116    {
     117        char text[256];
     118        sprintf(text, "%d/%d", pty+1, screen_list->count);
     119        x++;
     120        cucul_set_color_ansi(cv, CUCUL_LIGHTBLUE, CUCUL_BLUE);
     121        cucul_printf(cv, x, y, "Window:");
     122        cucul_set_color_ansi(cv, CUCUL_DEFAULT, CUCUL_BLUE);
     123        cucul_printf(cv, x+8, y, text);
     124        x+= 8+strlen(text);
     125    }
     126
     127/* Window Manager */
     128    {
     129        char text[256];
     130
     131        switch(screen_list->wm_type)
     132        {
     133        case WM_CARD:
     134            strcpy(text, "card");
     135            break;
     136        case WM_HSPLIT:
     137            strcpy(text, "hsplit");
     138            break;
     139        case WM_VSPLIT:
     140            strcpy(text, "vsplit");
     141            break;
     142        case WM_FULL:
     143        default:
     144            strcpy(text, "full");
     145            break;
     146
     147        }
     148
     149        x++;
     150        cucul_set_color_ansi(cv, CUCUL_LIGHTBLUE, CUCUL_BLUE);
     151        cucul_printf(cv, x, y, "WM:");
     152        cucul_set_color_ansi(cv, CUCUL_DEFAULT, CUCUL_BLUE);
     153        cucul_printf(cv, x+4, y, text);
     154        x+= 4+strlen(text);
     155    }
     156
     157/* Help (must be the last one )*/
     158    {
     159        char text[256];
     160        sprintf(text, "Help: ctrl-a-h");
     161        x = cucul_get_canvas_width(cv) - strlen(text);
     162
     163        cucul_set_color_ansi(cv, CUCUL_DEFAULT, CUCUL_BLUE);
     164        cucul_printf(cv, x, y, text);
     165    }
     166
     167
     168}
     169
     170
     171void draw_help(cucul_canvas_t *cv, struct screen_list *screen_list, int pty)
     172{
     173    int w = 60, h = 20;
     174    int x = (cucul_get_canvas_width(cv) - w) / 2;
     175    int y = (cucul_get_canvas_height(cv) - h) / 2;
     176
     177
     178    cucul_set_color_ansi(cv, CUCUL_BLUE, CUCUL_BLUE);
     179    cucul_fill_box(cv,
     180                   x, y,
     181                   w, h, '#');
     182    cucul_set_color_ansi(cv, CUCUL_DEFAULT, CUCUL_BLUE);
     183    cucul_draw_cp437_box(cv,
     184                         x, y,
     185                         w, h);
     186
     187    x+=2;
     188    y++;
     189    cucul_printf(cv, (cucul_get_canvas_width(cv) - strlen(PACKAGE_STRING)) / 2, y-1, PACKAGE_STRING);
     190    cucul_printf(cv, x, y++, "Copyright (c) 2006-2008 ");
     191    cucul_printf(cv, x, y++, "              Sam Hocevar <sam@zoy.org>");
     192    cucul_printf(cv, x, y++, "              Jean-Yves Lamoureux <jylam@lnxscene.org>");
     193    cucul_printf(cv, x, y++, "");
     194    cucul_printf(cv, x, y++, "");
     195    cucul_printf(cv, x, y++, "All shortcuts are in format 'ctrl-a-X' where X is :");
     196
     197    cucul_printf(cv, x, y++, "c:\t Create a new window");
     198    cucul_printf(cv, x, y++, "n:\t Next window");
     199    cucul_printf(cv, x, y++, "p:\t Previous window");
     200    cucul_printf(cv, x, y++, "w:\t Switch window manager");
     201    cucul_printf(cv, x, y++, "c:\t Create new window");
     202    cucul_printf(cv, x, y++, "m:\t Thumbnails");
     203    cucul_printf(cv, x, y++, "h:\t This help");
     204}
  • neercs/trunk/src/main.c

    r2363 r2367  
    4545    char *default_shell = NULL;
    4646    int pty = 0, prevpty = 0, i, w, h, nt, args = 0;
    47     int eof = 0, refresh = 1, command = 0, mini = 1;
     47    int eof = 0, refresh = 1, command = 0;
     48
     49    /* Add-ons*/
     50    int mini = 1;
     51    int status = 1;
     52    int help = 0;
     53
    4854
    4955    nt = argc - 1;
     
    8389    screen_list->count = 0;
    8490    screen_list->width  = cucul_get_canvas_width(cv);
    85     screen_list->height = cucul_get_canvas_height(cv) - (mini*6);
     91    screen_list->height = cucul_get_canvas_height(cv) - ((mini*6) + (status));
    8692    screen_list->wm_type = WM_CARD;
    8793
     
    230236                    refresh = 1;
    231237                    break;
     238                case 'c':
    232239                case 0x03: //CACA_KEY_CTRL_C:
    233240                    prevpty = pty;
     
    240247                                            screen_list->wm_type=0:
    241248                                            screen_list->wm_type+1);
     249                    refresh = 1;
     250                    break;
     251                case 'h':
     252                case 0x08: //CACA_KEY_CTRL_H:
     253                    help = !help;
    242254                    refresh = 1;
    243255                    break;
     
    327339                draw_thumbnails(cv, screen_list, pty);
    328340            }
     341            if(status)
     342            {
     343                draw_status(cv, screen_list, pty);
     344            }
     345            if(help)
     346            {
     347                draw_help(cv, screen_list, pty);
     348            }
     349
    329350
    330351            caca_refresh_display(dp);
  • neercs/trunk/src/neercs.h

    r2362 r2367  
    5858
    5959long int import_term(struct screen *sc, void const *data, unsigned int size);
    60 void draw_thumbnails(cucul_canvas_t *cv, struct screen_list *screen_list, int pty);
    61 
    6260int set_tty_size(int fd, unsigned int w, unsigned int h);
    6361
     
    7775void update_windows_props_vsplit(cucul_canvas_t *cv, struct screen_list *screen_list, int pty);
    7876
     77/* Effects and addons */
     78void draw_thumbnails(cucul_canvas_t *cv, struct screen_list *screen_list, int pty);
     79void draw_status(cucul_canvas_t *cv, struct screen_list *screen_list, int pty);
     80void draw_help(cucul_canvas_t *cv, struct screen_list *screen_list, int pty);
     81
     82
     83
    7984
    8085#if 0
  • neercs/trunk/src/wm.c

    r2363 r2367  
    2727
    2828    if(w==s->w && h==s->h) return;
     29    if(w == 0 || h == 0) return;
    2930
    3031    s->w = w;
     
    4546    switch(screen_list->wm_type)
    4647    {
    47     case WM_FULL:
    48         update_windows_props_full(cv, screen_list, pty);
     48    case WM_CARD:
     49        update_windows_props_cards(cv, screen_list, pty);
    4950        break;
    5051    case WM_HSPLIT:
     
    5455        update_windows_props_vsplit(cv, screen_list, pty);
    5556        break;
    56     case WM_CARD:
     57    case WM_FULL:
    5758    default:
    58         update_windows_props_cards(cv, screen_list, pty);
     59        update_windows_props_full(cv, screen_list, pty);
    5960        break;
    6061    }
     
    129130        x += 3;
    130131        y--;
    131 
    132132    }
    133133}
Note: See TracChangeset for help on using the changeset viewer.