IdentifiantMot de passe
Loading...
Mot de passe oubli� ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les r�ponses en temps r�el, voter pour les messages, poser vos propres questions et recevoir la newsletter

GTK+ avec C & C++ Discussion :

Afficher une image de fond dans une fen�tre gtk4


Sujet :

GTK+ avec C & C++

  1. #1
    Membre confirm�
    Avatar de Code Rom
    Homme Profil pro
    Cherche et essaie de corriger les bugs, ici ou l�.
    Inscrit en
    Juin 2009
    Messages
    139
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rh�ne (Rh�ne Alpes)

    Informations professionnelles :
    Activit� : Cherche et essaie de corriger les bugs, ici ou l�.

    Informations forums :
    Inscription : Juin 2009
    Messages : 139
    Par d�faut Afficher une image de fond dans une fen�tre gtk4
    Bonjour,

    j'ai un petit soucis j'arrive a charger puis afficher mon image de fond, mais elle s'affiche en tout petit, alors qu'elle est bien au dimension de ma fen�tre.

    J'aimerais donc qu'elle s'affiche correctement et remplisse bien tout l'arri�re plan.

    Voici le code, je pr�cise que je d�couvre gtk4, donc soyez indulgent, merci.

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    static void activate(GtkApplication* app, gpointer user_data)
    {
        GtkWidget *window;
        GtkWidget *background;
        GtkWidget *browse_button[3];
        GtkWidget *convert_button[3];
        GtkWidget *frame[3] = {NULL};
        GtkWidget *box;
     
        GtkWidget *video_entry = NULL;
        GtkWidget *image_entry = NULL;
        GtkWidget *audio_entry = NULL;
     
        GtkWidget *zone = NULL;
        GtkWidget *grid = NULL;
     
        GtkWidget *videos_files_label = NULL;
        gchar *utf8_videos_files;
     
        GtkWidget *images_files_label = NULL;
        gchar *utf8_images_files;
     
        GtkWidget *audio_files_label = NULL;
        gchar *utf8_audio_files;
     
        size_t i = 0;
     
        window = gtk_application_window_new (app);
        gtk_window_set_title (GTK_WINDOW (window), "FilesConverter");
        gtk_window_set_default_size (GTK_WINDOW (window), 800, 600);
     
        zone = gtk_fixed_new();
     
        box = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
        gtk_widget_set_halign (box, GTK_ALIGN_CENTER);
        gtk_widget_set_valign (box, GTK_ALIGN_CENTER);
        gtk_window_set_child (GTK_WINDOW(window), zone);
     
        background = gtk_image_new_from_file("images/BG.jpeg");
        gtk_fixed_put(GTK_FIXED(zone), background, 100, 150);
     
        videos_files_label = gtk_label_new(NULL);
     
        utf8_videos_files = g_locale_to_utf8("<span foreground=\"#000000\">Videos Files</span>\n", -1, NULL, NULL, NULL);
        gtk_label_set_markup(GTK_LABEL(videos_files_label), utf8_videos_files);
        gtk_fixed_put(GTK_FIXED(zone), videos_files_label, 20, 20);
     
        frame[0] = gtk_frame_new(NULL);
        gtk_widget_set_size_request(frame[0], 780, 160);
        gtk_fixed_put(GTK_FIXED(zone), frame[0], 10, 10);
     
        images_files_label = gtk_label_new(NULL);
     
        utf8_images_files = g_locale_to_utf8("<span foreground=\"#000000\">Images Files</span>\n", -1, NULL, NULL, NULL);
        gtk_label_set_markup(GTK_LABEL(images_files_label), utf8_images_files);
        gtk_fixed_put(GTK_FIXED(zone), images_files_label, 20, 230);
     
        frame[1] = gtk_frame_new(NULL);
        gtk_widget_set_size_request(frame[1], 780, 160);
        gtk_fixed_put(GTK_FIXED(zone), frame[1], 10, 220);
     
     
        audio_files_label = gtk_label_new(NULL);
     
        utf8_audio_files = g_locale_to_utf8("<span foreground=\"#000000\">Audio Files</span>\n", -1, NULL, NULL, NULL);
        gtk_label_set_markup(GTK_LABEL(audio_files_label), utf8_audio_files);
        gtk_fixed_put(GTK_FIXED(zone), audio_files_label, 20, 430);
     
        frame[2] = gtk_frame_new(NULL);
        gtk_widget_set_size_request(frame[2], 780, 160);
        gtk_fixed_put(GTK_FIXED(zone), frame[2], 10, 420);
     
     
        for(i = 0; i < 3; i++)
        {
            browse_button[i] = gtk_button_new_with_label ("Browse");
            convert_button[i] = gtk_button_new_with_label("Convert");
        }
     
        gtk_fixed_put(GTK_FIXED(zone), browse_button[0], 450, 60);
        gtk_fixed_put(GTK_FIXED(zone), browse_button[1], 450, 270);
        gtk_fixed_put(GTK_FIXED(zone), browse_button[2], 450, 470);
     
        gtk_fixed_put(GTK_FIXED(zone), convert_button[0], 550, 60);
        gtk_fixed_put(GTK_FIXED(zone), convert_button[1], 550, 270);
        gtk_fixed_put(GTK_FIXED(zone), convert_button[2], 550, 470);
     
        g_signal_connect (browse_button[0], "clicked", G_CALLBACK(print_hello), NULL);
        g_signal_connect_swapped (browse_button[0], "clicked", G_CALLBACK(gtk_window_destroy), window);
     
        video_entry = gtk_entry_new();
        gtk_widget_set_size_request(video_entry, 400, 30);
        gtk_fixed_put(GTK_FIXED(zone), video_entry, 20, 60);
     
        image_entry = gtk_entry_new();
        gtk_widget_set_size_request(image_entry, 400, 10);
        gtk_fixed_put(GTK_FIXED(zone), image_entry, 20, 270);
     
        audio_entry= gtk_entry_new();
        gtk_widget_set_size_request(audio_entry, 400, 10);
        gtk_fixed_put(GTK_FIXED(zone), audio_entry, 20, 470);
     
        gtk_window_present(GTK_WINDOW (window));
     
    }
     
     
    int main (int argc, char *argv[])
    {
        GtkApplication *app;
        int status;
     
        app = gtk_application_new("org.gtk.example", G_APPLICATION_DEFAULT_FLAGS);
        g_signal_connect(app, "activate", G_CALLBACK(activate), NULL);
        status = g_application_run(G_APPLICATION(app), argc, argv);
        g_object_unref(app);
     
      return status;
    }
    Et voici une capture d'�cran avec mon background en tout petit :

    Nom : Capture d��cran du 2024-10-11 18-25-08.png
