~gilir/affinity/trunk-debian

« back to all changes in this revision

Viewing changes to libaff/aff-frame.c

  • Committer: Matt
  • Date: 2008-12-08 21:42:55 UTC
  • Revision ID: sharkbaitbobby@gmail.com-20081208214255-i0fiy8aayngnirx0
AffFrame:
Make the GtkFrame's label_widget an HBox and make a GtkLabel for the text.
This allows plugins, etc. to put additional widgets in the title area.

Show diffs side-by-side

added added

removed removed

Lines of Context:
33
33
enum
34
34
{
35
35
  PROP_0,
36
 
  PROP_BLOCK_DRAWING
 
36
  PROP_BLOCK_DRAWING,
 
37
  PROP_TEXT
37
38
};
38
39
 
39
40
static void
43
44
    return;
44
45
 
45
46
  AffinityApp *app = frame->window->app;
46
 
  GtkWidget *label_widget;
47
 
  const gchar *label;
 
47
  GtkWidget *hbox = GTK_FRAME(frame)->label_widget;
 
48
  GtkWidget *label_widget = frame->label;
48
49
  gchar *markup, *text_color;
49
50
 
50
 
  label = gtk_frame_get_label(GTK_FRAME(frame));
51
 
 
52
 
  label_widget = gtk_frame_get_label_widget(GTK_FRAME(frame));
53
 
 
54
51
  if (label_widget && app)
55
52
  {
56
53
    //Get the text color
57
54
    if (app->settings->gtk_colors)
58
55
    {
59
56
      markup = g_strdup_printf("<span size='larger' weight='bold'>%s</span>",
60
 
                               label);
 
57
                               frame->text);
61
58
    }
62
59
 
63
60
    else
64
61
    {
65
62
      markup = g_strdup_printf("<span foreground='%s' size='larger' weight='bold'>%s</span>",
66
63
                               app->settings->text_color,
67
 
                               label);
 
64
                               frame->text);
68
65
    }
69
66
 
70
67
    gtk_label_set_markup(GTK_LABEL(label_widget), markup);
 
68
    gtk_widget_show_all(GTK_WIDGET(frame));
71
69
  }
72
70
 
73
71
  else
 
72
  {
 
73
    printf("not label widget or app\n");
74
74
    gtk_widget_hide(label_widget);
 
75
  }
75
76
}
76
77
 
77
78
static void
78
79
on_notify(GObject *frame, GParamSpec *spec, gpointer null)
79
80
{
80
 
  if (strcmp("label", g_param_spec_get_name(spec)) == 0)
 
81
  if (strcmp("text", g_param_spec_get_name(spec)) == 0)
81
82
    update_label(AFF_FRAME(frame));
82
83
}
83
84
 
99
100
  return frame->block_drawing;
100
101
}
101
102
 
 
103
void
 
104
aff_frame_set_text(AffFrame *frame, gchar *text)
 
105
{
 
106
  g_object_set((gpointer)frame, "text", text, NULL);
 
107
}
 
108
 
 
109
gchar *
 
110
aff_frame_get_text(AffFrame *frame)
 
111
{
 
112
  return frame->text;
 
113
}
 
114
 
102
115
static void
103
116
aff_frame_set_property(GObject *object, guint prop_id, const GValue *value,
104
117
                       GParamSpec *pspec)
109
122
      AFF_FRAME(object)->block_drawing = g_value_get_boolean(value);
110
123
      break;
111
124
 
 
125
    case PROP_TEXT:
 
126
      AFF_FRAME(object)->text = g_strdup(g_value_get_string(value));
 
127
      break;
 
128
 
112
129
    default:
113
130
      G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec);
114
131
      break;
125
142
      g_value_set_boolean(value, AFF_FRAME(object)->block_drawing);
126
143
      break;
127
144
 
 
145
    case PROP_TEXT:
 
146
      g_value_set_string(value, AFF_FRAME(object)->text);
 
147
      break;
 
148
 
128
149
    default:
129
150
      G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec);
130
151
      break;
148
169
                        "Whether or not to block the drawing of the frame.",
149
170
                        FALSE,
150
171
                        G_PARAM_CONSTRUCT | G_PARAM_READWRITE));
 
172
 
 
173
  g_object_class_install_property
 
174
  (gobject_class,
 
175
   PROP_TEXT,
 
176
   g_param_spec_string("text",
 
177
                       "TEXT",
 
178
                       "The text to display.",
 
179
                       NULL,
 
180
                       G_PARAM_CONSTRUCT | G_PARAM_READWRITE));
151
181
}
152
182
 
153
183
static void
154
184
aff_frame_init(AffFrame *frame)
155
185
{
 
186
  GtkWidget *hbox;
 
187
 
 
188
  frame->block_drawing = FALSE;
 
189
  frame->label = gtk_label_new("");
 
190
  hbox = gtk_hbox_new(FALSE, 1);
 
191
  gtk_box_pack_start(GTK_BOX(hbox), frame->label, TRUE, TRUE, 0);
 
192
 
 
193
  gtk_frame_set_label_widget(GTK_FRAME(frame), hbox);
156
194
  gtk_frame_set_shadow_type(GTK_FRAME(frame), GTK_SHADOW_NONE);
157
 
  frame->block_drawing = FALSE;
158
195
 
159
196
  g_signal_connect(G_OBJECT(frame), "notify", G_CALLBACK(on_notify), NULL);
160
197
}
161
198
 
162
199
GtkWidget*
163
 
aff_frame_new(gchar *label, GtkWidget *window)
 
200
aff_frame_new(gchar *text, GtkWidget *window)
164
201
{
165
202
  GtkWidget *frame;
166
203
 
167
 
  frame = g_object_new(AFF_TYPE_FRAME,
168
 
                       "label", label,
169
 
                       NULL);
 
204
  frame = g_object_new(AFF_TYPE_FRAME, "text", text, NULL);
170
205
 
171
206
  AFF_FRAME(frame)->window = AFF_WINDOW(window);
172
207