summaryrefslogtreecommitdiffstats
path: root/src/ui/dialog/xml-tree.cpp
diff options
context:
space:
mode:
authorJohn Smith <john.smith7545@yahoo.com>2012-03-21 04:10:41 +0000
committerJohn Smith <removethis.john.q.public@bigmail.com>2012-03-21 04:10:41 +0000
commite7fd26761a0a7d7344ad3f8429a4e0f804bfc5c6 (patch)
tree88e7bf3ca4317c560b05fd76a02fde80bf07c24b /src/ui/dialog/xml-tree.cpp
parentFix for 950508 : Fill Stroke : Minor visual enhancements, match label sizes (diff)
downloadinkscape-e7fd26761a0a7d7344ad3f8429a4e0f804bfc5c6.tar.gz
inkscape-e7fd26761a0a7d7344ad3f8429a4e0f804bfc5c6.zip
Fix for 903676 : Replace GtkCList with GtkTreeView in XML Tree
(bzr r11105)
Diffstat (limited to 'src/ui/dialog/xml-tree.cpp')
-rw-r--r--src/ui/dialog/xml-tree.cpp128
1 files changed, 26 insertions, 102 deletions
diff --git a/src/ui/dialog/xml-tree.cpp b/src/ui/dialog/xml-tree.cpp
index 810f2a5c6..cdbb2257c 100644
--- a/src/ui/dialog/xml-tree.cpp
+++ b/src/ui/dialog/xml-tree.cpp
@@ -190,6 +190,7 @@ XmlTree::XmlTree (void) :
Gtk::ScrolledWindow *attr_scroller = new Gtk::ScrolledWindow();
attr_scroller->set_policy( Gtk::POLICY_AUTOMATIC, Gtk::POLICY_AUTOMATIC );
+ attr_scroller->set_shadow_type(Gtk::SHADOW_IN);
attr_scroller->set_size_request(0, 60);
attr_subpaned_container.pack1( *attr_scroller );
@@ -230,9 +231,9 @@ XmlTree::XmlTree (void) :
g_signal_connect( G_OBJECT(tree), "tree_unselect_row", G_CALLBACK(on_tree_unselect_row), this);
g_signal_connect_after( G_OBJECT(tree), "tree_move", G_CALLBACK(after_tree_move), this);
- g_signal_connect( G_OBJECT(attributes), "select_row", G_CALLBACK(on_attr_select_row), this);
- g_signal_connect( G_OBJECT(attributes), "unselect_row", G_CALLBACK(on_attr_unselect_row), this);
- g_signal_connect( G_OBJECT(attributes), "row-value-changed", G_CALLBACK(on_attr_row_changed), this);
+ GtkTreeSelection *selection = gtk_tree_view_get_selection (GTK_TREE_VIEW(attributes));
+ g_signal_connect (G_OBJECT(selection), "changed", G_CALLBACK (on_attr_select_row), this);
+
xml_element_new_button.signal_clicked().connect(sigc::mem_fun(*this, &XmlTree::cmd_new_element_node));
xml_text_new_button.signal_clicked().connect(sigc::mem_fun(*this, &XmlTree::cmd_new_text_node));
@@ -729,104 +730,39 @@ void XmlTree::on_tree_unselect_row_hide()
text_container.hide();
}
-void XmlTree::on_attr_select_row(GtkCList *list, gint row, gint column,
- GdkEventButton *event, gpointer data)
+void XmlTree::on_attr_select_row(GtkTreeSelection *selection, gpointer data)
{
XmlTree *self = (XmlTree *)data;
- self->selected_attr = sp_xmlview_attr_list_get_row_key(list, row);
- self->attr_value.grab_focus ();
-
- self->attr_reset_context(self->selected_attr);
-
- self->on_attr_select_row_enable();
- self->on_attr_select_row_set_name_content(row);
- self->on_attr_select_row_set_value_content(row);
-}
+ GtkTreeIter iter;
+ GtkTreeModel *model;
+ if (!gtk_tree_selection_get_selected (selection, &model, &iter)) {
+/* self->selected_attr = 0;
+ self->attr_reset_context(self->selected_attr);
-void XmlTree::on_attr_unselect_row(GtkCList */*list*/, gint /*row*/, gint /*column*/,
- GdkEventButton */*event*/, gpointer data)
-{
- XmlTree *self = (XmlTree *)data;
-
- self->selected_attr = 0;
- self->attr_reset_context(self->selected_attr);
-
- self->on_attr_unselect_row_disable();
- self->on_attr_unselect_row_clear_text();
-}
-
-
-void XmlTree::on_attr_row_changed(GtkCList *list, gint row, gpointer data)
-{
- gint attr = sp_xmlview_attr_list_get_row_key(list, row);
-
- XmlTree *self = (XmlTree *)data;
- if (attr == self->selected_attr) {
- /* if the attr changed, reselect the row in the list to sync
- the edit box */
-
- /*
- // get current attr values
- const gchar * name = g_quark_to_string (sp_xmlview_attr_list_get_row_key (list, row));
- const gchar * value = self->selected_repr->attribute(name);
-
- g_warning("value: '%s'",value);
-
- // get the edit box value
- GtkTextIter start, end;
- gtk_text_buffer_get_bounds ( gtk_text_view_get_buffer (self->attr_value),
- &start, &end );
- gchar * text = gtk_text_buffer_get_text ( gtk_text_view_get_buffer (self->attr_value),
- &start, &end, TRUE );
- g_warning("text: '%s'",text);
-
- // compare to edit box
- if (strcmp(text,value)) {
- // issue warning if they're different
- _message_stack->flash(Inkscape::WARNING_MESSAGE,
- _("Attribute changed in GUI while editing values!"));
- }
- g_free (text);
-
- */
- gtk_clist_unselect_row( GTK_CLIST(list), row, 0 );
- gtk_clist_select_row( GTK_CLIST(list), row, 0 );
+ self->xml_attribute_delete_button.set_sensitive(false);
+ self->on_attr_unselect_row_clear_text();*/
+ return;
}
-}
-
-
-void XmlTree::on_attr_select_row_set_name_content(gint row)
-{
- const gchar *name = g_quark_to_string(sp_xmlview_attr_list_get_row_key(GTK_CLIST(attributes), row));
- attr_name.set_text(name);
-}
+ self->attr_value.grab_focus ();
-void XmlTree::on_attr_select_row_set_value_content(gint row)
-{
- const gchar *name = g_quark_to_string(sp_xmlview_attr_list_get_row_key(GTK_CLIST(attributes), row));
- const gchar *value = selected_repr->attribute(name);
- if (!value) {
- value = "";
- }
- attr_value.get_buffer()->set_text(value);
-}
+ self->xml_attribute_delete_button.set_sensitive(true);
-void XmlTree::on_attr_select_row_enable()
-{
- xml_attribute_delete_button.set_sensitive(true);
-}
+ const gchar *name;
+ const gchar *value;
+ gint attr;
+ gtk_tree_model_get (model, &iter, 0, &name, 1, &value, 2, &attr, -1);
+ self->attr_name.set_text(name);
+ self->attr_value.get_buffer()->set_text(value);
+ self->selected_attr = attr;
+ self->attr_reset_context(self->selected_attr);
-void XmlTree::on_attr_unselect_row_disable()
-{
- xml_attribute_delete_button.set_sensitive(false);
}
-
void XmlTree::on_attr_unselect_row_clear_text()
{
attr_name.set_text("");
@@ -837,22 +773,14 @@ void XmlTree::onNameChanged()
{
Glib::ustring text = attr_name.get_text();
/* TODO: need to do checking a little more rigorous than this */
- if (!text.empty()) {
- set_attr.set_sensitive(true);
- } else {
- set_attr.set_sensitive(false);
- }
+ set_attr.set_sensitive(!text.empty());
}
void XmlTree::onCreateNameChanged()
{
Glib::ustring text = name_entry->get_text();
/* TODO: need to do checking a little more rigorous than this */
- if (!text.empty()) {
- create_button->set_sensitive(true);
- } else {
- create_button->set_sensitive(false);
- }
+ create_button->set_sensitive(!text.empty());
}
void XmlTree::on_desktop_selection_changed()
@@ -1060,11 +988,7 @@ void XmlTree::cmd_set_attr()
_("Change attribute"));
/* TODO: actually, the row won't have been created yet. why? */
- gint row = sp_xmlview_attr_list_find_row_from_key(GTK_CLIST(attributes),
- g_quark_from_string(name));
- if (row != -1) {
- gtk_clist_select_row(GTK_CLIST(attributes), row, 0);
- }
+ sp_xmlview_attr_list_select_row_by_key(attributes, name);
}