[Pkg-wmaker-commits] [wmstickynotes] 09/81: Add submenu to popup for changing a note's color.
Doug Torrance
dtorrance-guest at moszumanska.debian.org
Tue Aug 25 02:33:41 UTC 2015
This is an automated email from the git hooks/post-receive script.
dtorrance-guest pushed a commit to branch master
in repository wmstickynotes.
commit 20adc490e5eba304bcd022bd1f077672e513ad4d
Author: hnc <hnc at 7fc852e4-12a7-4f5b-bad7-374d67da4d19>
Date: Mon Feb 16 14:39:17 2009 +0000
Add submenu to popup for changing a note's color.
---
wmstickynotes.c | 116 +++++++++++++++++++++++++++++++++++++-------------------
wmstickynotes.h | 20 ++++++----
2 files changed, 91 insertions(+), 45 deletions(-)
diff --git a/wmstickynotes.c b/wmstickynotes.c
index 4c90efa..256b410 100644
--- a/wmstickynotes.c
+++ b/wmstickynotes.c
@@ -35,7 +35,8 @@ GdkColormap *colormap;
* that no ids are clobbered */
long int highest_note_id = 0;
-
+/* The current note that the popup menu was shown for */
+Note *current_note;
void delete_note(GtkWidget *widget, Note *note)
{
@@ -49,15 +50,16 @@ void save_note(GtkWidget *widget, Note *note)
{
FILE *file;
char *filename;
+ GtkTextBuffer *text_buffer;
GtkTextIter start;
GtkTextIter end;
-
gchar *text;
- gtk_text_buffer_get_start_iter(note->text_buffer, &start);
- gtk_text_buffer_get_end_iter(note->text_buffer, &end);
+ text_buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(note->text_widget));
+ gtk_text_buffer_get_start_iter(text_buffer, &start);
+ gtk_text_buffer_get_end_iter(text_buffer, &end);
- text = gtk_text_buffer_get_text(note->text_buffer, &start, &end, FALSE);
+ text = gtk_text_buffer_get_text(text_buffer, &start, &end, FALSE);
asprintf(&filename, "%d", note->id);
file = fopen(filename, "w");
@@ -99,24 +101,19 @@ void delete_button_pressed(GtkWidget *widget, GdkEventButton *event, GtkWidget *
void create_note(Note *old_note, int color)
{
GtkWidget *window;
- GtkWidget *text_widget;
GtkWidget *vbox;
GtkWidget *top_hbox;
GtkWidget *mid_hbox;
GtkWidget *bottom_bar;
GtkWidget *bottom_hbox;
GtkWidget *top_bar;
- GtkWidget *top_bar_box;
GtkWidget *delete_button;
- GtkWidget *delete_button_box;
GdkPixmap *delete_button_pixmap;
GdkBitmap *delete_button_mask;
GtkWidget *resize_button;
- GtkWidget *resize_button_box;
GdkPixmap *resize_button_pixmap;
GdkBitmap *resize_button_mask;
- GdkGC *gc;
- GdkColor gcolor;
+ GtkTextBuffer *text_buffer;
Note *note;
@@ -132,8 +129,10 @@ void create_note(Note *old_note, int color)
gtk_window_set_decorated(GTK_WINDOW(window), FALSE);
gtk_window_set_default_size(GTK_WINDOW(window), 150, 150);
- text_widget = gtk_text_view_new_with_buffer(old_note ? old_note->text_buffer : NULL);
- note->text_buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(text_widget));
+ if(!old_note) {
+ note->text_widget = gtk_text_view_new_with_buffer(NULL);
+ }
+ text_buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(note->text_widget));
note->window = window;
@@ -142,37 +141,31 @@ void create_note(Note *old_note, int color)
mid_hbox = gtk_hbox_new(FALSE, 0);
bottom_hbox = gtk_hbox_new(FALSE, 0);
top_bar = gtk_label_new("");
- top_bar_box = gtk_event_box_new();
+ note->top_bar_box = gtk_event_box_new();
gtk_widget_set_size_request(top_bar, -1, 10);
bottom_bar = gtk_label_new("");
gtk_widget_set_size_request(bottom_bar, -1, 8);
delete_button_pixmap = gdk_pixmap_colormap_create_from_xpm_d(NULL, colormap, &delete_button_mask, NULL, delete_button_xpm);
delete_button = gtk_image_new_from_pixmap(delete_button_pixmap, delete_button_mask);
- delete_button_box = gtk_event_box_new();
- gtk_widget_set_size_request(delete_button_box, 10, 10);
+ note->delete_button_box = gtk_event_box_new();
+ gtk_widget_set_size_request(note->delete_button_box, 10, 10);
resize_button_pixmap = gdk_pixmap_colormap_create_from_xpm_d(NULL, colormap, &resize_button_mask, NULL, resize_button_xpm);
resize_button = gtk_image_new_from_pixmap(resize_button_pixmap, resize_button_mask);
- resize_button_box = gtk_event_box_new();
+ note->resize_button_box = gtk_event_box_new();
- gdk_color_parse(color_schemes[note->color].top, &gcolor);
- gtk_widget_modify_bg(top_bar_box, GTK_STATE_NORMAL, &gcolor);
- gtk_widget_modify_bg(delete_button_box, GTK_STATE_NORMAL, &gcolor);
- gdk_color_parse(color_schemes[note->color].background, &gcolor);
- gtk_widget_modify_base(text_widget, GTK_STATE_NORMAL, &gcolor);
- gtk_widget_modify_bg(window, GTK_STATE_NORMAL, &gcolor);
- gtk_widget_modify_bg(resize_button_box, GTK_STATE_NORMAL, &gcolor);
+ set_note_color(note, note->color);
gtk_container_add(GTK_CONTAINER(window), vbox);
- gtk_container_add(GTK_CONTAINER(top_bar_box), top_bar);
- gtk_container_add(GTK_CONTAINER(delete_button_box), delete_button);
- gtk_container_add(GTK_CONTAINER(resize_button_box), resize_button);
- gtk_box_pack_start(GTK_BOX(top_hbox), top_bar_box, TRUE, TRUE, 0);
- gtk_box_pack_start(GTK_BOX(top_hbox), delete_button_box, FALSE, FALSE, 0);
- gtk_box_pack_start(GTK_BOX(mid_hbox), text_widget, TRUE, TRUE, 2);
+ gtk_container_add(GTK_CONTAINER(note->top_bar_box), top_bar);
+ gtk_container_add(GTK_CONTAINER(note->delete_button_box), delete_button);
+ gtk_container_add(GTK_CONTAINER(note->resize_button_box), resize_button);
+ gtk_box_pack_start(GTK_BOX(top_hbox), note->top_bar_box, TRUE, TRUE, 0);
+ gtk_box_pack_start(GTK_BOX(top_hbox), note->delete_button_box, FALSE, FALSE, 0);
+ gtk_box_pack_start(GTK_BOX(mid_hbox), note->text_widget, TRUE, TRUE, 2);
gtk_box_pack_start(GTK_BOX(bottom_hbox), bottom_bar, TRUE, TRUE, 0);
- gtk_box_pack_start(GTK_BOX(bottom_hbox), resize_button_box, FALSE, FALSE, 0);
+ gtk_box_pack_start(GTK_BOX(bottom_hbox), note->resize_button_box, FALSE, FALSE, 0);
gtk_box_pack_start(GTK_BOX(vbox), top_hbox, FALSE, FALSE, 0);
gtk_box_pack_start(GTK_BOX(vbox), mid_hbox, TRUE, TRUE, 0);
gtk_box_pack_start(GTK_BOX(vbox), bottom_hbox, FALSE, FALSE, 0);
@@ -189,10 +182,11 @@ void create_note(Note *old_note, int color)
g_signal_connect(G_OBJECT(window), "destroy", G_CALLBACK(delete_note), note);
g_signal_connect(G_OBJECT(window), "configure-event", G_CALLBACK(note_configure_event), note);
- g_signal_connect(G_OBJECT(delete_button_box), "button-press-event", G_CALLBACK(delete_button_pressed), window);
- g_signal_connect(G_OBJECT(resize_button_box), "button-press-event", G_CALLBACK(resize_button_pressed), note);
- g_signal_connect(G_OBJECT(note->text_buffer), "changed", G_CALLBACK(save_note), note);
- g_signal_connect(G_OBJECT(top_bar_box), "button-press-event", G_CALLBACK(bar_pressed), note);
+ g_signal_connect(G_OBJECT(note->delete_button_box), "button-press-event", G_CALLBACK(delete_button_pressed), window);
+ g_signal_connect(G_OBJECT(note->resize_button_box), "button-press-event", G_CALLBACK(resize_button_pressed), note);
+ g_signal_connect(G_OBJECT(text_buffer), "changed", G_CALLBACK(save_note), note);
+ g_signal_connect(G_OBJECT(note->top_bar_box), "button-press-event", G_CALLBACK(bar_pressed), note);
+ g_signal_connect(G_OBJECT(note->text_widget), "populate-popup", G_CALLBACK(populate_note_popup), note);
}
void new_note_button_clicked(GtkButton *button, gpointer color)
@@ -204,6 +198,7 @@ void new_note_button_clicked(GtkButton *button, gpointer color)
void read_old_notes()
{
Note *note;
+ GtkTextBuffer *text_buffer;
GtkTextIter iter;
DIR *dir = opendir(".");
FILE *file;
@@ -228,12 +223,14 @@ void read_old_notes()
fscanf(file, "%d,%d,%d,%d,%d\n", &(note->x), &(note->y), &(note->width), &(note->height), &(note->color));
if(note->color > 5) note->color = 0;
- note->text_buffer = gtk_text_buffer_new(NULL);
+ text_buffer = gtk_text_buffer_new(NULL);
while(fgets(buffer, 256, file)) {
- gtk_text_buffer_get_end_iter(note->text_buffer, &iter);
- gtk_text_buffer_insert(note->text_buffer, &iter, buffer, -1);
+ gtk_text_buffer_get_end_iter(text_buffer, &iter);
+ gtk_text_buffer_insert(text_buffer, &iter, buffer, -1);
}
+ note->text_widget = gtk_text_view_new_with_buffer(text_buffer);
+
create_note(note, 0);
fclose(file);
@@ -366,3 +363,46 @@ int main(int argc, char *argv[])
return 0;
}
+void populate_note_popup(GtkTextView *entry, GtkMenu *menu, Note *note)
+{
+ GtkWidget *color_menu;
+ GtkWidget *color_item;
+ GtkWidget *item;
+ int i;
+
+ color_menu = gtk_menu_new();
+ color_item = gtk_menu_item_new_with_label("Color");
+
+ gtk_menu_item_set_submenu(GTK_MENU_ITEM(color_item), color_menu);
+ gtk_menu_shell_prepend(GTK_MENU_SHELL(menu), color_item);
+
+ current_note = note;
+ for(i=0; i<5; i++) {
+ item = gtk_menu_item_new_with_label(color_schemes[i].name);
+ gtk_menu_shell_append(GTK_MENU_SHELL(color_menu), item);
+ g_signal_connect(G_OBJECT(item), "activate", G_CALLBACK(set_current_note_color), (gpointer)i);
+ }
+
+ gtk_widget_show_all(GTK_WIDGET(menu));
+}
+
+void set_current_note_color(GtkMenuItem *menuitem, gpointer color)
+{
+ set_note_color(current_note, (int)color);
+}
+
+void set_note_color(Note *note, int color)
+{
+ GdkColor gcolor;
+
+ note->color = color;
+
+ gdk_color_parse(color_schemes[note->color].top, &gcolor);
+ gtk_widget_modify_bg(note->top_bar_box, GTK_STATE_NORMAL, &gcolor);
+ gtk_widget_modify_bg(note->delete_button_box, GTK_STATE_NORMAL, &gcolor);
+
+ gdk_color_parse(color_schemes[note->color].background, &gcolor);
+ gtk_widget_modify_base(note->text_widget, GTK_STATE_NORMAL, &gcolor);
+ gtk_widget_modify_bg(note->window, GTK_STATE_NORMAL, &gcolor);
+ gtk_widget_modify_bg(note->resize_button_box, GTK_STATE_NORMAL, &gcolor);
+}
diff --git a/wmstickynotes.h b/wmstickynotes.h
index 3e7f6cc..f33ac61 100644
--- a/wmstickynotes.h
+++ b/wmstickynotes.h
@@ -22,16 +22,19 @@ typedef struct {
int height;
int color;
GtkWidget *window;
- GtkTextBuffer *text_buffer;
+ GtkWidget *text_widget;
+ GtkWidget *top_bar_box;
+ GtkWidget *delete_button_box;
+ GtkWidget *resize_button_box;
} Note;
ColorScheme color_schemes[] = {
- {"yellow", "#ffff00", "#ffff88"},
- {"green", "#66ff00", "#d0f0c0"},
- {"orange", "#ff7f00", "#ffe5b4"},
- {"red", "#ff007f", "#ffc0cb"},
- {"blue", "#0000ff", "#ccccff"},
- {"white", "#aaaaaa", "#ffffff"}};
+ {"Yellow", "#ffff00", "#ffff88"},
+ {"Green", "#66ff00", "#d0f0c0"},
+ {"Orange", "#ff7f00", "#ffe5b4"},
+ {"Red", "#ff007f", "#ffc0cb"},
+ {"Blue", "#0000ff", "#ccccff"},
+ {"White", "#aaaaaa", "#ffffff"}};
void delete_note(GtkWidget *widget, Note *note);
@@ -43,5 +46,8 @@ void delete_button_pressed(GtkWidget *widget, GdkEventButton *event, GtkWidget *
void create_note(Note *old_note, int color);
void new_note_button_clicked(GtkButton *button, gpointer color);
void read_old_notes();
+void populate_note_popup(GtkTextView *entry, GtkMenu *menu, Note *note);
+void set_current_note_color(GtkMenuItem *menuitem, gpointer color);
+void set_note_color(Note *note, int color);
#endif /* WMSTICKYNOTES_H */
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-wmaker/wmstickynotes.git
More information about the Pkg-wmaker-commits
mailing list