1
0
mirror of git://projects.qi-hardware.com/fped.git synced 2024-11-05 04:35:19 +02:00

Added tooltips to all icons acting as buttons.

git-svn-id: http://svn.openmoko.org/trunk/eda/fped@5767 99fdad57-331a-0410-800a-d7fa5415bdb3
This commit is contained in:
werner 2010-01-01 14:59:17 +00:00
parent 40028ed18f
commit bdd6e95521
5 changed files with 70 additions and 36 deletions

2
TODO
View File

@ -27,7 +27,7 @@ Style and usability:
- when changing the part, we should automatically switch to a configuration
that generates any of its (non-global) elements
- add zoom controls to top toolbar
- add tooltips
- add tooltips (in progress)
Bugs:
- default silk width has no business being hard-coded in obj.c

36
gui.c
View File

@ -1,8 +1,8 @@
/*
* gui.c - Editor GUI core
*
* Written 2009 by Werner Almesberger
* Copyright 2009 by Werner Almesberger
* Written 2009, 2010 by Werner Almesberger
* Copyright 2009, 2010 by Werner Almesberger
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@ -163,19 +163,27 @@ static void make_tool_bar(GtkWidget *hbox, GdkDrawable *drawable)
//gtk_box_pack_end(GTK_BOX(hbox), bar, FALSE, FALSE, 0);
gtk_toolbar_set_style(GTK_TOOLBAR(bar), GTK_TOOLBAR_ICONS);
ev_all = tool_button(bar, drawable, NULL, toggle_all, NULL);
ev_stuff = tool_button(bar, drawable, NULL, toggle_stuff, NULL);
ev_meas = tool_button(bar, drawable, NULL, toggle_meas, NULL);
ev_bright = tool_button(bar, drawable, NULL, toggle_bright, NULL);
ev_all = tool_button(bar, drawable, NULL, NULL, toggle_all, NULL);
ev_stuff = tool_button(bar, drawable, NULL, NULL, toggle_stuff, NULL);
ev_meas = tool_button(bar, drawable, NULL, NULL, toggle_meas, NULL);
ev_bright = tool_button(bar, drawable, NULL, NULL, toggle_bright, NULL);
stuff_image[0] = gtk_widget_ref(make_image(drawable, xpm_stuff_off));
stuff_image[1] = gtk_widget_ref(make_image(drawable, xpm_stuff));
meas_image[0] = gtk_widget_ref(make_image(drawable, xpm_meas_off));
meas_image[1] = gtk_widget_ref(make_image(drawable, xpm_meas));
all_image[0] = gtk_widget_ref(make_image(drawable, xpm_all_off));
all_image[1] = gtk_widget_ref(make_image(drawable, xpm_all));
bright_image[0] = gtk_widget_ref(make_image(drawable, xpm_bright_off));
bright_image[1] = gtk_widget_ref(make_image(drawable, xpm_bright));
stuff_image[0] = gtk_widget_ref(make_image(drawable, xpm_stuff_off,
"Show vectors and frame references (disabled)"));
stuff_image[1] = gtk_widget_ref(make_image(drawable, xpm_stuff,
"Show vectors and frame references (enabled)"));
meas_image[0] = gtk_widget_ref(make_image(drawable, xpm_meas_off,
"Show measurements (disabled)"));
meas_image[1] = gtk_widget_ref(make_image(drawable, xpm_meas,
"Show measurements (enabled)"));
all_image[0] = gtk_widget_ref(make_image(drawable, xpm_all_off,
"Show all frames (currently showing only the active frame)"));
all_image[1] = gtk_widget_ref(make_image(drawable, xpm_all,
"Show all frames (enabled)"));
bright_image[0] = gtk_widget_ref(make_image(drawable, xpm_bright_off,
"Highlight elements (disabled)"));
bright_image[1] = gtk_widget_ref(make_image(drawable, xpm_bright,
"Highlight elements (enabled)"));
set_image(ev_stuff, stuff_image[show_stuff]);
set_image(ev_meas, meas_image[show_meas]);

View File

@ -1,8 +1,8 @@
/*
* gui_tool.c - GUI, tool bar
*
* Written 2009 by Werner Almesberger
* Copyright 2009 by Werner Almesberger
* Written 2009, 2010 by Werner Almesberger
* Copyright 2009, 2010 by Werner Almesberger
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@ -1030,7 +1030,7 @@ GtkWidget *get_icon_by_inst(const struct inst *inst)
default:
abort();
}
return make_transparent_image(DA, image);
return make_transparent_image(DA, image, NULL);
}
@ -1097,41 +1097,57 @@ GtkWidget *gui_setup_tools(GdkDrawable *drawable)
GTK_ORIENTATION_VERTICAL);
ev_point = tool_button(bar, drawable, xpm_point,
"Select and move items",
tool_button_press_event, NULL);
ev_delete = tool_button(bar, drawable, NULL,
ev_delete = tool_button(bar, drawable, NULL, NULL,
tool_button_press_event, &delete_ops);
tool_separator(bar);
tool_button(bar, drawable, xpm_vec,
"Add a vector",
tool_button_press_event, &vec_ops);
ev_frame = tool_button(bar, drawable, NULL,
ev_frame = tool_button(bar, drawable, NULL, NULL,
tool_button_press_event, &frame_ops);
tool_button(bar, drawable, xpm_pad,
"Add a rectangular pad",
tool_button_press_event, &pad_ops);
tool_button(bar, drawable, xpm_rpad,
"Add a rounded pad",
tool_button_press_event, &rpad_ops);
tool_button(bar, drawable, xpm_line,
"Add a silk screen line",
tool_button_press_event, &line_ops);
tool_button(bar, drawable, xpm_rect,
"Add a silk screen rectangle",
tool_button_press_event, &rect_ops);
tool_button(bar, drawable, xpm_circ,
"Add a silk screen circle or arc",
tool_button_press_event, &circ_ops);
tool_separator(bar);
tool_button(bar, drawable, xpm_meas,
"Add a measurement",
tool_button_press_event, &tool_meas_ops);
tool_button(bar, drawable, xpm_meas_x,
"Add a horizontal measurement",
tool_button_press_event, &tool_meas_ops_x);
tool_button(bar, drawable, xpm_meas_y,
"Add a vertical measurement",
tool_button_press_event, &tool_meas_ops_y);
frame_image = gtk_widget_ref(make_image(drawable, xpm_frame));
frame_image = gtk_widget_ref(make_image(drawable, xpm_frame,
"Step 1: select the current frame for insertion"));
frame_image_locked =
gtk_widget_ref(make_image(drawable, xpm_frame_locked));
gtk_widget_ref(make_image(drawable, xpm_frame_locked,
"Step 2: select the frame into which to insert"));
frame_image_ready =
gtk_widget_ref(make_image(drawable, xpm_frame_ready));
gtk_widget_ref(make_image(drawable, xpm_frame_ready,
"Final step: add the frame reference to an anchor point "
"(vector or origin)"));
set_frame_image(frame_image);
delete_image[0] = gtk_widget_ref(make_image(drawable, xpm_delete_off));
delete_image[1] = gtk_widget_ref(make_image(drawable, xpm_delete));
delete_image[0] = gtk_widget_ref(make_image(drawable, xpm_delete_off,
NULL));
delete_image[1] = gtk_widget_ref(make_image(drawable, xpm_delete,
"Delete the selected item"));
set_image(ev_delete, delete_image[0]);
tool_reset();

View File

@ -1,8 +1,8 @@
/*
* gui_util.c - GUI helper functions
*
* Written 2009 by Werner Almesberger
* Copyright 2009 by Werner Almesberger
* Written 2009, 2010 by Werner Almesberger
* Copyright 2009, 2010 by Werner Almesberger
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@ -172,7 +172,7 @@ void label_in_box_bg(GtkWidget *label, const char *color)
/* ----- generate a tool button with an XPM image -------------------------- */
GtkWidget *make_image(GdkDrawable *drawable, char **xpm)
GtkWidget *make_image(GdkDrawable *drawable, char **xpm, const char *tooltip)
{
GdkPixmap *pixmap;
GtkWidget *image;
@ -181,11 +181,14 @@ GtkWidget *make_image(GdkDrawable *drawable, char **xpm)
pixmap = gdk_pixmap_create_from_xpm_d(drawable, NULL, &white, xpm);
image = gtk_image_new_from_pixmap(pixmap, NULL);
gtk_misc_set_padding(GTK_MISC(image), 1, 1);
if (tooltip)
gtk_widget_set_tooltip_markup(image, tooltip);
return image;
}
GtkWidget *make_transparent_image(GdkDrawable *drawable, char **xpm)
GtkWidget *make_transparent_image(GdkDrawable *drawable, char **xpm,
const char *tooltip)
{
GdkPixmap *pixmap;
GdkBitmap *mask;
@ -194,6 +197,8 @@ GtkWidget *make_transparent_image(GdkDrawable *drawable, char **xpm)
pixmap = gdk_pixmap_create_from_xpm_d(drawable, &mask, NULL, xpm);
image = gtk_image_new_from_pixmap(pixmap, mask);
gtk_misc_set_padding(GTK_MISC(image), 1, 1);
if (tooltip)
gtk_widget_set_tooltip_markup(image, tooltip);
return image;
}
@ -218,7 +223,8 @@ void set_image(GtkWidget *widget, GtkWidget *image)
}
GtkWidget *tool_button(GtkWidget *bar, GdkDrawable *drawable, char **xpm,
GtkWidget *tool_button(GtkWidget *bar, GdkDrawable *drawable,
char **xpm, const char *tooltip,
gboolean (*cb)(GtkWidget *widget, GdkEventButton *event, gpointer data),
gpointer data)
{
@ -233,7 +239,7 @@ GtkWidget *tool_button(GtkWidget *bar, GdkDrawable *drawable, char **xpm,
evbox = gtk_event_box_new();
if (xpm) {
image = make_image(drawable, xpm);
image = make_image(drawable, xpm, tooltip);
gtk_container_add(GTK_CONTAINER(evbox), image);
}
g_signal_connect(G_OBJECT(evbox), "button_press_event",

View File

@ -1,8 +1,8 @@
/*
* gui_util.h - GUI helper functions
*
* Written 2009 by Werner Almesberger
* Copyright 2009 by Werner Almesberger
* Written 2009, 2010 by Werner Almesberger
* Copyright 2009, 2010 by Werner Almesberger
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@ -59,10 +59,14 @@ void label_in_box_bg(GtkWidget *box, const char *color);
void vacate_widget(GtkWidget *widget);
GtkWidget *make_image(GdkDrawable *drawable, char **xpm);
GtkWidget *make_transparent_image(GdkDrawable *drawable, char **xpm);
/* tooltips are optional (use NULL for none) */
GtkWidget *make_image(GdkDrawable *drawable, char **xpm, const char *tooltip);
GtkWidget *make_transparent_image(GdkDrawable *drawable, char **xpm,
const char *tooltip);
void set_image(GtkWidget *widget, GtkWidget *image);
GtkWidget *tool_button(GtkWidget *bar, GdkDrawable *drawable, char **xpm,
GtkWidget *tool_button(GtkWidget *bar, GdkDrawable *drawable,
char **xpm, const char *tooltip,
gboolean (*cb)(GtkWidget *widget, GdkEventButton *event, gpointer data),
gpointer data);