2014-10-22 4 views
0

상태 표시 줄의 글꼴 색상은 어떻게 변경합니까?Gtk + 3.0 상태 표시 줄의 fontcolor 변경

나는 아이디어가 없습니다.

나는 gtk_widget_modify_text을 찾았지만 그것을 사용하는 방법을 모른다!

편집 :

나는이 시도하지만 나던 일 : 당신은 gtk_widget_override_color을 사용하고 GTK_STATE_FLAG_NORMAL 및 설정하고자하는 해당 GdkRGBA 색상으로 사용할 수 있습니다

GdkRGBA font_color; 
font_color.red = 1; 
font_color.green = 0; 
font_color.blue = 0; 
font_color.alpha = 1; 
gtk_widget_override_color(statusbar, GTK_STATE_FLAG_NORMAL, &font_color); 
+0

지금까지 어떤 시도를 했습니까? [manual] (https://developer.gnome.org/gtk3/stable/GtkWidget.html#gtk-widget-override-color)를 읽으려고 했습니까? – drahnr

답변

1

. 자세한 내용은 reference을 참조하십시오.

using Gtk; 

public class Application : Gtk.Window { 
     public Application() { 
       this.destroy.connect (Gtk.main_quit); 
       this.set_default_size (100, 50); 

       Gtk.Statusbar bar = new Gtk.Statusbar(); 
       this.add(bar); 

       uint context_id = bar.get_context_id ("example"); 
       bar.push (context_id, "Message ..."); 

       Gdk.RGBA font_color = Gdk.RGBA(); 
       font_color.red=0.5; 
       font_color.green=0; 
       font_color.blue=0; 
       font_color.alpha=1; 
       bar.override_color (Gtk.StateFlags.NORMAL, font_color); 
     } 

     public static int main (string[] args) { 
       Gtk.init (ref args); 

       Application app = new Application(); 
       app.show_all(); 
       Gtk.main(); 
       return 0; 
     } 
} 
여기

screenshot of example application

는 C의 예이다 : 여기

발라에 기록하는 예이다. statusbar example의 수정 된 버전입니다.

#include <stdlib.h> 
#include <gtk/gtk.h> 
#include <glib.h> 

GtkWidget *status_bar; 

static void push_item(GtkWidget *widget, 
         gpointer data) 
{ 
    static int count = 1; 
    gchar *buff; 

    buff = g_strdup_printf ("Item %d", count++); 
    gtk_statusbar_push (GTK_STATUSBAR (status_bar), GPOINTER_TO_INT (data), buff); 
    g_free (buff); 
} 

int main(int argc, 
      char *argv[]) 
{ 

    GtkWidget *window; 
    GtkWidget *vbox; 
    GtkWidget *button; 

    gint context_id; 

    gtk_init (&argc, &argv); 

    /* create a new window */ 
    window = gtk_window_new (GTK_WINDOW_TOPLEVEL); 
    gtk_widget_set_size_request (GTK_WIDGET (window), 200, 100); 
    gtk_window_set_title (GTK_WINDOW (window), "GTK Statusbar Example"); 
    g_signal_connect (window, "delete-event", 
         G_CALLBACK (exit), NULL); 

    vbox = gtk_vbox_new (FALSE, 1); 
    gtk_container_add (GTK_CONTAINER (window), vbox); 
    gtk_widget_show (vbox); 

    status_bar = gtk_statusbar_new();  
    gtk_box_pack_start (GTK_BOX (vbox), status_bar, TRUE, TRUE, 0); 
    gtk_widget_show (status_bar); 

    /* here comes the color change */ 
    GdkRGBA font_color; 
    font_color.red = 1; 
    font_color.green = 0; 
    font_color.blue = 0; 
    font_color.alpha = 1; 
    gtk_widget_override_color(status_bar, GTK_STATE_FLAG_NORMAL, &font_color); 

    context_id = gtk_statusbar_get_context_id(
          GTK_STATUSBAR (status_bar), "Statusbar example"); 

    button = gtk_button_new_with_label ("push item"); 
    g_signal_connect (button, "clicked", 
         G_CALLBACK (push_item), GINT_TO_POINTER (context_id)); 
    gtk_box_pack_start (GTK_BOX (vbox), button, TRUE, TRUE, 2); 
    gtk_widget_show (button);    

    /* always display the window as the last step so it all splashes on 
    * the screen at once. */ 
    gtk_widget_show (window); 

    gtk_main(); 

    return 0; 
} 
+0

텍스트 상자에서는 작동하지만 상태 표시 줄에서는 작동하지 않습니다. –

+0

스크린 샷에서 얻으려는 것이 무엇입니까? – elya5

+0

예! 그러나 C에서 (그리고 vala가 아닙니다) 나는 이것을 시도합니다 : 편집 참조 –

0

속성을 변경하려면 상태 표시 줄의 "라벨"위젯을 검색해야한다고 생각합니다. 이 코드는 상태 표시 줄 (GTK 2)의 글꼴과 크기를 변경합니다.

PangoFontDescription *pfd = pango_font_description_from_string("Consolas 8"); 
GtkWidget *w = gtk_statusbar_get_message_area(GTK_STATUSBAR(statusbar)); 
GList *gl = gtk_container_get_children(GTK_CONTAINER(w)); 
GtkWidget *ch = GTK_WIDGET(gl->data); 
GtkLabel *label = GTK_LABEL(ch); 
printf("Number of children: %d Text: %s\n", g_list_length(gl), gtk_label_get_text(label)); 
//prints 1 and the current message of the statusbar 
gtk_widget_modify_font(ch, pfd); 
g_list_free(gl); 
pango_font_description_free(pfd); 
관련 문제