/*----------------------------------------------------------------------------*/ #include /*----------------------------------------------------------------------------*/ #define MY1APP_FULL "org.my1.gtktest" #define MY1APP_NAME "GTK Test" /*----------------------------------------------------------------------------*/ GtkCssProvider *ccss; /*----------------------------------------------------------------------------*/ gboolean on_show_resize(GtkWidget *widget, GtkAllocation *allocation, gpointer user_data) { char test[] = "GtkLabel { background-color: #AAAAAA; font-size: %.0fpx; }"; char buff[128]; snprintf(buff,128,test,((float)allocation->height*12.0/40.0)); printf("Resize: %d x %d => %s\n",allocation->width,allocation->height,buff); gtk_css_provider_load_from_data(ccss,buff, -1, NULL); /** my1image_view_t* view = (my1image_view_t*) user_data; printf("Resize: %d x %d\n",allocation->width,allocation->height); */ return TRUE; } /*----------------------------------------------------------------------------*/ static void activate(GtkApplication* app, gpointer data) { GtkWidget *gwin, *grid, *show; GtkCssProvider *gcss; GdkDisplay *disp; GdkScreen *gscr; gwin = gtk_application_window_new(app); gtk_window_set_title(GTK_WINDOW(gwin),MY1APP_FULL); grid = gtk_grid_new(); gtk_container_add(GTK_CONTAINER(gwin),grid); show = gtk_label_new("HAHA"); gtk_widget_set_hexpand(show,TRUE); gtk_widget_set_halign(show,GTK_ALIGN_FILL); gtk_widget_set_vexpand(show,TRUE); gtk_widget_set_valign(show,GTK_ALIGN_FILL); gtk_grid_attach(GTK_GRID(grid),show,0,0,1,1); gcss = gtk_css_provider_new(); disp = gdk_display_get_default(); gscr = gdk_display_get_default_screen(disp); gtk_style_context_add_provider_for_screen(gscr, GTK_STYLE_PROVIDER(gcss),GTK_STYLE_PROVIDER_PRIORITY_USER); gtk_css_provider_load_from_data(gcss, "GtkLabel { background-color: #AAAAAA;}\n" "GtkGrid { background-color: #4444AA;}", -1, NULL); ccss = gtk_css_provider_new(); gtk_style_context_add_provider_for_screen(gscr, GTK_STYLE_PROVIDER(ccss),GTK_STYLE_PROVIDER_PRIORITY_USER); g_signal_connect(G_OBJECT(show),"size-allocate", G_CALLBACK(on_show_resize),0x0); /**gtk_window_fullscreen(GTK_WINDOW(gwin));*/ gtk_widget_show_all(gwin); } /*----------------------------------------------------------------------------*/ int main(int argc, char **argv) { int stat; GtkApplication *gapp; gapp = gtk_application_new(MY1APP_FULL,G_APPLICATION_FLAGS_NONE); g_signal_connect(gapp,"activate",G_CALLBACK(activate),NULL); stat = g_application_run(G_APPLICATION(gapp),argc,argv); g_object_unref(gapp); return stat; } /*----------------------------------------------------------------------------*/