Skip to content

Commit

Permalink
Add pen color selection
Browse files Browse the repository at this point in the history
  • Loading branch information
serpilliere committed Apr 30, 2020
1 parent ffe9682 commit f2006b8
Show file tree
Hide file tree
Showing 3 changed files with 61 additions and 0 deletions.
50 changes: 50 additions & 0 deletions src/callbacks.c
Original file line number Diff line number Diff line change
Expand Up @@ -582,6 +582,56 @@ void on_opacity_lesser(GtkMenuItem *menuitem,
}


static gboolean
cmw_destroy_cb(GtkWidget *widget)
{
/* This is needed to get out of gtk_main */
gtk_main_quit();
return FALSE;
}


static void
dialog_response (GtkDialog *dialog, gint response, gpointer user_data)
{
GromitData *data = (GromitData *) user_data;
switch (response)
{
case GTK_RESPONSE_OK:
gtk_color_chooser_get_rgba (GTK_COLOR_CHOOSER (dialog), data->default_pen->paint_color);
gdk_cairo_set_source_rgba(data->default_pen->paint_ctx, data->default_pen->paint_color);
break;
default:
break;
}
gtk_widget_destroy(dialog);
}


void on_select_color(GtkMenuItem *menuitem,
gpointer user_data)
{
GromitData *data = (GromitData *) user_data;

GtkWidget *csd;
GdkRGBA color;

csd = gtk_color_chooser_dialog_new ("Select color", NULL);

/* Set as modal */
gtk_window_set_modal (GTK_WINDOW(csd),TRUE);

g_signal_connect (csd, "destroy",
G_CALLBACK (cmw_destroy_cb), NULL);
g_signal_connect (csd, "response",
G_CALLBACK (dialog_response), user_data);

gtk_widget_show (csd);
gtk_main ();

}


void on_undo(GtkMenuItem *menuitem,
gpointer user_data)
{
Expand Down
3 changes: 3 additions & 0 deletions src/callbacks.h
Original file line number Diff line number Diff line change
Expand Up @@ -117,6 +117,9 @@ void on_undo(GtkMenuItem *menuitem,
void on_redo(GtkMenuItem *menuitem,
gpointer user_data);

void on_select_color(GtkMenuItem *menuitem,
gpointer user_data);

void on_about(GtkMenuItem *menuitem,
gpointer user_data);

Expand Down
8 changes: 8 additions & 0 deletions src/gromit-mpx.c
Original file line number Diff line number Diff line change
Expand Up @@ -918,6 +918,8 @@ void setup_main_app (GromitData *data, gboolean activate)
snprintf(labelBuf, sizeof(labelBuf), "Redo (SHIFT-%s)", data->undo_keyval);
GtkWidget* redo_item = gtk_menu_item_new_with_label (labelBuf);

GtkWidget* select_color_item = gtk_menu_item_new_with_label ("Select color");

GtkWidget* sep_item = gtk_separator_menu_item_new();
GtkWidget* intro_item = gtk_menu_item_new_with_mnemonic("_Introduction");
GtkWidget* about_item = gtk_menu_item_new_with_mnemonic("_About");
Expand All @@ -935,6 +937,7 @@ void setup_main_app (GromitData *data, gboolean activate)
gtk_menu_shell_append (GTK_MENU_SHELL (menu), opacity_lesser_item);
gtk_menu_shell_append (GTK_MENU_SHELL (menu), undo_item);
gtk_menu_shell_append (GTK_MENU_SHELL (menu), redo_item);
gtk_menu_shell_append (GTK_MENU_SHELL (menu), select_color_item);

gtk_menu_shell_append (GTK_MENU_SHELL (menu), sep_item);
gtk_menu_shell_append (GTK_MENU_SHELL (menu), intro_item);
Expand Down Expand Up @@ -971,6 +974,10 @@ void setup_main_app (GromitData *data, gboolean activate)
G_CALLBACK (on_redo),
data);

g_signal_connect(G_OBJECT (select_color_item), "activate",
G_CALLBACK (on_select_color),
data);

g_signal_connect(G_OBJECT (intro_item), "activate",
G_CALLBACK (on_intro),
data);
Expand All @@ -992,6 +999,7 @@ void setup_main_app (GromitData *data, gboolean activate)
gtk_widget_show (opacity_lesser_item);
gtk_widget_show (undo_item);
gtk_widget_show (redo_item);
gtk_widget_show (select_color_item);

gtk_widget_show (sep_item);
gtk_widget_show (intro_item);
Expand Down

0 comments on commit f2006b8

Please sign in to comment.