summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorleocad1999-11-29 17:05:56 +0000
committerleocad1999-11-29 17:05:56 +0000
commitb7790728182d18896177c6fe1f4a68ca28a08053 (patch)
tree5ffe926293ef06e6282b5dafbf9343a139b96728
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
-rw-r--r--linux/system.cpp1
-rw-r--r--linux/toolbar.cpp60
-rw-r--r--linux/toolbar.h1
3 files changed, 51 insertions, 11 deletions
diff --git a/linux/system.cpp b/linux/system.cpp
index be6343c..02177af 100644
--- a/linux/system.cpp
+++ b/linux/system.cpp
@@ -608,6 +608,7 @@ void SystemRedrawView()
void SystemPieceComboAdd(char* name)
{
+ piececombo_add(name);
}
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;
}
diff --git a/linux/toolbar.h b/linux/toolbar.h
index 012e495..6e85363 100644
--- a/linux/toolbar.h
+++ b/linux/toolbar.h
@@ -6,6 +6,7 @@ void create_piecebar(GtkWidget *window, GtkWidget *hbox);
void create_statusbar(GtkWidget *window, GtkWidget *vbox);
void colorlist_set(int new_color);
void groupsbar_set(int new_group);
+void piececombo_add(char* string);
extern GtkWidget *label_message, *label_position, *label_snap, *label_step;