Affichages : 246
Taille : 21,7 Ko

    Bien � vous.

  2. #2
    Expert confirm�
    Avatar de gerald3d
    Homme Profil pro
    Conducteur de train
    Inscrit en
    F�vrier 2008
    Messages
    2 315
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 55
    Localisation : France, C�te d'Or (Bourgogne)

    Informations professionnelles :
    Activit� : Conducteur de train
    Secteur : Transports

    Informations forums :
    Inscription : F�vrier 2008
    Messages : 2 315
    Billets dans le blog
    5
    Par d�faut
    Bonjour.

    Avant toute chose, bienvenu � toi dans le monde "merveilleux" de Gtk .

    La r�ponse qui vient a �t� un peu tardive. Je me suis arrach� les cheveux pour tenter de trouver une solution � ton probl�me. Malheureusement je n'ai qu"une r�ponse partielle et qui plus est avec des fonctions d�pr�ci�es depuis la v4.10 . Sont vraiment gentils les d�veloppeurs Gtk � tout changer en permanence !

    Commen�ons par ton code actuel. Il int�gre bien les principes de Gtk4. C'est d�j� �a. Cependant ta construction de l'interface n'est pas coh�rente. Tu cr�es un GtkBox que tu ins�res dans la fen�tre principale. Jusque l� tout va bien. Puis tu ins�res un GtkFixed dans cette box. Ici �a se g�te franchement . On peut d�j� se demander pourquoi le GtkBox dans ces conditions ? Il est inutile puisque tu ins�res tous les �l�ments dans le GtkFixed. Nous pourrions donc supprimer la box. Cependant, en lisant la documentation officielle on peut lire pour les GtkFixed :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    ...For most applications, you should not use this container! It keeps you from having to learn about the other GTK containers, but it results in broken applications. With GtkFixed, the following things will result in truncated text, overlapping widgets, and other display bugs:
    
    - Themes, which may change widget sizes.
    - Fonts other than the one you used to write the app will of course change the size of widgets containing text; keep in mind that users may use a larger font because of difficulty reading the default, or they may be using a different OS that provides different fonts.
    - Translation of text into other languages changes its size. Also, display of non-English text will use a different font in many cases.
    ...
    M�me si nous ne sommes pas tr�s bon en anglais nous comprenons tout de m�me que ce container c'est beurk !

    Tous les chemins m�nent � Rome. Il est possible d'obtenir une interface identique en utilisant des containers diff�rents. J'ai "copieusement" modifi� ton code pour te donner un exemple que tu pourras trifouiller/modifier � loisir .

    Bon tout �a c'est bien gentil, mais �a ne r�pond pas � la question pos�e. La solution r�side dans l'affectation d'un style CSS. Il est possible de modifier l'apparence d'un widget par ce biais. En introduction j'ai commenc� par �crire que ma r�ponse est partielle. Je ne suis pas arriv� � manipuler l'attribut "background-image" dans le style CSS. Il n'y a pas d'erreur en console mais l'image ne s'affiche pas (d'o� ma calvitie cit�e en introduction ). D'autres pourrons surement apporter une pr�cision sur ce point.

    • Comment appliquer un style CSS ?


    Un deuxi�me �cueil apparait ici. Les fonctions n�cessaires sont devenues d�pr�ci�es. Qu'importe, utilisons les tout de m�me. Il nous faut cr�er un GtkCssProvider dans lequel nous ins�rons notre style. Il nous faut ensuite r�cup�rer le GtkStyleContext du widget concern� auquel nous appliquons le GtkCssProvider pr�c�demment cr��. Pour simplifier le code j'ai factoris� tout ce petit monde dans une fonction :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    /* Affecte un style CSS au widget transmis avec un nom pour ce dernier */
    static void
    change_style (GtkWidget *widget, const gchar *widget_name,  const gchar *style_css)
    {
      /* Changement du nom du widget */
      gtk_widget_set_name (widget, widget_name);
     
      /* Modification de l'apparence du bouton */
      /* Initialisation d'un GtkCssProvider */
      GtkCssProvider *css_provider = gtk_css_provider_new ();
     
      /* Création d'un texte au format css en fonction de flag */
      gchar *css = g_strdup_printf ("#%s %s", widget_name, style_css);
     
      /* Insertion du descriptif d'apparence dans le GtkCssProvider */
      gtk_css_provider_load_from_string (css_provider, css);
     
      /* Application de l'apparence au widget transmis.
       / GTK_STYLE_PROVIDER_PRIORITY_USER force le style utilisateur */
      GtkStyleContext *context = gtk_widget_get_style_context (widget);
      gtk_style_context_add_provider (context,
    				  GTK_STYLE_PROVIDER (css_provider),
    				  GTK_STYLE_PROVIDER_PRIORITY_USER);
      /* Libération mémoire */
      g_object_unref (css_provider);
      g_free (css);
    }
    • Comment �crire un style CSS ?


    Comme pour une feuille de style pour une page web. Pour le code exemple j'ai �cris ceci :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    gchar *frame_style_css = "{\n color: black;\n background-image: none;\n background-color: Orange;\n box-shadow: 5px 5px 5px 5px rgba(0,0,0,0.4), 5px 5px 5px 5px rgba(0,0,0,0.4);\n}";
    Ce style cr�� un bord noir ombrag� avec un fond orange et une couleur de texte noire. Comme tu peux le voir l'attribut "background-image" vaut "none". En th�orie il faudrait �crire "url("image.jpg"); mais ceci ne donne rien non plus.

    • Factorisation du code complet


    Voila un code exemple reprenant les caract�ristiques de ton interface. Elle se compose d'un GtkBox vertical dans lequel j'ins�re trois GtkFrame. Chaque frame est constitu� d'un GtkBox horizontal. � l�int�rieur de ce dernier est ins�r� un GtkEntry et deux GtkButton. Comme chaque frame est identique j'ai factoris� le code dans une fonction qui int�gre aussi les callbacks pour g�rer les buttons. Cette fonction renvoie la frame cr��e. Ce n'est pas forc�ment n�cessaire ici. Voila le r�sultat :

    Nom : Capture d��cran_2024-10-13_13-51-40.png
