1
0
Fork 0
forked from Miroirs/x49gp

Don't copy style. Try to load them locally, then globally, then run style-less

This commit is contained in:
Gwenhael Le Moine 2024-11-22 19:11:44 +01:00
parent 6aacf694a9
commit fdcef2c099
No known key found for this signature in database
GPG key ID: FDFE3669426707A7
3 changed files with 51 additions and 30 deletions

View file

@ -13,34 +13,37 @@
#include "x49gp.h" #include "x49gp.h"
#include "options.h" #include "options.h"
#ifdef X49GP_DATADIR
# define GLOBAL_DATADIR X49GP_DATADIR
#else
# define GLOBAL_DATADIR x49gp->progpath
#endif
#define STATE_FILE_NAME "state" #define STATE_FILE_NAME "state"
static int copy_file_from_global_datadir_to_user_datadir( const char* filename ) /* #ifdef X49GP_DATADIR */
{ /* # define GLOBAL_DATADIR X49GP_DATADIR */
GError* gerror = NULL; /* #else */
if ( !g_file_test( g_build_filename( opt.datadir, filename, NULL ), G_FILE_TEST_EXISTS ) ) { /* # define GLOBAL_DATADIR x49gp->progpath */
if ( opt.verbose ) /* #endif */
fprintf( stderr, "Copying %s to %s\n", g_build_filename( GLOBAL_DATADIR, filename, NULL ),
g_build_filename( opt.datadir, filename, NULL ) );
if ( !g_file_test( g_build_filename( GLOBAL_DATADIR, filename, NULL ), G_FILE_TEST_EXISTS ) ) /* static int copy_file_from_global_datadir_to_user_datadir( const char* filename ) */
return EXIT_FAILURE; /* { */
/* GError* gerror = NULL; */
/* if ( !g_file_test( g_build_filename( opt.datadir, filename, NULL ), G_FILE_TEST_EXISTS ) ) { */
/* if ( opt.verbose ) */
/* fprintf( stderr, "Copying %s to %s\n", g_build_filename( GLOBAL_DATADIR, filename, NULL ), */
/* g_build_filename( opt.datadir, filename, NULL ) ); */
if ( !g_file_copy( g_file_new_build_filename( GLOBAL_DATADIR, filename, NULL ), /* if ( !g_file_test( g_build_filename( GLOBAL_DATADIR, filename, NULL ), G_FILE_TEST_EXISTS ) ) */
g_file_new_build_filename( opt.datadir, filename, NULL ), G_FILE_COPY_OVERWRITE, NULL, NULL, NULL, &gerror ) ) { /* return EXIT_FAILURE; */
fprintf( stderr, "Unable to copy style: %s\n", gerror->message );
g_error_free( gerror );
return -errno;
}
}
return EXIT_SUCCESS; /* if ( !g_file_copy( g_file_new_build_filename( GLOBAL_DATADIR, filename, NULL ), */
} /* g_file_new_build_filename( opt.datadir, filename, NULL ), G_FILE_COPY_OVERWRITE, NULL, NULL, NULL, &gerror ) )
*/
/* { */
/* fprintf( stderr, "Unable to copy style: %s\n", gerror->message ); */
/* g_error_free( gerror ); */
/* return -errno; */
/* } */
/* } */
/* return EXIT_SUCCESS; */
/* } */
int x49gp_modules_init( x49gp_t* x49gp ) int x49gp_modules_init( x49gp_t* x49gp )
{ {
@ -134,8 +137,8 @@ int x49gp_modules_load( x49gp_t* x49gp )
return error; return error;
} }
copy_file_from_global_datadir_to_user_datadir( "style-50g.css" ); /* copy_file_from_global_datadir_to_user_datadir( "style-50g.css" ); */
copy_file_from_global_datadir_to_user_datadir( "style-49gp.css" ); /* copy_file_from_global_datadir_to_user_datadir( "style-49gp.css" ); */
x49gp->state = g_key_file_new(); x49gp->state = g_key_file_new();
if ( NULL == x49gp->state ) { if ( NULL == x49gp->state ) {

View file

@ -15,6 +15,12 @@
# define PATCHLEVEL 0 # define PATCHLEVEL 0
#endif #endif
#ifdef X49GP_DATADIR
# define GLOBAL_DATADIR X49GP_DATADIR
#else
# define GLOBAL_DATADIR x49gp->progpath
#endif
typedef enum { MODEL_49GP = 0, MODEL_50G } x50ng_model_t; typedef enum { MODEL_49GP = 0, MODEL_50G } x50ng_model_t;
struct options { struct options {

View file

@ -1689,15 +1689,27 @@ static int ui_load( x49gp_module_t* module, GKeyFile* keyfile )
#endif #endif
// Apply CSS // Apply CSS
GtkCssProvider* style_provider = gtk_css_provider_new(); char* style_full_path = g_build_filename( opt.datadir, opt.style_filename, NULL );
if ( !g_file_test( style_full_path, G_FILE_TEST_EXISTS ) )
style_full_path = g_build_filename( GLOBAL_DATADIR, opt.style_filename, NULL );
gtk_css_provider_load_from_path( style_provider, g_build_filename( opt.datadir, opt.style_filename, NULL ), NULL ); if ( !g_file_test( style_full_path, G_FILE_TEST_EXISTS ) )
fprintf( stderr, "Can't load style %s neither from %s/%s nor form %s/%s\n", opt.style_filename, opt.datadir, opt.style_filename,
GLOBAL_DATADIR, opt.style_filename );
else {
GtkCssProvider* style_provider = gtk_css_provider_new();
gtk_css_provider_load_from_path( style_provider, g_build_filename( GLOBAL_DATADIR, opt.style_filename, NULL ), NULL );
gtk_style_context_add_provider_for_screen( gdk_screen_get_default(), GTK_STYLE_PROVIDER( style_provider ), gtk_style_context_add_provider_for_screen( gdk_screen_get_default(), GTK_STYLE_PROVIDER( style_provider ),
GTK_STYLE_PROVIDER_PRIORITY_USER + 1 ); GTK_STYLE_PROVIDER_PRIORITY_USER + 1 );
g_object_unref( style_provider ); g_object_unref( style_provider );
if ( opt.verbose )
fprintf( stderr, "Loaded style from %s\n", style_full_path );
}
free( style_full_path );
// finally show the window // finally show the window
gtk_widget_realize( ui->window ); gtk_widget_realize( ui->window );
gtk_widget_show_all( ui->window ); gtk_widget_show_all( ui->window );