GtkWidget * sp_fill_style_widget_new (void) { GtkWidget *spw, *vb, *psel, *hb, *l, *om, *m, *mi; spw = sp_widget_new_global (INKSCAPE); vb = gtk_vbox_new (FALSE, 0); gtk_widget_show (vb); gtk_container_add (GTK_CONTAINER (spw), vb); psel = sp_paint_selector_new (); gtk_widget_show (psel); gtk_box_pack_start (GTK_BOX (vb), psel, TRUE, TRUE, 0); g_object_set_data (G_OBJECT (spw), "paint-selector", psel); g_signal_connect (G_OBJECT (psel), "mode_changed", G_CALLBACK (sp_fill_style_widget_paint_mode_changed), spw); g_signal_connect (G_OBJECT (psel), "dragged", G_CALLBACK (sp_fill_style_widget_paint_dragged), spw); g_signal_connect (G_OBJECT (psel), "changed", G_CALLBACK (sp_fill_style_widget_paint_changed), spw); hb = gtk_hbox_new (FALSE, 4); gtk_widget_show (hb); gtk_box_pack_start (GTK_BOX (vb), hb, FALSE, FALSE, 0); l = gtk_label_new (_("Fill Rule")); gtk_widget_show (l); gtk_misc_set_alignment (GTK_MISC (l), 1.0, 0.5); gtk_box_pack_start (GTK_BOX (hb), l, TRUE, TRUE, 0); om = gtk_option_menu_new (); gtk_widget_show (om); gtk_box_pack_start (GTK_BOX (hb), om, FALSE, FALSE, 0); g_object_set_data (G_OBJECT (spw), "fill-rule", om); /* 0 - nonzero 1 - evenodd */ m = gtk_menu_new (); gtk_widget_show (m); mi = gtk_menu_item_new_with_label (_("nonzero")); gtk_widget_show (mi); gtk_menu_append (GTK_MENU (m), mi); g_object_set_data (G_OBJECT (mi), "fill-rule", (void *)"nonzero"); g_signal_connect (G_OBJECT (mi), "activate", G_CALLBACK (sp_fill_style_widget_fill_rule_activate), spw); mi = gtk_menu_item_new_with_label (_("evenodd")); gtk_widget_show (mi); gtk_menu_append (GTK_MENU (m), mi); g_object_set_data (G_OBJECT (mi), "fill-rule", (void *)"evenodd"); g_signal_connect (G_OBJECT (mi), "activate", G_CALLBACK (sp_fill_style_widget_fill_rule_activate), spw); gtk_option_menu_set_menu (GTK_OPTION_MENU (om), m); g_signal_connect (G_OBJECT (spw), "construct", G_CALLBACK (sp_fill_style_widget_construct), psel); g_signal_connect (G_OBJECT (spw), "modify_selection", G_CALLBACK (sp_fill_style_widget_modify_selection), psel); g_signal_connect (G_OBJECT (spw), "change_selection", G_CALLBACK (sp_fill_style_widget_change_selection), psel); g_signal_connect (G_OBJECT (spw), "attr_changed", G_CALLBACK (sp_fill_style_widget_attr_changed), psel); sp_fill_style_widget_update (SP_WIDGET (spw), SP_ACTIVE_DESKTOP ? SP_DT_SELECTION (SP_ACTIVE_DESKTOP) : NULL); return spw; }
/** * \brief Creates new instance of item properties widget * */ GtkWidget * sp_item_widget_new (void) { GtkWidget *spw, *vb, *t, *cb, *l, *f, *tf, *pb, *int_expander, *int_label; GtkTextBuffer *desc_buffer; GtkTooltips *tt = gtk_tooltips_new(); /* Create container widget */ spw = sp_widget_new_global (INKSCAPE); gtk_signal_connect ( GTK_OBJECT (spw), "modify_selection", GTK_SIGNAL_FUNC (sp_item_widget_modify_selection), spw ); gtk_signal_connect ( GTK_OBJECT (spw), "change_selection", GTK_SIGNAL_FUNC (sp_item_widget_change_selection), spw ); vb = gtk_vbox_new (FALSE, 0); gtk_container_add (GTK_CONTAINER (spw), vb); t = gtk_table_new (3, 4, FALSE); gtk_container_set_border_width(GTK_CONTAINER(t), 4); gtk_table_set_row_spacings (GTK_TABLE (t), 4); gtk_table_set_col_spacings (GTK_TABLE (t), 4); gtk_box_pack_start (GTK_BOX (vb), t, TRUE, TRUE, 0); /* Create the label for the object id */ l = gtk_label_new_with_mnemonic (_("_Id")); gtk_misc_set_alignment (GTK_MISC (l), 1, 0.5); gtk_table_attach ( GTK_TABLE (t), l, 0, 1, 0, 1, (GtkAttachOptions)( GTK_SHRINK | GTK_FILL ), (GtkAttachOptions)0, 0, 0 ); gtk_object_set_data (GTK_OBJECT (spw), "id_label", l); /* Create the entry box for the object id */ tf = gtk_entry_new (); gtk_tooltips_set_tip (tt, tf, _("The id= attribute (only letters, digits, and the characters .-_: allowed)"), NULL); gtk_entry_set_max_length (GTK_ENTRY (tf), 64); gtk_table_attach ( GTK_TABLE (t), tf, 1, 2, 0, 1, (GtkAttachOptions)( GTK_EXPAND | GTK_FILL ), (GtkAttachOptions)0, 0, 0 ); gtk_object_set_data (GTK_OBJECT (spw), "id", tf); gtk_label_set_mnemonic_widget (GTK_LABEL(l), tf); // pressing enter in the id field is the same as clicking Set: g_signal_connect ( G_OBJECT (tf), "activate", G_CALLBACK (sp_item_widget_label_changed), spw); // focus is in the id field initially: gtk_widget_grab_focus (GTK_WIDGET (tf)); /* Button for setting the object's id, label, title and description. */ pb = gtk_button_new_with_mnemonic (_("_Set")); gtk_table_attach ( GTK_TABLE (t), pb, 2, 3, 0, 1, (GtkAttachOptions)( GTK_SHRINK | GTK_FILL ), (GtkAttachOptions)0, 0, 0 ); gtk_signal_connect ( GTK_OBJECT (pb), "clicked", GTK_SIGNAL_FUNC (sp_item_widget_label_changed), spw ); /* Create the label for the object label */ l = gtk_label_new_with_mnemonic (_("_Label")); gtk_misc_set_alignment (GTK_MISC (l), 1, 0.5); gtk_table_attach ( GTK_TABLE (t), l, 0, 1, 1, 2, (GtkAttachOptions)( GTK_SHRINK | GTK_FILL ), (GtkAttachOptions)0, 0, 0 ); gtk_object_set_data (GTK_OBJECT (spw), "label_label", l); /* Create the entry box for the object label */ tf = gtk_entry_new (); gtk_tooltips_set_tip (tt, tf, _("A freeform label for the object"), NULL); gtk_entry_set_max_length (GTK_ENTRY (tf), 256); gtk_table_attach ( GTK_TABLE (t), tf, 1, 2, 1, 2, (GtkAttachOptions)( GTK_EXPAND | GTK_FILL ), (GtkAttachOptions)0, 0, 0 ); gtk_object_set_data (GTK_OBJECT (spw), "label", tf); gtk_label_set_mnemonic_widget (GTK_LABEL(l), tf); // pressing enter in the label field is the same as clicking Set: g_signal_connect ( G_OBJECT (tf), "activate", G_CALLBACK (sp_item_widget_label_changed), spw); /* Create the label for the object title */ l = gtk_label_new_with_mnemonic (_("_Title")); gtk_misc_set_alignment (GTK_MISC (l), 1, 0.5); gtk_table_attach ( GTK_TABLE (t), l, 0, 1, 2, 3, (GtkAttachOptions)( GTK_SHRINK | GTK_FILL ), (GtkAttachOptions)0, 0, 0 ); gtk_object_set_data (GTK_OBJECT (spw), "title_label", l); /* Create the entry box for the object title */ tf = gtk_entry_new (); gtk_widget_set_sensitive (GTK_WIDGET (tf), FALSE); gtk_entry_set_max_length (GTK_ENTRY (tf), 256); gtk_table_attach ( GTK_TABLE (t), tf, 1, 3, 2, 3, (GtkAttachOptions)( GTK_EXPAND | GTK_FILL ), (GtkAttachOptions)0, 0, 0 ); gtk_object_set_data (GTK_OBJECT (spw), "title", tf); gtk_label_set_mnemonic_widget (GTK_LABEL(l), tf); /* Create the frame for the object description */ l = gtk_label_new_with_mnemonic (_("_Description")); f = gtk_frame_new (NULL); gtk_frame_set_label_widget (GTK_FRAME (f),l); gtk_table_attach ( GTK_TABLE (t), f, 0, 3, 3, 4, (GtkAttachOptions)( GTK_EXPAND | GTK_FILL ), (GtkAttachOptions)( GTK_EXPAND | GTK_FILL ), 0, 0 ); /* Create the text view box for the object description */ GtkWidget *textframe = gtk_frame_new(NULL); gtk_container_set_border_width(GTK_CONTAINER(textframe), 4); gtk_widget_set_sensitive (GTK_WIDGET (textframe), FALSE); gtk_container_add (GTK_CONTAINER (f), textframe); gtk_frame_set_shadow_type (GTK_FRAME (textframe), GTK_SHADOW_IN); gtk_object_set_data(GTK_OBJECT(spw), "desc_frame", textframe); tf = gtk_text_view_new(); gtk_text_view_set_wrap_mode(GTK_TEXT_VIEW(tf), GTK_WRAP_WORD); desc_buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(tf)); gtk_text_buffer_set_text(desc_buffer, "", -1); gtk_container_add (GTK_CONTAINER (textframe), tf); gtk_object_set_data (GTK_OBJECT (spw), "desc", tf); gtk_label_set_mnemonic_widget (GTK_LABEL (gtk_frame_get_label_widget (GTK_FRAME (f))), tf); /* Check boxes */ GtkWidget *hb_cb = gtk_hbox_new (FALSE, 0); gtk_box_pack_start (GTK_BOX (vb), hb_cb, FALSE, FALSE, 0); t = gtk_table_new (1, 2, TRUE); gtk_container_set_border_width(GTK_CONTAINER(t), 0); gtk_box_pack_start (GTK_BOX (hb_cb), t, TRUE, TRUE, 10); /* Hide */ cb = gtk_check_button_new_with_mnemonic (_("_Hide")); gtk_tooltips_set_tip (tt, cb, _("Check to make the object invisible"), NULL); gtk_table_attach ( GTK_TABLE (t), cb, 0, 1, 0, 1, (GtkAttachOptions)( GTK_EXPAND | GTK_FILL ), (GtkAttachOptions)0, 0, 0 ); g_signal_connect (G_OBJECT(cb), "toggled", G_CALLBACK(sp_item_widget_hidden_toggled), spw); gtk_object_set_data(GTK_OBJECT(spw), "hidden", cb); /* Lock */ // TRANSLATORS: "Lock" is a verb here cb = gtk_check_button_new_with_mnemonic (_("L_ock")); gtk_tooltips_set_tip (tt, cb, _("Check to make the object insensitive (not selectable by mouse)"), NULL); gtk_table_attach ( GTK_TABLE (t), cb, 1, 2, 0, 1, (GtkAttachOptions)( GTK_EXPAND | GTK_FILL ), (GtkAttachOptions)0, 0, 0 ); gtk_signal_connect ( GTK_OBJECT (cb), "toggled", GTK_SIGNAL_FUNC (sp_item_widget_sensitivity_toggled), spw ); gtk_object_set_data (GTK_OBJECT (spw), "sensitive", cb); /* Create the frame for interactivity options */ int_label = gtk_label_new_with_mnemonic (_("_Interactivity")); int_expander = gtk_expander_new (NULL); gtk_expander_set_label_widget (GTK_EXPANDER (int_expander),int_label); gtk_object_set_data (GTK_OBJECT (spw), "interactivity", int_expander); gtk_box_pack_start (GTK_BOX (vb), int_expander, FALSE, FALSE, 0); gtk_widget_show_all (spw); sp_item_widget_setup (SP_WIDGET (spw), sp_desktop_selection (SP_ACTIVE_DESKTOP)); return (GtkWidget *) spw; } //end of sp_item_widget_new()