summaryrefslogtreecommitdiff
path: root/linux/toolbar.cpp
diff options
context:
space:
mode:
authorleocad1999-11-29 17:05:56 +0000
committerleocad1999-11-29 17:05:56 +0000
commitb7790728182d18896177c6fe1f4a68ca28a08053 (patch)
tree5ffe926293ef06e6282b5dafbf9343a139b96728 /linux/toolbar.cpp
parent776376706080b881901fd898c43758bd75c386d0 (diff)
The piece combobox now shows the name of added pieces
git-svn-id: http://svn.leocad.org/trunk@19 c7d43263-9d01-0410-8a33-9dba5d9f93d6
Diffstat (limited to 'linux/toolbar.cpp')
-rw-r--r--linux/toolbar.cpp60
1 files changed, 49 insertions, 11 deletions
diff --git a/linux/toolbar.cpp b/linux/toolbar.cpp
index 955d097..d7a6231 100644
--- a/linux/toolbar.cpp
+++ b/linux/toolbar.cpp
@@ -373,6 +373,44 @@ static void selection_made(GtkWidget *clist, gint row, gint column, GdkEventButt
gtk_widget_draw(piecepreview, NULL);
}
+// Add a new piece to the list
+void piececombo_add(char* string)
+{
+ if (string == NULL)
+ {
+ // Clear the list
+ gtk_list_clear_items (GTK_LIST(GTK_COMBO(piececombo)->list), 0, -1);
+ gtk_entry_set_text(GTK_ENTRY(GTK_COMBO(piececombo)->entry), "");
+ }
+ else
+ {
+ GtkWidget *li;
+ GtkList *list = GTK_LIST(GTK_COMBO(piececombo)->list);
+ GtkWidget *child;
+ GList *children;
+ gchar* str;
+
+ // Check if the string is already in the list
+ children = list->children;
+ while (children)
+ {
+ child = (GtkWidget*)children->data;
+ children = children->next;
+
+ gtk_label_get(GTK_LABEL(GTK_BIN(child)->child), &str);
+ if (strcmp(str, string) == 0)
+ return;
+ }
+
+ // Add new entry
+ li = gtk_list_item_new_with_label(string);
+ gtk_widget_show(li);
+ gtk_container_add(GTK_CONTAINER(list), li);
+ gtk_entry_set_text(GTK_ENTRY(GTK_COMBO(piececombo)->entry), "");
+ }
+}
+
+
static void colorlist_draw_pixmap(GtkWidget *widget)
{
GdkGC* gc = gdk_gc_new(widget->window);
@@ -484,7 +522,7 @@ static gint colorlist_expose(GtkWidget *widget, GdkEventExpose *event)
static gint colorlist_key_press(GtkWidget* widget, GdkEventKey* event, gpointer data)
{
- int x = -100;
+ int x;
switch (event->keyval)
{
@@ -492,20 +530,20 @@ static gint colorlist_key_press(GtkWidget* widget, GdkEventKey* event, gpointer
case GDK_Down: x = cur_color + 14; break;
case GDK_Left: x = cur_color - 1; break;
case GDK_Right: x = cur_color + 1; break;
+
+ default:
+ return TRUE;
}
- if (x != -100)
+ if ((x > -1) && (x < 28))
{
- if ((x > -1) && (x < 28))
- {
- cur_color = x;
- colorlist_draw_pixmap(widget);
- project->HandleNotify(LC_COLOR_CHANGED, x);
- gtk_widget_draw(widget, NULL);
- gtk_widget_draw(piecepreview, NULL);
- }
- gtk_signal_emit_stop_by_name (GTK_OBJECT(widget), "key_press_event");
+ cur_color = x;
+ colorlist_draw_pixmap(widget);
+ project->HandleNotify(LC_COLOR_CHANGED, x);
+ gtk_widget_draw(widget, NULL);
+ gtk_widget_draw(piecepreview, NULL);
}
+ gtk_signal_emit_stop_by_name (GTK_OBJECT(widget), "key_press_event");
return TRUE;
}