Affichages : 202
Taille : 27,8 Ko
    En console lorsqu'on clique sur les diff�rents boutons :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Enter in browser_button_clicked_on
    Text in entry : test0
    Enter in convert_button_clicked_on
    Text in entry : test0
    Enter in browser_button_clicked_on
    Text in entry : test1
    Enter in convert_button_clicked_on
    Text in entry : test1
    Enter in browser_button_clicked_on
    Text in entry : test2
    Enter in convert_button_clicked_on
    Text in entry : test2
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    #include <gtk/gtk.h>
     
    /* Affecte un style CSS au widget transmis avec un nom pour ce dernier */
    static void
    change_style (GtkWidget *widget, const gchar *widget_name,  const gchar *style_css)
    {
      /* Changement du nom du widget */
      gtk_widget_set_name (widget, widget_name);
     
      /* Modification de l'apparence du bouton */
      /* Initialisation d'un GtkCssProvider */
      GtkCssProvider *css_provider = gtk_css_provider_new ();
     
      /* Création d'un texte au format css en fonction de flag */
      gchar *css = g_strdup_printf ("#%s %s", widget_name, style_css);
     
      /* Insertion du descriptif d'apparence dans le GtkCssProvider */
      gtk_css_provider_load_from_string (css_provider, css);
     
      /* Application de l'apparence au widget transmis.
       / GTK_STYLE_PROVIDER_PRIORITY_USER force le style utilisateur */
      GtkStyleContext *context = gtk_widget_get_style_context (widget);
      gtk_style_context_add_provider (context,
    				  GTK_STYLE_PROVIDER (css_provider),
    				  GTK_STYLE_PROVIDER_PRIORITY_USER);
      /* Libération mémoire */
      g_object_unref (css_provider);
      g_free (css);
    }
     
    /* Callback pour le bouton "Browser" */
    static void
    browser_button_clicked_on (GtkButton* self, GtkWidget *entry)
    {
      const gchar *text = gtk_editable_get_text (GTK_EDITABLE (entry));
     
      g_print ("Enter in %s\n", __func__);
      g_print ("Text in entry : %s\n", text);
    }
     
    /* Callback pour le bouton "Convert" */
    static void
    convert_button_clicked_on (GtkButton* self, GtkWidget *entry)
    {
      const gchar *text = gtk_editable_get_text (GTK_EDITABLE (entry));
     
      g_print ("Enter in %s\n", __func__);
      g_print ("Text in entry : %s\n", text);
    }
     
    /* Crée un GtkFrame avec tout son contenu et l'insére à la suite dans le
     * GtkBox transmis.
     *
     * box : dans lequel la frame sera insérée
     * style : style CSS à appliquer à la frame
     * titre : titre de la frame
     * browsebuttoncallback et convertbuttoncallback sont les pointeurs
     * respectifs des callbacks à associer aux boutons qui vont être crées.
     */
    static GtkWidget*
    create_and_insert_frame_in_box (GtkWidget *box,
    				const gchar *style,
    				const gchar *titre,
    				gpointer browsebuttoncallback,
    				gpointer convertbuttoncallback)
    {
      GtkWidget *frame = gtk_frame_new(titre);
      change_style (frame, "my_frame", style);
      gtk_box_append (GTK_BOX (box), frame);
     
      /* Création et fixation de l'espace entre chaque widget enfant d'un container
       * GtkBox. Il contiendra tous les widgets inscrits dans le GtkFrame */
      GtkWidget *internalbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 50);
      gtk_widget_set_valign (internalbox, GTK_ALIGN_CENTER);
      gtk_widget_set_margin_start (internalbox, 20);
      gtk_widget_set_margin_end (internalbox, 20);
      gtk_box_set_homogeneous (GTK_BOX (internalbox), FALSE);
     
      /* Insertion de internalbox dans le GtkFrame */
      gtk_frame_set_child (GTK_FRAME (frame), internalbox);
     
      /* Création et insertion d'un GtkEntry */
      GtkWidget *entry = gtk_entry_new();
      gtk_editable_set_width_chars (GTK_EDITABLE (entry), 50);
      gtk_box_append (GTK_BOX (internalbox), entry);
     
      /* Création et insertion des deux boutons "Browse" et "Convert" */
      GtkWidget *button = gtk_button_new_with_label ("Browse");
      gtk_box_append (GTK_BOX (internalbox), button);
      g_signal_connect (G_OBJECT (button), "clicked", G_CALLBACK (browsebuttoncallback), entry);
      button = gtk_button_new_with_label ("Convert");
      gtk_box_append (GTK_BOX (internalbox), button);
      g_signal_connect (G_OBJECT (button), "clicked", G_CALLBACK (convertbuttoncallback), entry);
     
      return frame;
    }
     
    static void activate(GtkApplication* app, gpointer user_data)
    {
        GtkWidget *window;
        GtkWidget *box;
        GtkWidget *frame;
     
        window = gtk_application_window_new (app);
        gtk_window_set_title (GTK_WINDOW (window), "FilesConverter");
        gtk_window_set_default_size (GTK_WINDOW (window), 800, 600);
     
        box = gtk_box_new (GTK_ORIENTATION_VERTICAL, 50);
        gtk_box_set_homogeneous (GTK_BOX (box), TRUE);
        gtk_widget_set_margin_start (box, 20);
        gtk_widget_set_margin_end (box, 20);
        gtk_widget_set_margin_top (box, 20);
        gtk_widget_set_margin_bottom (box, 20);
        gtk_window_set_child (GTK_WINDOW(window), box);
     
        /* Création d'un style CSS pour les frames */
        gchar *frame_style_css = "{\n color: black;\n background-image: none;\n background-color: Orange;\n box-shadow: 5px 5px 5px 5px rgba(0,0,0,0.4), 5px 5px 5px 5px rgba(0,0,0,0.4);\n}";
     
        /* Création de chaque frame avec titre, style css et callbacks pour la gestion des boutons */
        frame = create_and_insert_frame_in_box (box, frame_style_css,
    					    "Videos Files",
    					    browser_button_clicked_on, convert_button_clicked_on);
        frame = create_and_insert_frame_in_box (box, frame_style_css,
    					    "Images Files",
    					    browser_button_clicked_on, convert_button_clicked_on);
        frame = create_and_insert_frame_in_box (box, frame_style_css,
    					    "Audio Files",
    					    browser_button_clicked_on, convert_button_clicked_on);
     
        gtk_window_present(GTK_WINDOW (window));
     
    }
     
     
    int main (int argc, char *argv[])
    {
        GtkApplication *app;
        int status;
     
        app = gtk_application_new("org.gtk.example", G_APPLICATION_DEFAULT_FLAGS);
        g_signal_connect(app, "activate", G_CALLBACK(activate), NULL);
        status = g_application_run(G_APPLICATION(app), argc, argv);
        g_object_unref(app);
     
      return status;
    }

  3. #3
    Membre confirm�
    Avatar de Code Rom
    Homme Profil pro
    Cherche et essaie de corriger les bugs, ici ou l�.
    Inscrit en
    Juin 2009
    Messages
    139
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rh�ne (Rh�ne Alpes)

    Informations professionnelles :
    Activit� : Cherche et essaie de corriger les bugs, ici ou l�.

    Informations forums :
    Inscription : Juin 2009
    Messages : 139
    Par d�faut
    Merci pour ta r�ponse ultra d�taill�e.

    j'ai une r�f�rence ind�finie vers �*gtk_css_provider_load_from_string*�

    Peut �tre un probl�me de linker pourtant j'ai bien tout configur� :

    Compiler : `pkg-config --cflags gtk4`

    linker : `pkg-config --libs gtk4`

    Ma version de gtk4 est la 4.8.

    Edit : pour utiliser gtk4 j'ai juste a installer libgtk-4-dev pour coder avec cette biblioth�que ? rien de plus ? car c'est possible qu'il me manque un truc a install�, je suis sous debian 12.6.

    J'ai aussi gtk2.0 et gtk3 d'install� peut �tre des sortes de conflits, sait-on jamais.

    Je verrais �a ce soir car je ne peux pas m'en occuper maintenant.

  4. #4
    Expert confirm�
    Avatar de gerald3d
    Homme Profil pro
    Conducteur de train
    Inscrit en
    F�vrier 2008
    Messages
    2 315
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 55
    Localisation : France, C�te d'Or (Bourgogne)

    Informations professionnelles :
    Activit� : Conducteur de train
    Secteur : Transports

    Informations forums :
    Inscription : F�vrier 2008
    Messages : 2 315
    Billets dans le blog
    5
    Par d�faut
    La r�ponse est toute simple (doc officielle) :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    gtk_css_provider_load_from_string()
    ...
    Loads string into css_provider.
    
    This clears any previously loaded information.
    
    Available since: 4.12

  5. #5
    Membre confirm�
    Avatar de Code Rom
    Homme Profil pro
    Cherche et essaie de corriger les bugs, ici ou l�.
    Inscrit en
    Juin 2009
    Messages
    139
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rh�ne (Rh�ne Alpes)

    Informations professionnelles :
    Activit� : Cherche et essaie de corriger les bugs, ici ou l�.

    Informations forums :
    Inscription : Juin 2009
    Messages : 139
    Par d�faut
    ah pardon autant pour moi.

    Mais du coup comment installer la 4.12 ?

    car moi j'ai installer libgtk-4-dev et je ne trouve pas d'autre paquet.

    Edit : j'ai trouv� ce lien : https://packages.debian.org/sid/libgtk-4-1

    Sauf lors de l'installation �a me sort plein de probl�me de d�pendances.

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    sudo dpkg -i libgtk-4-1_4.16.3+ds-1_amd64.deb 
    Sélection du paquet libgtk-4-1:amd64 précédemment désélectionné.
    (Lecture de la base de données... 247439 fichiers et répertoires déjà installés.)
    Préparation du dépaquetage de libgtk-4-1_4.16.3+ds-1_amd64.deb ...
    Dépaquetage de libgtk-4-1:amd64 (4.16.3+ds-1) ...
    dpkg: des problèmes de dépendances empêchent la configuration de libgtk-4-1:amd64*:
     libgtk-4-1:amd64 dépend de libc6 (>= 2.38); cependant :
      La version de libc6:amd64 sur le système est 2.36-9+deb12u8.
     libgtk-4-1:amd64 dépend de libcairo-gobject2 (>= 1.18.0); cependant :
      La version de libcairo-gobject2:amd64 sur le système est 1.16.0-7.
     libgtk-4-1:amd64 dépend de libcairo-script-interpreter2 (>= 1.18.0); cependant :
      La version de libcairo-script-interpreter2:amd64 sur le système est 1.16.0-7.
     libgtk-4-1:amd64 dépend de libcairo2 (>= 1.18.0); cependant :
      La version de libcairo2:amd64 sur le système est 1.16.0-7.
     libgtk-4-1:amd64 dépend de libcpdb-frontend2t64 (>= 2.0~b5); cependant :
      Le paquet libcpdb-frontend2t64 n'est pas installé.
     libgtk-4-1:amd64 dépend de libcpdb2t64 (>= 2.0~b5); cependant :
      Le paquet libcpdb2t64 n'est pas installé.
     libgtk-4-1:amd64 dépend de libglib2.0-0t64 (>= 2.80.0); cependant :
      Le paquet libglib2.0-0t64 n'est pas installé.
     libgtk-4-1:amd64 dépend de libpango-1.0-0 (>= 1.52.0); cependant :
      La version de libpango-1.0-0:amd64 sur le système est 1.50.12+ds-1.
     libgtk-4-1:amd64 dépend de libpangocairo-1.0-0 (>= 1.52.0); cependant :
      La version de libpangocairo-1.0-0:amd64 sur le système est 1.50.12+ds-1.
     libgtk-4-1:amd64 dépend de libpangoft2-1.0-0 (>= 1.52.0); cependant :
      La version de libpangoft2-1.0-0:amd64 sur le système est 1.50.12+ds-1.
     libgtk-4-1:amd64 dépend de libpng16-16t64 (>= 1.6.2); cependant :
      Le paquet libpng16-16t64 n'est pas installé.
     libgtk-4-1:amd64 dépend de libgtk-4-common (>= 4.16.3+ds-1); cependant :
      La version de libgtk-4-common sur le système est 4.8.3+ds-2+deb12u1.
     
    dpkg: erreur de traitement du paquet libgtk-4-1:amd64 (--install)*:
     problèmes de dépendances - laissé non configuré
    Traitement des actions différées («*triggers*») pour libc-bin (2.36-9+deb12u8)*...
    Des erreurs ont été rencontrées pendant l'exécution*:
     libgtk-4-1:amd64
    Et lorsque j'essaie d'installer les d�pendances qu'il manque :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    sudo apt install libcairo-gobject2 libcairo-script-interpreter2 libcairo2 libcpdb-frontend2t64 libcpdb2t64 libglib2.0-0t64  libpangocairo-1.0-0 libpangoft2-1.0-0 libpng16-16t64 libgtk-4-common
    Lecture des listes de paquets... Fait
    Construction de l'arbre des dépendances... Fait
    Lecture des informations d'état... Fait      
    Aucune version du paquet libcpdb-frontend2t64 n'est disponible, mais il existe dans la base
    de données. Cela signifie en général que le paquet est manquant, qu'il est devenu obsolète
    ou qu'il n'est disponible que sur une autre source
     
    Aucune version du paquet libcpdb2t64 n'est disponible, mais il existe dans la base
    de données. Cela signifie en général que le paquet est manquant, qu'il est devenu obsolète
    ou qu'il n'est disponible que sur une autre source
     
    Aucune version du paquet libglib2.0-0t64 n'est disponible, mais il existe dans la base
    de données. Cela signifie en général que le paquet est manquant, qu'il est devenu obsolète
    ou qu'il n'est disponible que sur une autre source
     
    Aucune version du paquet libpng16-16t64 n'est disponible, mais il existe dans la base
    de données. Cela signifie en général que le paquet est manquant, qu'il est devenu obsolète
    ou qu'il n'est disponible que sur une autre source
     
    E: Le paquet «*libcpdb-frontend2t64*» n'a pas de version susceptible d'être installée
    E: Le paquet «*libcpdb2t64*» n'a pas de version susceptible d'être installée
    E: Le paquet «*libglib2.0-0t64*» n'a pas de version susceptible d'être installée
    E: Le paquet «*libpng16-16t64*» n'a pas de version susceptible d'être installée

  6. #6
    Membre �m�rite Avatar de balkany
    Homme Profil pro
    Touriste
    Inscrit en
    Juillet 2017
    Messages
    348
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 41
    Localisation : France, Paris (�le de France)

    Informations professionnelles :
    Activit� : Touriste

    Informations forums :
    Inscription : Juillet 2017
    Messages : 348
    Par d�faut
    Citation Envoy� par gerald3d Voir le message
    Je ne suis pas arriv� � manipuler l'attribut "background-image" dans le style CSS. Il n'y a pas d'erreur en console mais l'image ne s'affiche pas (d'o� ma calvitie cit�e en introduction ). D'autres pourrons surement apporter une pr�cision sur ce point.
    J'ai d�j� eu recours � cette r�ponse lors de portages gtk4, en esp�rant que �a aide : https://discourse.gnome.org/t/what-g...ontext/12621/2

  7. #7
    Expert confirm�
    Avatar de gerald3d
    Homme Profil pro
    Conducteur de train
    Inscrit en
    F�vrier 2008
    Messages
    2 315
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 55
    Localisation : France, C�te d'Or (Bourgogne)

    Informations professionnelles :
    Activit� : Conducteur de train
    Secteur : Transports

    Informations forums :
    Inscription : F�vrier 2008
    Messages : 2 315
    Billets dans le blog
    5
    Par d�faut
    Citation Envoy� par Code Rom Voir le message
    ah pardon autant pour moi.

    Mais du coup comment installer la 4.12 ?

    car moi j'ai installer libgtk-4-dev et je ne trouve pas d'autre paquet.

    Edit : j'ai trouv� ce lien : https://packages.debian.org/sid/libgtk-4-1

    Sauf lors de l'installation �a me sort plein de probl�me de d�pendances.
    Surtout n�essayes pas. Tu risques de casser ton installation. Pour avoir la derni�re version il te faut changer de version de Debian. Je suppose que tu es en version �*stable*�. Si tu n�es pas sur un ordinateur professionnel et que tu n�a pas trop peur des cons�quences tu peux d�j� changer en passant � la version �testing�(description des diff�rentes versions). La version �*sid*� est la version instable.

  8. #8
    Expert confirm�
    Avatar de gerald3d
    Homme Profil pro
    Conducteur de train
    Inscrit en
    F�vrier 2008
    Messages
    2 315
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 55
    Localisation : France, C�te d'Or (Bourgogne)

    Informations professionnelles :
    Activit� : Conducteur de train
    Secteur : Transports

    Informations forums :
    Inscription : F�vrier 2008
    Messages : 2 315
    Billets dans le blog
    5
    Par d�faut
    Citation Envoy� par balkany Voir le message
    J'ai d�j� eu recours � cette r�ponse lors de portages gtk4, en esp�rant que �a aide : https://discourse.gnome.org/t/what-g...ontext/12621/2
    Je ne sais pas si c�est parce que j�essaie d�ouvrir ton lien depuis une tablette mais �a ne fonctionne pas

  9. #9
    Membre �m�rite Avatar de balkany
    Homme Profil pro
    Touriste
    Inscrit en
    Juillet 2017
    Messages
    348
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 41
    Localisation : France, Paris (�le de France)

    Informations professionnelles :
    Activit� : Touriste

    Informations forums :
    Inscription : Juillet 2017
    Messages : 348
    Par d�faut
    Citation Envoy� par gerald3d Voir le message
    Je ne sais pas si c�est parce que j�essaie d�ouvrir ton lien depuis une tablette mais �a ne fonctionne pas
    Ouais, le discourse de gnome est down apparemment, il faut r�essayer plus tard.

  10. #10
    Expert confirm�
    Avatar de gerald3d
    Homme Profil pro
    Conducteur de train
    Inscrit en
    F�vrier 2008
    Messages
    2 315
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 55
    Localisation : France, C�te d'Or (Bourgogne)

    Informations professionnelles :
    Activit� : Conducteur de train
    Secteur : Transports

    Informations forums :
    Inscription : F�vrier 2008
    Messages : 2 315
    Billets dans le blog
    5
    Par d�faut
    Citation Envoy� par balkany Voir le message
    J'ai d�j� eu recours � cette r�ponse lors de portages gtk4, en esp�rant que �a aide : https://discourse.gnome.org/t/what-g...ontext/12621/2
    Apr�s lecture de ton lien j'ai modifi� la fonction d'affectation d'un style CSS. Tout est maintenant rentr� dans l'ordre. Merci balkani pour la pr�cision apport�e.

    Voici le correctif :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    /* Affecte un style CSS au widget transmis avec un nom pour ce dernier */
    static void
    change_style (GtkWidget *widget, const gchar *widget_name,  const gchar *style_css)
    {
      /* Changement du nom du widget */
      gtk_widget_set_name (widget, widget_name);
     
      /* Modification de l'apparence du bouton */
      /* Initialisation d'un GtkCssProvider */
      GtkCssProvider *css_provider = gtk_css_provider_new ();
     
      /* Création d'un texte au format css en fonction de flag */
      gchar *css = g_strdup_printf ("#%s %s", widget_name, style_css);
     
      /* Insertion du descriptif d'apparence dans le GtkCssProvider */
      gtk_css_provider_load_from_string (css_provider, css);
     
      /* Application de l'apparence au widget transmis. */
      gtk_style_context_add_provider_for_display (gdk_display_get_default (),
    					      GTK_STYLE_PROVIDER (css_provider),
    					      GTK_STYLE_PROVIDER_PRIORITY_USER);
     
      /* Libération mémoire */
      g_object_unref (css_provider);
      g_free (css);
    }

Discussions similaires

  1. [CSS 3] Afficher la totalit� d'une image en fond dans un div
    Par stc074 dans le forum Mise en page CSS
    R�ponses: 3
    Dernier message: 27/11/2019, 08h44
  2. Afficher image de fond dans une div
    Par awalter1 dans le forum Mise en page CSS
    R�ponses: 3
    Dernier message: 29/02/2012, 23h06
  3. R�ponses: 6
    Dernier message: 21/09/2006, 17h33
  4. R�ponses: 4
    Dernier message: 03/05/2005, 09h03

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo