summaryrefslogtreecommitdiff
path: root/tikzit/src/gtk/PropertiesWindow.m
diff options
context:
space:
mode:
Diffstat (limited to 'tikzit/src/gtk/PropertiesWindow.m')
-rw-r--r--tikzit/src/gtk/PropertiesWindow.m107
1 files changed, 72 insertions, 35 deletions
diff --git a/tikzit/src/gtk/PropertiesWindow.m b/tikzit/src/gtk/PropertiesWindow.m
index 64948f3..acf18b2 100644
--- a/tikzit/src/gtk/PropertiesWindow.m
+++ b/tikzit/src/gtk/PropertiesWindow.m
@@ -27,6 +27,7 @@
// {{{ GTK+ helpers
static GtkWidget *createLabelledEntry (const gchar *labelText, GtkEntry **entry);
static GtkWidget *createPropsPaneWithLabelEntry (PropertyListEditor *props, GtkEntry **labelEntry);
+static GtkWidget *createBoldLabel (const gchar *text);
// }}}
// {{{ GTK+ callbacks
static gboolean props_window_delete_event_cb (GtkWidget *widget, GdkEvent *event, PropertiesWindow *window);
@@ -117,63 +118,87 @@ static void edge_node_toggled_cb (GtkToggleButton *widget, PropertiesWindow *pan
/*
* Graph properties
*/
- gtk_widget_show ([graphProps widget]);
-
- GtkWidget *graphPropsWidget = gtk_alignment_new (0.5, 0.5, 1.0, 1.0);
- gtk_alignment_set_padding (GTK_ALIGNMENT (graphPropsWidget), 6, 6, 6, 6);
- gtk_container_add (GTK_CONTAINER (graphPropsWidget), [graphProps widget]);
+ graphPropsWidget = gtk_vbox_new (FALSE, 6);
+ g_object_ref_sink (graphPropsWidget);
+ gtk_container_set_border_width (GTK_CONTAINER (graphPropsWidget), 6);
gtk_widget_show (graphPropsWidget);
- graphPropsBin = gtk_frame_new ("Graph properties");
- g_object_ref_sink (graphPropsBin);
- gtk_container_add (GTK_CONTAINER (graphPropsBin), graphPropsWidget);
- gtk_widget_show (graphPropsBin);
+ GtkWidget *label = createBoldLabel ("Graph properties");
+ gtk_widget_show (label);
+ gtk_box_pack_start (GTK_BOX (graphPropsWidget),
+ label,
+ FALSE, FALSE, 0);
+
+ gtk_widget_show ([graphProps widget]);
+ gtk_box_pack_start (GTK_BOX (graphPropsWidget),
+ [graphProps widget],
+ TRUE, TRUE, 0);
+ gtk_widget_show (graphPropsWidget);
- gtk_container_add (GTK_CONTAINER (window), graphPropsBin);
+ gtk_container_add (GTK_CONTAINER (window), graphPropsWidget);
/*
* Node properties
*/
- GtkWidget *nodePropsWidget = createPropsPaneWithLabelEntry(nodeProps, &nodeLabelEntry);
+ nodePropsWidget = gtk_vbox_new (FALSE, 6);
+ g_object_ref_sink (nodePropsWidget);
gtk_container_set_border_width (GTK_CONTAINER (nodePropsWidget), 6);
- g_object_ref_sink (nodeLabelEntry);
gtk_widget_show (nodePropsWidget);
- nodePropsBin = gtk_frame_new ("Node properties");
- g_object_ref_sink (nodePropsBin);
- gtk_container_add (GTK_CONTAINER (nodePropsBin), nodePropsWidget);
- gtk_widget_show (nodePropsBin);
+ label = createBoldLabel ("Node properties");
+ gtk_widget_show (label);
+ gtk_box_pack_start (GTK_BOX (nodePropsWidget),
+ label,
+ FALSE, FALSE, 0);
+
+ GtkWidget *labelWidget = createLabelledEntry ("Label", &nodeLabelEntry);
+ gtk_widget_show (labelWidget);
+ gtk_box_pack_start (GTK_BOX (nodePropsWidget),
+ labelWidget,
+ FALSE, FALSE, 0);
+
+ gtk_widget_show ([nodeProps widget]);
+ gtk_box_pack_start (GTK_BOX (nodePropsWidget),
+ [nodeProps widget],
+ TRUE, TRUE, 0);
g_signal_connect (G_OBJECT (nodeLabelEntry),
"changed",
G_CALLBACK (node_label_changed_cb),
self);
-
/*
* Edge properties
*/
- gtk_widget_show ([edgeProps widget]);
+ edgePropsWidget = gtk_vbox_new (FALSE, 6);
+ g_object_ref_sink (edgePropsWidget);
+ gtk_container_set_border_width (GTK_CONTAINER (edgePropsWidget), 6);
+ gtk_widget_show (edgePropsWidget);
- GtkBox *edgePropsBox = GTK_BOX (gtk_vbox_new (FALSE, 6));
- gtk_container_set_border_width (GTK_CONTAINER (edgePropsBox), 6);
- gtk_widget_show (GTK_WIDGET (edgePropsBox));
- gtk_box_pack_start (edgePropsBox, [edgeProps widget], TRUE, TRUE, 0);
+ label = createBoldLabel ("Edge properties");
+ gtk_widget_show (label);
+ gtk_box_pack_start (GTK_BOX (edgePropsWidget),
+ label,
+ FALSE, FALSE, 0);
- edgePropsBin = gtk_frame_new ("Edge properties");
- g_object_ref_sink (edgePropsBin);
- gtk_container_add (GTK_CONTAINER (edgePropsBin), GTK_WIDGET (edgePropsBox));
- gtk_widget_show (edgePropsBin);
+ gtk_widget_show ([edgeProps widget]);
+ gtk_box_pack_start (GTK_BOX (edgePropsWidget),
+ [edgeProps widget],
+ TRUE, TRUE, 0);
GtkWidget *split = gtk_hseparator_new ();
- gtk_box_pack_start (edgePropsBox, split, FALSE, FALSE, 0);
gtk_widget_show (split);
+ gtk_box_pack_start (GTK_BOX (edgePropsWidget),
+ split,
+ FALSE, FALSE, 0);
edgeNodeToggle = GTK_TOGGLE_BUTTON (gtk_check_button_new_with_label ("Child node"));
g_object_ref_sink (edgeNodeToggle);
gtk_widget_show (GTK_WIDGET (edgeNodeToggle));
- gtk_box_pack_start (edgePropsBox, GTK_WIDGET (edgeNodeToggle), FALSE, FALSE, 0);
+ gtk_box_pack_start (GTK_BOX (edgePropsWidget),
+ GTK_WIDGET (edgeNodeToggle),
+ FALSE, FALSE, 0);
g_signal_connect (G_OBJECT (GTK_WIDGET (edgeNodeToggle)),
"toggled",
G_CALLBACK (edge_node_toggled_cb),
@@ -182,7 +207,9 @@ static void edge_node_toggled_cb (GtkToggleButton *widget, PropertiesWindow *pan
edgeNodePropsWidget = createPropsPaneWithLabelEntry(edgeNodeProps, &edgeNodeLabelEntry);
g_object_ref_sink (edgeNodePropsWidget);
g_object_ref_sink (edgeNodeLabelEntry);
- gtk_box_pack_start (edgePropsBox, edgeNodePropsWidget, TRUE, TRUE, 0);
+ gtk_box_pack_start (GTK_BOX (edgePropsWidget),
+ edgeNodePropsWidget,
+ TRUE, TRUE, 0);
g_signal_connect (G_OBJECT (edgeNodeLabelEntry),
"changed",
G_CALLBACK (edge_node_label_changed_cb),
@@ -197,9 +224,9 @@ static void edge_node_toggled_cb (GtkToggleButton *widget, PropertiesWindow *pan
[[NSNotificationCenter defaultCenter] removeObserver:self];
[document release];
- g_object_unref (graphPropsBin);
- g_object_unref (nodePropsBin);
- g_object_unref (edgePropsBin);
+ g_object_unref (graphPropsWidget);
+ g_object_unref (nodePropsWidget);
+ g_object_unref (edgePropsWidget);
g_object_unref (nodeLabelEntry);
g_object_unref (edgeNodeToggle);
g_object_unref (edgeNodePropsWidget);
@@ -372,7 +399,7 @@ static void edge_node_toggled_cb (GtkToggleButton *widget, PropertiesWindow *pan
[nodePropDelegate setNode:n];
[nodeProps setData:[n data]];
gtk_entry_set_text (nodeLabelEntry, [[n label] UTF8String]);
- [self _setDisplayedWidget:nodePropsBin];
+ [self _setDisplayedWidget:nodePropsWidget];
editGraphProps = NO;
} else {
[nodePropDelegate setNode:nil];
@@ -397,7 +424,7 @@ static void edge_node_toggled_cb (GtkToggleButton *widget, PropertiesWindow *pan
[edgeNodeProps setData:nil];
gtk_widget_set_sensitive (edgeNodePropsWidget, FALSE);
}
- [self _setDisplayedWidget:edgePropsBin];
+ [self _setDisplayedWidget:edgePropsWidget];
editGraphProps = NO;
} else {
[edgePropDelegate setEdge:nil];
@@ -408,7 +435,7 @@ static void edge_node_toggled_cb (GtkToggleButton *widget, PropertiesWindow *pan
}
if (editGraphProps) {
- [self _setDisplayedWidget:graphPropsBin];
+ [self _setDisplayedWidget:graphPropsWidget];
}
blockUpdates = NO;
@@ -537,6 +564,16 @@ static GtkWidget *createPropsPaneWithLabelEntry (PropertyListEditor *props, GtkE
return GTK_WIDGET (box);
}
+static GtkWidget *createBoldLabel (const gchar *text) {
+ GtkWidget *label = gtk_label_new (text);
+ PangoAttrList *attrs = pango_attr_list_new ();
+ pango_attr_list_insert (attrs,
+ pango_attr_weight_new (PANGO_WEIGHT_SEMIBOLD));
+ gtk_label_set_attributes (GTK_LABEL (label), attrs);
+ pango_attr_list_unref (attrs);
+ return label;
+}
+
// }}}
// {{{ GTK+ callbacks