1 /* logjam - a GTK client for LiveJournal.
2 * Copyright (C) 2000-2003 Evan Martin <evan@livejournal.com>
11 static GtkWidget
*add_menu_item (GtkMenuShell
*ms
, const gchar
*id
, const gchar
*text
) {
15 hbox
= gtk_hbox_new(FALSE
, 3);
16 gtk_box_pack_start(GTK_BOX(hbox
), gtk_image_new_from_stock(id
, GTK_ICON_SIZE_MENU
), FALSE
, FALSE
, 0);
17 gtk_box_pack_start(GTK_BOX(hbox
), gtk_label_new(text
), FALSE
, FALSE
, 0);
19 item
= gtk_menu_item_new();
20 gtk_container_add(GTK_CONTAINER(item
), hbox
);
21 gtk_menu_shell_append(ms
, item
);
26 static GtkWidget
*make_usertype_omenu (void) {
27 GtkWidget
*omenu
, *menu
;
29 menu
= gtk_menu_new();
30 add_menu_item(GTK_MENU_SHELL(menu
), "logjam-ljuser", _("LJR User"));
31 add_menu_item(GTK_MENU_SHELL(menu
), "logjam-ljcomm", _("LJR Community"));
32 add_menu_item(GTK_MENU_SHELL(menu
), "logjam-ljuser", _("User"));
33 add_menu_item(GTK_MENU_SHELL(menu
), "logjam-ljcomm", _("Community"));
35 omenu
= gtk_option_menu_new();
36 gtk_option_menu_set_menu(GTK_OPTION_MENU(omenu
), menu
);
41 void link_journal_dialog_run (GtkWindow
*win
, JamDoc
*doc
) {
43 GtkWidget
*vbox
, *hbox
, *entry
, *omenu
;
44 GtkSizeGroup
*sizegroup
;
45 GtkTextBuffer
*buffer
;
46 GtkTextIter start
, end
;
47 char *username
= NULL
;
49 gboolean selection
= FALSE
;
51 buffer
= jam_doc_get_text_buffer(doc
);
52 if (gtk_text_buffer_get_selection_bounds(buffer
, &start
, &end
)) {
53 username
= gtk_text_buffer_get_text(buffer
, &start
, &end
, FALSE
);
57 dlg
= gtk_dialog_new_with_buttons(_("Insert lj user / lj community Tag"), win
, GTK_DIALOG_MODAL
, GTK_STOCK_CANCEL
, GTK_RESPONSE_CANCEL
, GTK_STOCK_OK
, GTK_RESPONSE_OK
, NULL
);
58 gtk_dialog_set_default_response(GTK_DIALOG(dlg
), GTK_RESPONSE_OK
);
59 vbox
= gtk_vbox_new(FALSE
, 5);
60 gtk_container_set_border_width(GTK_CONTAINER(vbox
), 10);
62 sizegroup
= gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL
);
64 entry
= gtk_entry_new();
65 gtk_entry_set_activates_default(GTK_ENTRY(entry
), TRUE
);
67 gtk_entry_set_text(GTK_ENTRY(entry
), username
);
70 hbox
= labelled_box_new_sg(_("_Username:"), entry
, sizegroup
);
71 gtk_box_pack_start(GTK_BOX(vbox
), hbox
, FALSE
, FALSE
, 0);
73 omenu
= make_usertype_omenu();
74 hbox
= labelled_box_new_sg(_("User _Type:"), omenu
, sizegroup
);
75 gtk_box_pack_start(GTK_BOX(vbox
), hbox
, FALSE
, FALSE
, 0);
77 jam_dialog_set_contents(GTK_DIALOG(dlg
), vbox
);
79 if (gtk_dialog_run(GTK_DIALOG(dlg
)) != GTK_RESPONSE_OK
) {
80 gtk_widget_destroy(dlg
);
83 username
= gtk_editable_get_chars(GTK_EDITABLE(entry
), 0, -1);
84 usertype
= gtk_option_menu_get_history(GTK_OPTION_MENU(omenu
));
85 gtk_widget_destroy(dlg
);
86 if (username
[0] == 0) {
91 if (selection
) gtk_text_buffer_delete(buffer
, &start
, &end
);
92 else gtk_text_buffer_get_iter_at_mark(buffer
, &start
, gtk_text_buffer_get_insert(buffer
));
94 if (usertype
> 1) gtk_text_buffer_insert(buffer
, &start
, "<lj ", -1);
95 else gtk_text_buffer_insert(buffer
, &start
, "<ljr ", -1);
97 if (usertype
%2 == 0) gtk_text_buffer_insert(buffer
, &start
, "user=\"", -1);
98 else gtk_text_buffer_insert(buffer
, &start
, "comm=\"", -1);
100 xml_escape(&username
);
101 gtk_text_buffer_insert(buffer
, &start
, username
, -1);
103 gtk_text_buffer_insert(buffer
, &start
, "\" />", -1);