static gboolean draw_cb (GtkWidget *widget, cairo_t *cr) { gint width, height; width = gtk_widget_get_allocated_width (widget); height = gtk_widget_get_allocated_height (widget); cairo_rectangle (cr, 0, 0, width, height); cairo_set_source_rgb (cr, 0, 0, 0); cairo_fill (cr); draw_horizontal_scrollbar (widget, cr, 10, 10, width - 20, 10, 30, GTK_STATE_FLAG_NORMAL); draw_horizontal_scrollbar (widget, cr, 10, 30, width - 20, 10, 40, GTK_STATE_FLAG_PRELIGHT); draw_horizontal_scrollbar (widget, cr, 10, 50, width - 20, 10, 50, GTK_STATE_FLAG_ACTIVE|GTK_STATE_FLAG_PRELIGHT); draw_text (widget, cr, 10, 70, width - 20, 20, "Not selected", GTK_STATE_FLAG_NORMAL); draw_text (widget, cr, 10, 100, width - 20, 20, "Selected", GTK_STATE_FLAG_SELECTED); draw_check (widget, cr, 10, 130, GTK_STATE_FLAG_NORMAL); draw_check (widget, cr, 40, 130, GTK_STATE_FLAG_CHECKED); draw_radio (widget, cr, 70, 130, GTK_STATE_FLAG_NORMAL); draw_radio (widget, cr, 100, 130, GTK_STATE_FLAG_CHECKED); return FALSE; }
static void on_touch(int x, int y, int touch){ char * symbol; struct keymap * map=NULL; static struct keymap * prevmap=NULL; static char * prevsym = NULL; if(touch){ printf("INFO: Pointer touched at %d:%d\n",x,y); symbol=getkbdsym(x,y,&map); if( prevsym!=symbol && prevmap!=NULL){ gr_blit(keyboards, prevmap->x1,prevmap->y1,prevmap->x2 - prevmap->x1, prevmap->y2 - prevmap->y1,prevmap->x1,prevmap->y1); draw_check(); gr_flip(); prevmap=NULL; } }else{ printf("INFO: Pointer released at %d:%d\n",x,y); prevsym=symbol=NULL; if(prevmap){ gr_blit(keyboards, prevmap->x1,prevmap->y1,prevmap->x2 - prevmap->x1, prevmap->y2 - prevmap->y1 ,prevmap->x1,prevmap->y1); draw_check(); gr_flip(); printf("INFO: blitting %d,%d %d,%d \n", prevmap->x1,prevmap->y1,prevmap->x2 , prevmap->y2 ); prevmap = NULL; } } if(symbol != NULL && touch && prevsym!=symbol){ vib_vibrate(20); gr_color(255,255,255,128); draw_check(); gr_fill(map->x1,map->y1,map->x2, map->y2); gr_flip(); prevsym=symbol; prevmap=map; } printf("INFO: you touched %s\n",symbol); }
static void on_click(int x, int y) { char * sym; static char * prevsym = NULL; //do something on click printf("INFO: Pointer click recorded at %d:%d\n",x,y); sym=getkbdsym(x,y,NULL); if (sym!=NULL){ if (strncmp(sym, "$yes", sizeof("$yes"))==0){ dlg_exit=1; } else if (strncmp(sym, "$no", sizeof("$no"))==0){ dlg_exit=2; } else { checked=checked?0:1; draw_check(); gr_flip(); } } prevsym=sym; }
static void draw_func (GtkDrawingArea *da, cairo_t *cr, int width, int height, gpointer data) { GtkWidget *widget = GTK_WIDGET (da); gint panewidth; gint x, y; panewidth = width / 2; cairo_rectangle (cr, 0, 0, width, height); cairo_set_source_rgb (cr, 0.9, 0.9, 0.9); cairo_fill (cr); x = y = 10; draw_horizontal_scrollbar (widget, cr, x, y, panewidth - 20, 30, GTK_STATE_FLAG_NORMAL, &height); y += height + 8; draw_horizontal_scrollbar (widget, cr, x, y, panewidth - 20, 40, GTK_STATE_FLAG_PRELIGHT, &height); y += height + 8; draw_horizontal_scrollbar (widget, cr, x, y, panewidth - 20, 50, GTK_STATE_FLAG_ACTIVE|GTK_STATE_FLAG_PRELIGHT, &height); y += height + 8; draw_text (widget, cr, x, y, panewidth - 20, 20, "Not selected", GTK_STATE_FLAG_NORMAL); y += 20 + 10; draw_text (widget, cr, x, y, panewidth - 20, 20, "Selected", GTK_STATE_FLAG_SELECTED); x = 10; y += 20 + 10; draw_check (widget, cr, x, y, GTK_STATE_FLAG_NORMAL, &width, &height); x += width + 10; draw_check (widget, cr, x, y, GTK_STATE_FLAG_CHECKED, &width, &height); x += width + 10; draw_radio (widget, cr, x, y, GTK_STATE_FLAG_NORMAL, &width, &height); x += width + 10; draw_radio (widget, cr, x, y, GTK_STATE_FLAG_CHECKED, &width, &height); x = 10; y += height + 10; draw_progress (widget, cr, x, y, panewidth - 20, 50, &height); y += height + 10; draw_scale (widget, cr, x, y, panewidth - 20, 75, &height); y += height + 20; draw_notebook (widget, cr, x, y, panewidth - 20, 160); /* Second column */ x += panewidth; y = 10; draw_menu (widget, cr, x, y, panewidth - 20, &height); y += height + 10; draw_menubar (widget, cr, x, y, panewidth - 20, &height); y += height + 20; draw_spinbutton (widget, cr, x, y, panewidth - 20, &height); y += height + 30; draw_combobox (widget, cr, x, y, panewidth - 20, FALSE, &height); y += height + 10; draw_combobox (widget, cr, 10 + panewidth, y, panewidth - 20, TRUE, &height); }
static void draw_full_screen(){ gr_blit(keyboards, 0,0,480,800,0,0); draw_check(); gr_flip(); printf("INFO: drawing keyboard %s\n", keyboard_file); }