[Goodies-commits] r4127 - xfbib/trunk/src
Jesper Karlsson
zarper at xfce.org
Sat Mar 29 20:40:18 CET 2008
Author: zarper
Date: 2008-03-29 19:40:18 +0000 (Sat, 29 Mar 2008)
New Revision: 4127
Modified:
xfbib/trunk/src/entry_edit_dialog.c
xfbib/trunk/src/open.c
xfbib/trunk/src/treeview.c
Log:
Xfbib: Statusbar show path of the opened file.
Code cleanup and improved memory management.
Modified: xfbib/trunk/src/entry_edit_dialog.c
===================================================================
--- xfbib/trunk/src/entry_edit_dialog.c 2008-03-28 07:28:45 UTC (rev 4126)
+++ xfbib/trunk/src/entry_edit_dialog.c 2008-03-29 19:40:18 UTC (rev 4127)
@@ -51,7 +51,6 @@
return name;
}
-
static void generate_keys(GtkListStore *completion_model, GtkTreeModel *author_model)
{
_DEBUG(("generate_keys"));
@@ -70,8 +69,6 @@
}
}
-
-
static gboolean cb_focus_in_event (GtkWidget *widget, GdkEventFocus *event, struct edit_entry *edit_entry)
{
_DEBUG(("cb_in_focus_event"));
@@ -82,7 +79,6 @@
return FALSE;
}
-
static void set_color_base(GtkWidget *entry, int selected_color)
{
_DEBUG(("set_color"));
@@ -373,17 +369,42 @@
}
}
+static void set_list_text (GtkListStore *list, char *str)
+{
+ _DEBUG(("set_list_text"));
+ GtkTreeIter iter;
+ int n, max, len;
+ char *prev, *tmp;
+
+ max = strlen(str);
+ for(n = 0, prev = str; n < max; n++) {
+ if (str[n] == ' ' && str[n+1] == '\\' && str[n+2] == 'a' && str[n+3] == 'n' && str[n+4] == 'd' && str[n+5] == ' ') {
+ len = &str[n] - prev;
+ tmp = malloc(sizeof(char) * (len+1));
+ strncpy(tmp, prev, len);
+ tmp[len] = '\0';
+ gtk_list_store_append(list, &iter);
+ gtk_list_store_set(list, &iter, 0, tmp, -1);
+ prev = &str[n+6];
+ }
+ }
+ len = &str[n] - prev;
+ tmp = malloc(sizeof(char) * (len+1));
+ strncpy(tmp, prev, len);
+ tmp[len] = '\0';
+ gtk_list_store_append(list, &iter);
+ gtk_list_store_set(list, &iter, 0, tmp, -1);
+}
+
void show_entry_edit_dialog(struct xfbib *xfbib, struct entry *selected)
{
_DEBUG(("show_entry_edit_dialog"));
- GtkWidget *dialog, *notebook, *hbox, *key_entry, *combobox, *vbox[5];
- GtkWidget *vboxes[2], *hboxes, *adds[2], *removes[2], *buttonboxes[2];
+ GtkWidget *dialog, *notebook, *hbox, *key_entry, *combobox, *vbox[5], *vboxes[2], *hboxes, *adds[2], *removes[2], *buttonboxes[2];
struct edit_entry edit_entry[N_ENTRIES];
int i, pos, n;
struct tag *tags;
- char *type;
- const gchar *value, *key;
+ char *type, *value, *key;
const char *tooltips[] = {_("Address of publisher"),
_("Annotation for annotated bibliography styles"),
_("Name(s) of the author(s), separated by 'and' if more than one"),
@@ -413,7 +434,8 @@
xfce_textdomain (PACKAGE, LOCALEDIR, "ISO-8859-1");
- dialog = xfce_titled_dialog_new_with_buttons ((selected == NULL) ? _("Add entry") : _("Edit entry"), NULL,
+ dialog = xfce_titled_dialog_new_with_buttons ((selected == NULL) ? _("Add entry") : _("Edit entry"),
+ NULL,
GTK_DIALOG_MODAL,
GTK_STOCK_OK, GTK_RESPONSE_OK,
GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
@@ -430,47 +452,41 @@
hboxes = gtk_hbox_new(FALSE, 10);
for (i = 0; i < N_ENTRIES; i++) {
+ edit_entry[i].label = gtk_label_new(i == HOWPUBLISHED ? N_("How Published") : label_entry[i]);
+ edit_entry[i].toggle = gtk_toggle_button_new_with_label ("aA");
+ gtk_widget_set_tooltip_text (edit_entry[i].toggle, _("Toggle case sensitivity."));
if (i != AUTHOR && i != EDITOR) {
- edit_entry[i].label = gtk_label_new(i == HOWPUBLISHED ? N_("How Published") : label_entry[i]);
edit_entry[i].entry = gtk_entry_new();
gtk_entry_set_width_chars(GTK_ENTRY (edit_entry[i].entry), 30);
gtk_widget_set_tooltip_text (edit_entry[i].entry, tooltips[i]);
edit_entry[i].hbox = gtk_hbox_new(FALSE, 10);
- edit_entry[i].toggle = gtk_toggle_button_new_with_label ("aA");
- gtk_widget_set_tooltip_text (edit_entry[i].toggle, _("Toggle case sensitivity."));
gtk_box_pack_start(GTK_BOX(edit_entry[i].hbox), edit_entry[i].label, FALSE, FALSE, 10);
gtk_box_pack_end(GTK_BOX(edit_entry[i].hbox), edit_entry[i].toggle, FALSE, TRUE, 10);
gtk_box_pack_end(GTK_BOX(edit_entry[i].hbox), edit_entry[i].entry, FALSE, TRUE, 10);
- g_signal_connect (G_OBJECT (GTK_ENTRY(edit_entry[i].entry)), "changed",
- G_CALLBACK (entry_changed_event), combobox);
+ g_signal_connect (G_OBJECT (edit_entry[i].entry), "changed", G_CALLBACK (entry_changed_event), combobox);
- if (i == INSTITUTION || i == ORGANIZATION || i == SCHOOL || i == TITLE || i == TYPE)
- gtk_box_pack_start (GTK_BOX (vbox[0]), edit_entry[i].hbox, FALSE, FALSE, 2);
- //else if (i == AUTHOR || i == EDITOR)
- //gtk_box_pack_start (GTK_BOX (vbox[1]), edit_entry[i].hbox, FALSE, FALSE, 2);
- else if (i == BOOKTITLE || i == CHAPTER || i == EDITION || i == MONTH || i == NUMBER || i == PAGES || i == VOLUME || i == YEAR)
- gtk_box_pack_start (GTK_BOX (vbox[2]), edit_entry[i].hbox, FALSE, FALSE, 2);
- else if (i == ADDRESS || i == HOWPUBLISHED || i == JOURNAL || i == PUBLISHER || i == SERIES)
- gtk_box_pack_start (GTK_BOX (vbox[3]), edit_entry[i].hbox, FALSE, FALSE, 2);
- else
- gtk_box_pack_start (GTK_BOX (vbox[4]), edit_entry[i].hbox, FALSE, FALSE, 2);
+ if (i == INSTITUTION || i == ORGANIZATION || i == SCHOOL || i == TITLE || i == TYPE)
+ gtk_box_pack_start (GTK_BOX (vbox[0]), edit_entry[i].hbox, FALSE, FALSE, 2);
+ else if (i == BOOKTITLE || i == CHAPTER || i == EDITION || i == MONTH || i == NUMBER || i == PAGES || i == VOLUME || i == YEAR)
+ gtk_box_pack_start (GTK_BOX (vbox[2]), edit_entry[i].hbox, FALSE, FALSE, 2);
+ else if (i == ADDRESS || i == HOWPUBLISHED || i == JOURNAL || i == PUBLISHER || i == SERIES)
+ gtk_box_pack_start (GTK_BOX (vbox[3]), edit_entry[i].hbox, FALSE, FALSE, 2);
+ else
+ gtk_box_pack_start (GTK_BOX (vbox[4]), edit_entry[i].hbox, FALSE, FALSE, 2);
} else {
_DEBUG(("Author/Editor"));
n = (i == EDITOR);
- edit_entry[i].label = gtk_label_new(label_entry[i]);
edit_entry[i].entry = create_author_editor_treeview(xfbib, (char*) label_entry[i]);
adds[n] = gtk_button_new_from_stock(GTK_STOCK_ADD);
removes[n] = gtk_button_new_from_stock(GTK_STOCK_REMOVE);
- edit_entry[i].toggle = gtk_toggle_button_new_with_label ("aA");
- gtk_widget_set_tooltip_text (edit_entry[i].toggle, _("Toggle case sensitivity."));
vboxes[n] = gtk_vbox_new(FALSE, 10);
buttonboxes[n] = gtk_hbox_new(FALSE, 10);
gtk_box_pack_start(GTK_BOX(vboxes[n]), edit_entry[i].entry, TRUE, TRUE, 10);
- gtk_box_pack_start(GTK_BOX(buttonboxes[n]), adds[n], FALSE, FALSE, 10);
- gtk_box_pack_start(GTK_BOX(buttonboxes[n]), removes[n], FALSE, FALSE, 10);
+ gtk_box_pack_start(GTK_BOX(buttonboxes[n]), adds[n], TRUE, FALSE, 1);
+ gtk_box_pack_start(GTK_BOX(buttonboxes[n]), removes[n], TRUE, FALSE, 1);
g_signal_connect_swapped(G_OBJECT(adds[n]), "clicked", G_CALLBACK(add_event_handler), &edit_entry[i]);
g_signal_connect_swapped(G_OBJECT(removes[n]), "clicked", G_CALLBACK(remove_event_handler), &edit_entry[i]);
- gtk_box_pack_start(GTK_BOX(buttonboxes[n]), edit_entry[i].toggle, FALSE, FALSE, 10);
+ gtk_box_pack_start(GTK_BOX(buttonboxes[n]), edit_entry[i].toggle, TRUE, FALSE, 1);
gtk_box_pack_start(GTK_BOX(vboxes[n]), buttonboxes[n], FALSE, FALSE, 10);
gtk_box_pack_start(GTK_BOX(hboxes), vboxes[n], FALSE, FALSE, 10);
}
@@ -490,63 +506,41 @@
gtk_widget_show_all(dialog);
- GtkListStore *list;
- GtkTreeIter iter;
GtkTreeModel *model;
- int x, max, len;
- char *prev, *tmp, *str;
if (selected != NULL) {
_DEBUG(("Entry selected"));
- if ((pos = get_type_pos(selected->type)) != -1) {
- /* Adding predefined values */
+ pos = get_type_pos(selected->type);
+ if (pos == -1)
+ _DEBUG(("Type equals -1"));
+ else {
gtk_combo_box_set_active(GTK_COMBO_BOX(combobox), pos);
set_entry_text(GTK_ENTRY(key_entry), selected->key);
for (tags = selected->tags; tags != NULL; tags = tags->next) {
pos = get_entry_pos(tags->name);
- if (pos != -1) {
- if (pos == AUTHOR || pos == EDITOR) {
- _DEBUG(("read in author or editor"));
- list = GTK_LIST_STORE(gtk_tree_view_get_model(GTK_TREE_VIEW(edit_entry[pos].entry)));
-
- str = tags->value;
- max = strlen(str);
- for(x = 0, prev = str; x < max; x++) {
- if (str[x] == ' ' && str[x+1] == '\\' && str[x+2] == 'a' && str[x+3] == 'n' && str[x+4] == 'd' && str[x+5] == ' ') {
- len = &str[x] - prev;
- tmp = malloc(sizeof(char) * (len+1));
- strncpy(tmp, prev, len);
- tmp[len+1] = '\0';
- gtk_list_store_append(list, &iter);
- gtk_list_store_set(list, &iter, 0, tmp, -1);
- prev = &str[x+6];
- }
- }
- len = &str[x] - prev;
- tmp = malloc(sizeof(char) * (len+1));
- strncpy(tmp, prev, len);
- tmp[len+1] = '\0';
- gtk_list_store_append(list, &iter);
- gtk_list_store_set(list, &iter, 0, tmp, -1);
- } else {
+ if (pos == -1) {
+ _DEBUG(("Tag equals -1: Name: %s Value: %s", tags->name, tags->value));
+ } else {
+ if (pos == AUTHOR || pos == EDITOR)
+ set_list_text(GTK_LIST_STORE(gtk_tree_view_get_model(GTK_TREE_VIEW(edit_entry[pos].entry))), strdup(tags->value));
+ else
set_entry_text(GTK_ENTRY(edit_entry[pos].entry), tags->value);
- }
if (tags->sense)
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (edit_entry[pos].toggle), TRUE);
else
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (edit_entry[pos].toggle), FALSE);
}
- else
- _DEBUG(("Tag equals -1: Name: %s Value: %s", tags->name, tags->value));
}
- } else
- _DEBUG(("Type equals -1"));
+ }
}
-
+
+ GtkTreeIter iter;
+ char *name;
+
while ( TRUE ) {
if (gtk_dialog_run(GTK_DIALOG(dialog)) == GTK_RESPONSE_OK) {
_DEBUG(("Response OK"));
- key = gtk_entry_get_text(GTK_ENTRY(key_entry));
+ key = (char *) gtk_entry_get_text(GTK_ENTRY(key_entry));
if ((type = gtk_combo_box_get_active_text(GTK_COMBO_BOX(combobox))) == NULL) {
_DEBUG(("No type selected"));
xfce_warn(_("No type was selected"));
@@ -566,35 +560,30 @@
free_tags(selected->tags);
}
for (i = 0; i < N_ENTRIES; i++) {
- if (i == AUTHOR || i == EDITOR) {
- model = gtk_tree_view_get_model(GTK_TREE_VIEW(edit_entry[i].entry));
- if (gtk_tree_model_get_iter_first(model, &iter)) {
- _DEBUG(("Pasting together Author/Editor"));
- value = "";
- do {
+ if(GTK_WIDGET_IS_SENSITIVE(GTK_WIDGET(edit_entry[i].entry))) {
+ if (i == AUTHOR || i == EDITOR) {
+ model = gtk_tree_view_get_model(GTK_TREE_VIEW(edit_entry[i].entry));
+ value = NULL;
+ if (gtk_tree_model_get_iter_first(model, &iter)) {
_DEBUG(("Pasting together Author/Editor"));
- gtk_tree_model_get (model, &iter, 0, &tmp, -1);
- _DEBUG(("Pasting together Author/Editor"));
- if (strcmp(value, "") == 0) {
- _DEBUG(("IF"));
- value = strdup(tmp);
- } else {
- _DEBUG(("ELSE"));
- value = strcat(strcat((char *) value, " \\and "),tmp);
- }
- _DEBUG(("Pasting together Author/Editor"));
- } while (gtk_tree_model_iter_next(model, &iter));
+ do {
+ gtk_tree_model_get (model, &iter, 0, &name, -1);
+ if (value == NULL)
+ value = strdup(name);
+ else {
+ value = (char *) realloc(value, sizeof(char)*strlen(value) + sizeof(char)*strlen(" \\and ") + sizeof(char)*strlen(name) + sizeof(char));
+ strcat(strcat((char *) value, " \\and "), name);
+ }
+ } while (gtk_tree_model_iter_next(model, &iter));
+ }
+ } else
+ value = (char *) gtk_entry_get_text(GTK_ENTRY(edit_entry[i].entry));
+ if(strcmp(value, "") != 0) {
+ fprintf(stderr, "label = %s\tvalue = %s\n", gtk_label_get_text(GTK_LABEL(edit_entry[i].label)), value);
+ add_tag(selected,(char*) gtk_label_get_text(GTK_LABEL(edit_entry[i].label)), value,
+ gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (edit_entry[i].toggle)));
}
- } else {
- value = gtk_entry_get_text(GTK_ENTRY(edit_entry[i].entry));
}
- if(GTK_WIDGET_IS_SENSITIVE(GTK_WIDGET(edit_entry[i].entry)) && (strcmp(value, "") != 0)) {
- fprintf(stderr, "label = %s\tvalue = %s\n",
- gtk_label_get_text(GTK_LABEL(edit_entry[i].label)), value);
- /* Field was not empty and sensitive, so add value to a new entry */
- add_tag(selected,(char*) gtk_label_get_text(GTK_LABEL(edit_entry[i].label)),(char*) value,
- gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (edit_entry[i].toggle)));
- }
}
update_treeview(xfbib);
break;
Modified: xfbib/trunk/src/open.c
===================================================================
--- xfbib/trunk/src/open.c 2008-03-28 07:28:45 UTC (rev 4126)
+++ xfbib/trunk/src/open.c 2008-03-29 19:40:18 UTC (rev 4127)
@@ -16,6 +16,8 @@
#include <libxfcegui4/libxfcegui4.h>
#include <config.h>
+#include <string.h>
+#include <stdlib.h>
#include "xfbib.h"
#include "parser_interface.h"
@@ -32,6 +34,7 @@
update_treeview(xfbib);
_DEBUG(("Opening: %s", xfbib->filename));
gtk_window_set_title(GTK_WINDOW(xfbib->window.window), create_title(xfbib));
- statusbar_push((GtkStatusbar *) xfbib->window.statusbar, 0, /*strcat(filename,*/ _(" loaded...")/*)*/); //TODO: Investigate why this fails sometimes.
+ filename = (char *) realloc(filename, sizeof(char)*strlen(filename) + sizeof(char)*strlen(" loaded..."));
+ statusbar_push((GtkStatusbar *) xfbib->window.statusbar, 0, strcat(filename, _(" loaded...")));
return 0;
}
Modified: xfbib/trunk/src/treeview.c
===================================================================
--- xfbib/trunk/src/treeview.c 2008-03-28 07:28:45 UTC (rev 4126)
+++ xfbib/trunk/src/treeview.c 2008-03-29 19:40:18 UTC (rev 4127)
@@ -92,7 +92,7 @@
gtk_tree_view_column_set_min_width(GTK_TREE_VIEW_COLUMN(column), 100);
gtk_tree_view_append_column(GTK_TREE_VIEW(treeview), column);
- list = gtk_list_store_new (VAR_N_COLUMNS, G_TYPE_STRING, G_TYPE_POINTER);
+ list = gtk_list_store_new (1, G_TYPE_STRING);
gtk_tree_view_set_model(GTK_TREE_VIEW(treeview), GTK_TREE_MODEL(list));
return treeview;
More information about the Goodies-commits
mailing list