1064
1064
midori_browser_edit_bookmark_title_changed_cb (GtkEntry* entry,
1067
1067
const gchar* title = gtk_entry_get_text (entry);
1068
gtk_dialog_set_response_sensitive (dialog, GTK_RESPONSE_ACCEPT,
1068
gtk_widget_set_sensitive (button,
1069
1069
title != NULL && title[0] != '\0');
1073
midori_browser_edit_bookmark_response_cb (GtkWidget* dialog,
1075
MidoriBrowser* browser)
1077
if (response == GTK_RESPONSE_ACCEPT)
1079
KatzeItem* bookmark = g_object_get_data (G_OBJECT (dialog), "bookmark");
1080
GtkWidget* entry_title = g_object_get_data (G_OBJECT (dialog), "entry-title");
1081
katze_item_set_name (bookmark,
1082
gtk_entry_get_text (GTK_ENTRY (entry_title)));
1083
GtkWidget* check_toolbar = g_object_get_data (G_OBJECT (dialog), "check-toolbar");
1084
katze_item_set_meta_integer (bookmark, "toolbar",
1085
gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (check_toolbar)));
1086
GtkWidget* entry_uri = g_object_get_data (G_OBJECT (dialog), "entry-uri");
1087
if (!KATZE_IS_ARRAY (bookmark))
1088
katze_item_set_uri (bookmark,
1089
gtk_entry_get_text (GTK_ENTRY (entry_uri)));
1091
GtkWidget* combo_folder = g_object_get_data (G_OBJECT (dialog), "combo-folder");
1092
gint64 selected = midori_bookmark_folder_button_get_active (combo_folder);
1093
katze_item_set_meta_integer (bookmark, "parentid", selected);
1095
gboolean new_bookmark = g_object_get_data (G_OBJECT (dialog), "new-bookmark") != NULL;
1097
midori_bookmarks_db_add_item (browser->bookmarks, bookmark);
1099
midori_bookmarks_db_update_item (browser->bookmarks, bookmark);
1101
gtk_widget_destroy (dialog);
1073
1105
midori_browser_edit_bookmark_add_speed_dial_cb (GtkWidget* button,
1074
1106
KatzeItem* bookmark)
1076
1108
MidoriBrowser* browser = midori_browser_get_for_widget (button);
1077
1109
midori_browser_add_speed_dial (browser);
1110
#if GTK_CHECK_VERSION (3, 12, 0)
1111
GtkWidget* dialog = gtk_widget_get_ancestor (button, GTK_TYPE_POPOVER);
1078
1113
GtkWidget* dialog = gtk_widget_get_toplevel (button);
1079
gtk_dialog_response (GTK_DIALOG (dialog), GTK_RESPONSE_DELETE_EVENT);
1115
midori_browser_edit_bookmark_response_cb (dialog, GTK_RESPONSE_DELETE_EVENT, browser);
1083
1119
midori_browser_edit_bookmark_create_launcher_cb (GtkWidget* button,
1084
1120
KatzeItem* bookmark)
1122
MidoriBrowser* browser = midori_browser_get_for_widget (button);
1086
1123
GtkAction* action = g_object_get_data (G_OBJECT (button), "midori-action");
1087
1124
gtk_action_activate (action);
1125
#if GTK_CHECK_VERSION (3, 12, 0)
1126
GtkWidget* dialog = gtk_widget_get_ancestor (button, GTK_TYPE_POPOVER);
1088
1128
GtkWidget* dialog = gtk_widget_get_toplevel (button);
1089
gtk_dialog_response (GTK_DIALOG (dialog), GTK_RESPONSE_DELETE_EVENT);
1130
midori_browser_edit_bookmark_response_cb (dialog, GTK_RESPONSE_DELETE_EVENT, browser);
1133
#if GTK_CHECK_VERSION (3, 12, 0)
1135
midori_browser_edit_bookmark_button_cb (GtkWidget* button,
1136
MidoriBrowser* browser)
1138
GtkWidget* dialog = gtk_widget_get_ancestor (button, GTK_TYPE_POPOVER);
1139
midori_browser_edit_bookmark_response_cb (dialog, GTK_RESPONSE_ACCEPT, browser);
1092
1143
/* Private function, used by MidoriBookmarks and MidoriHistory */
1093
1144
/* static */ gboolean
1116
1169
title = new_bookmark ? _("New Folder") : _("Edit Folder");
1118
1171
title = new_bookmark ? _("New Bookmark") : _("Edit Bookmark");
1172
#if GTK_CHECK_VERSION (3, 12, 0)
1120
1173
if (proxy != NULL)
1122
/* FIXME: granite: should return GtkWidget* like GTK+ */
1123
dialog = (GtkWidget*)granite_widgets_pop_over_new ();
1124
granite_widgets_pop_over_move_to_widget (
1125
GRANITE_WIDGETS_POP_OVER (dialog), proxy, TRUE);
1175
dialog = gtk_popover_new (proxy);
1176
content_area = gtk_box_new (GTK_ORIENTATION_VERTICAL, 6);
1177
gtk_container_add (GTK_CONTAINER (dialog), content_area);
1178
actions = gtk_hbox_new (FALSE, 6);
1179
gtk_box_pack_end (GTK_BOX (content_area), actions, TRUE, TRUE, 0);
1180
accept = gtk_button_new_from_stock (new_bookmark ? GTK_STOCK_ADD : GTK_STOCK_SAVE);
1181
gtk_box_pack_end (GTK_BOX (actions), accept, FALSE, FALSE, 0);
1182
g_signal_connect (accept, "clicked", G_CALLBACK (midori_browser_edit_bookmark_button_cb), browser);
1130
1187
dialog = gtk_dialog_new_with_buttons (title, GTK_WINDOW (browser),
1131
1188
GTK_DIALOG_DESTROY_WITH_PARENT | GTK_DIALOG_NO_SEPARATOR, NULL, NULL);
1189
content_area = gtk_dialog_get_content_area (GTK_DIALOG (dialog));
1190
actions = gtk_hbox_new (FALSE, 0);
1191
gtk_box_pack_end (GTK_BOX (content_area), actions, TRUE, TRUE, 0);
1192
gtk_dialog_add_buttons (GTK_DIALOG (dialog),
1193
GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
1194
new_bookmark ? GTK_STOCK_ADD : GTK_STOCK_SAVE, GTK_RESPONSE_ACCEPT, NULL);
1195
gtk_window_set_icon_name (GTK_WINDOW (dialog),
1196
new_bookmark ? GTK_STOCK_ADD : GTK_STOCK_REMOVE);
1197
gtk_dialog_set_default_response (GTK_DIALOG (dialog), GTK_RESPONSE_ACCEPT);
1198
g_signal_connect (dialog, "response", G_CALLBACK (midori_browser_edit_bookmark_response_cb), browser);
1199
accept = gtk_dialog_get_widget_for_response (GTK_DIALOG (dialog), GTK_RESPONSE_ACCEPT);
1133
content_area = gtk_dialog_get_content_area (GTK_DIALOG (dialog));
1134
gtk_container_set_border_width (GTK_CONTAINER (dialog), 6);
1135
gtk_dialog_add_buttons (GTK_DIALOG (dialog),
1136
GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
1137
new_bookmark ? GTK_STOCK_ADD : GTK_STOCK_SAVE, GTK_RESPONSE_ACCEPT, NULL);
1201
gtk_container_set_border_width (GTK_CONTAINER (dialog), 12);
1139
1203
if (!is_folder)
1140
1204
label = gtk_label_new (_("Type a name for this bookmark, and choose where to keep it."));
1165
1227
(!bookmark_or_parent
1167
1229
: katze_item_get_meta_integer (bookmark_or_parent, "id")));
1230
g_object_set_data (G_OBJECT (dialog), "new-bookmark", bookmark);
1232
g_object_set_data_full (G_OBJECT (dialog), "bookmark", bookmark, (GDestroyNotify)g_object_unref);
1170
1234
entry_title = gtk_entry_new ();
1171
1235
gtk_entry_set_activates_default (GTK_ENTRY (entry_title), TRUE);
1172
1236
value = katze_item_get_name (bookmark);
1173
1237
gtk_entry_set_text (GTK_ENTRY (entry_title), katze_str_non_null (value));
1174
1238
midori_browser_edit_bookmark_title_changed_cb (GTK_ENTRY (entry_title),
1175
GTK_DIALOG (dialog));
1176
1240
g_signal_connect (entry_title, "changed",
1177
G_CALLBACK (midori_browser_edit_bookmark_title_changed_cb), dialog);
1241
G_CALLBACK (midori_browser_edit_bookmark_title_changed_cb), accept);
1178
1242
gtk_box_pack_start (GTK_BOX (vbox), entry_title, FALSE, FALSE, 0);
1243
g_object_set_data (G_OBJECT (dialog), "entry-title", entry_title);
1180
1245
entry_uri = NULL;
1181
1246
if (!is_folder)
1183
entry_uri = katze_uri_entry_new (
1184
gtk_dialog_get_widget_for_response (GTK_DIALOG (dialog), GTK_RESPONSE_ACCEPT));
1248
entry_uri = katze_uri_entry_new (accept);
1185
1249
gtk_entry_set_activates_default (GTK_ENTRY (entry_uri), TRUE);
1186
1250
gtk_entry_set_text (GTK_ENTRY (entry_uri), katze_item_get_uri (bookmark));
1187
1251
gtk_box_pack_start (GTK_BOX (vbox), entry_uri, FALSE, FALSE, 0);
1252
g_object_set_data (G_OBJECT (dialog), "entry-uri", entry_uri);
1190
1255
combo_folder = midori_bookmark_folder_button_new (browser->bookmarks,
1191
1256
katze_item_get_meta_integer (bookmark, "parentid"));
1192
1257
gtk_box_pack_start (GTK_BOX (vbox), combo_folder, FALSE, FALSE, 0);
1258
g_object_set_data (G_OBJECT (dialog), "combo-folder", combo_folder);
1194
1260
hbox = gtk_hbox_new (FALSE, 6);
1195
1261
gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 0);
1197
1263
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (check_toolbar),
1198
1264
katze_item_get_meta_boolean (bookmark, "toolbar"));
1199
1265
gtk_box_pack_start (GTK_BOX (hbox), check_toolbar, FALSE, FALSE, 0);
1266
g_object_set_data (G_OBJECT (dialog), "check-toolbar", check_toolbar);
1201
1268
if (new_bookmark && !is_folder)
1203
hbox = gtk_hbox_new (FALSE, 6);
1204
gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 0);
1206
1270
label = gtk_button_new_with_mnemonic (_("Add to _Speed Dial"));
1207
1271
g_signal_connect (label, "clicked",
1208
1272
G_CALLBACK (midori_browser_edit_bookmark_add_speed_dial_cb), bookmark);
1209
gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 0);
1273
gtk_box_pack_start (GTK_BOX (actions), label, FALSE, FALSE, 0);
1211
1275
/* FIXME: There's no API for extending the bookmark dialog */
1212
1276
GtkAction* action = _action_by_name (browser, "CreateLauncher");
1216
1280
g_object_set_data (G_OBJECT (label), "midori-action", action);
1217
1281
g_signal_connect (label, "clicked",
1218
1282
G_CALLBACK (midori_browser_edit_bookmark_create_launcher_cb), bookmark);
1219
gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 0);
1283
gtk_box_pack_start (GTK_BOX (actions), label, FALSE, FALSE, 0);
1223
1287
gtk_widget_show_all (content_area);
1225
gtk_dialog_set_default_response (GTK_DIALOG (dialog), GTK_RESPONSE_ACCEPT);
1226
if (midori_dialog_run (GTK_DIALOG (dialog)) == GTK_RESPONSE_ACCEPT)
1230
katze_item_set_name (bookmark,
1231
gtk_entry_get_text (GTK_ENTRY (entry_title)));
1232
katze_item_set_meta_integer (bookmark, "toolbar",
1233
gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (check_toolbar)));
1235
katze_item_set_uri (bookmark,
1236
gtk_entry_get_text (GTK_ENTRY (entry_uri)));
1238
selected = midori_bookmark_folder_button_get_active (combo_folder);
1239
katze_item_set_meta_integer (bookmark, "parentid", selected);
1242
midori_bookmarks_db_add_item (browser->bookmarks, bookmark);
1244
midori_bookmarks_db_update_item (browser->bookmarks, bookmark);
1246
return_status = TRUE;
1249
gtk_widget_destroy (dialog);
1288
gtk_widget_show (dialog);
1250
1290
return return_status;