static void custom_command_entry_changed_cb (GtkEntry *entry) { const char *command; GError *error = NULL; command = gtk_entry_get_text (entry); if (g_shell_parse_argv (command, NULL, NULL, &error)) { gtk_entry_set_icon_from_stock (entry, GTK_PACK_END, NULL); } else { char *tooltip; gtk_entry_set_icon_from_stock (entry, GTK_PACK_END, GTK_STOCK_DIALOG_WARNING); tooltip = g_strdup_printf (_("Error parsing command: %s"), error->message); gtk_entry_set_icon_tooltip_text (entry, GTK_PACK_END, tooltip); g_free (tooltip); g_error_free (error); } }
static void search_by_name (GtkWidget *item, GtkEntry *entry) { gtk_entry_set_icon_tooltip_text (entry, GTK_ENTRY_ICON_PRIMARY, "Search by name\n" "Click here to change the search type"); gtk_entry_set_placeholder_text (entry, "name"); }
static gboolean validate_entry (GtkEntry *entry, const gchar *str) { gint argcp = 0; gchar **argvp; gboolean ret = FALSE; if (g_shell_parse_argv (str, &argcp, &argvp, NULL)) { if (argcp > 0) { gchar *path_exec = g_find_program_in_path (argvp[0]); if (path_exec) { ret = TRUE; } else { if (!g_file_test (str, G_FILE_TEST_IS_DIR) && g_file_test (str, G_FILE_TEST_IS_EXECUTABLE)) { ret = TRUE; } } g_free (path_exec); } } g_strfreev (argvp); if (ret) { gtk_entry_set_icon_from_icon_name (entry, GTK_ENTRY_ICON_SECONDARY, "ok"); gtk_entry_set_icon_tooltip_text (entry, GTK_ENTRY_ICON_SECONDARY, _("Valid")); } else { gtk_entry_set_icon_from_icon_name (entry, GTK_ENTRY_ICON_SECONDARY, "stop"); gtk_entry_set_icon_tooltip_text (entry, GTK_ENTRY_ICON_SECONDARY, _("Not a valid executable. Spaces in the file path must be escaped with backslash (\\).")); } return ret; }
static void search_by_description (GtkWidget *item, GtkEntry *entry) { gtk_entry_set_icon_from_stock (entry, GTK_ENTRY_ICON_PRIMARY, GTK_STOCK_EDIT); gtk_entry_set_icon_tooltip_text (entry, GTK_ENTRY_ICON_PRIMARY, "Search by description\n" "Click here to change the search type"); }
static void search_by_file (GtkWidget *item, GtkEntry *entry) { gtk_entry_set_icon_from_stock (entry, GTK_ENTRY_ICON_PRIMARY, GTK_STOCK_OPEN); gtk_entry_set_icon_tooltip_text (entry, GTK_ENTRY_ICON_PRIMARY, "Search by file name\n" "Click here to change the search type"); }
void _gtk_entry_use_as_password_entry (GtkEntry *entry) { gtk_entry_set_visibility (entry, FALSE); gtk_entry_set_icon_from_icon_name (entry, GTK_ENTRY_ICON_SECONDARY, "security-medium-symbolic"); gtk_entry_set_icon_activatable (entry, GTK_ENTRY_ICON_SECONDARY, TRUE); gtk_entry_set_icon_tooltip_text (entry, GTK_ENTRY_ICON_SECONDARY, _("Change password visibility")); g_signal_connect (entry, "icon-press", G_CALLBACK (password_entry_icon_press_cb), NULL); }
static void presence_chooser_set_favorite_icon (EmpathyPresenceChooser *self) { GtkWidget *entry; PresenceChooserEntryType type; entry = gtk_bin_get_child (GTK_BIN (self)); type = presence_chooser_get_entry_type (self); if (type == ENTRY_TYPE_CUSTOM || type == ENTRY_TYPE_SAVED) { if (presence_chooser_is_preset (self)) { /* saved entries can be removed from the list */ gtk_entry_set_icon_from_icon_name (GTK_ENTRY (entry), GTK_ENTRY_ICON_SECONDARY, "empathy-starred"); gtk_entry_set_icon_tooltip_text (GTK_ENTRY (entry), GTK_ENTRY_ICON_SECONDARY, _("Click to remove this status as a favorite")); } else { /* custom entries can be favorited */ gtk_entry_set_icon_from_icon_name (GTK_ENTRY (entry), GTK_ENTRY_ICON_SECONDARY, "empathy-unstarred"); gtk_entry_set_icon_tooltip_text (GTK_ENTRY (entry), GTK_ENTRY_ICON_SECONDARY, _("Click to make this status a favorite")); } } else { /* built-in entries cannot be favorited */ gtk_entry_set_icon_from_stock (GTK_ENTRY (entry), GTK_ENTRY_ICON_SECONDARY, NULL); gtk_entry_set_icon_tooltip_text (GTK_ENTRY (entry), GTK_ENTRY_ICON_SECONDARY, NULL); } }
static void presence_chooser_set_status_editing (EmpathyPresenceChooser *self, gboolean editing) { EmpathyPresenceChooserPriv *priv = GET_PRIV (self); GtkWidget *entry; if (priv->block_set_editing) { return; } entry = gtk_bin_get_child (GTK_BIN (self)); if (editing) { priv->editing_status = TRUE; gtk_entry_set_icon_from_stock (GTK_ENTRY (entry), GTK_ENTRY_ICON_SECONDARY, GTK_STOCK_OK); gtk_entry_set_icon_tooltip_text (GTK_ENTRY (entry), GTK_ENTRY_ICON_SECONDARY, _("Set status")); gtk_entry_set_icon_sensitive (GTK_ENTRY (entry), GTK_ENTRY_ICON_PRIMARY, FALSE); } else { GtkWidget *window; presence_chooser_set_favorite_icon (self); gtk_entry_set_icon_sensitive (GTK_ENTRY (entry), GTK_ENTRY_ICON_PRIMARY, TRUE); /* attempt to get the toplevel for this widget */ window = gtk_widget_get_toplevel (GTK_WIDGET (self)); if (GTK_WIDGET_TOPLEVEL (window) && GTK_IS_WINDOW (window)) { /* unset the focus */ gtk_window_set_focus (GTK_WINDOW (window), NULL); } /* see presence_chooser_entry_focus_out_cb () * for what this does */ if (priv->focus_out_idle_source != 0) { g_source_remove (priv->focus_out_idle_source); priv->focus_out_idle_source = 0; } gtk_editable_set_position (GTK_EDITABLE (entry), 0); priv->editing_status = FALSE; } }
static void custom_entry_changed_cb (GtkEditable *entry, gpointer user_data) { NemoMimeApplicationChooser *chooser = user_data; const gchar *entry_text = gtk_entry_get_text (GTK_ENTRY (entry)); gboolean empty = g_strcmp0 (entry_text, "") == 0; if (!empty && validate_entry (GTK_ENTRY (entry), entry_text)) { GAppInfo *default_app; gchar *cl = g_strdup_printf ("%s", entry_text); GAppInfo *info = g_app_info_create_from_commandline (cl, get_nice_name (cl), G_APP_INFO_CREATE_NONE, NULL); default_app = g_app_info_get_default_for_type (chooser->details->content_type, FALSE); gtk_widget_set_sensitive (chooser->details->set_as_default_button, !g_app_info_equal (info, default_app)); gtk_widget_set_sensitive (chooser->details->add_button, app_info_can_add (info, chooser->details->content_type)); g_object_unref (default_app); if (chooser->details->custom_info != NULL) { g_object_unref (chooser->details->custom_info); chooser->details->custom_info = NULL; } chooser->details->custom_info = info; } else { if (chooser->details->custom_info != NULL) { g_object_unref (chooser->details->custom_info); chooser->details->custom_info = NULL; } if (empty) { gtk_entry_set_icon_from_icon_name (GTK_ENTRY (entry), GTK_ENTRY_ICON_SECONDARY, NULL); gtk_entry_set_icon_tooltip_text (GTK_ENTRY (entry), GTK_ENTRY_ICON_SECONDARY, NULL); } gtk_widget_set_sensitive (chooser->details->set_as_default_button, FALSE); gtk_widget_set_sensitive (chooser->details->add_button, FALSE); } }
/* * entry_check_content_mask: * @entry: the entry for which to check the mask * @user_data: user data set when the signal was connected * * Display an icon in the entry if the current text contains an invalid mask. */ static void entry_check_content_mask (GtkEntry *entry, gpointer user_data) { gchar *tmp = NULL; gchar *mask = NULL; g_return_if_fail (entry != NULL); mask = g_strdup (gtk_entry_get_text (entry)); if (et_str_empty (mask)) goto Bad_Mask; while (mask) { if ( (tmp=strrchr(mask,'%'))==NULL ) { /* There is no more code. */ /* No code in mask is accepted. */ goto Good_Mask; } if (strlen(tmp)>1 && (tmp[1]=='t' || tmp[1]=='a' || tmp[1]=='b' || tmp[1]=='y' || tmp[1]=='g' || tmp[1]=='n' || tmp[1]=='l' || tmp[1]=='c' || tmp[1]=='i')) { /* The code is valid. */ /* No separator is accepted. */ *(mask+strlen(mask)-strlen(tmp)) = '\0'; }else { goto Bad_Mask; } } Bad_Mask: g_free(mask); gtk_entry_set_icon_from_icon_name (entry, GTK_ENTRY_ICON_SECONDARY, "emblem-unreadable"); gtk_entry_set_icon_tooltip_text (entry, GTK_ENTRY_ICON_SECONDARY, _("Invalid scanner mask")); return; Good_Mask: g_free(mask); gtk_entry_set_icon_from_icon_name (entry, GTK_ENTRY_ICON_SECONDARY, NULL); return; }
static void change_password_storage_icon (GtkWidget *passwd_entry, MenuItem item) { const char *old_pwd; gboolean ask_mode; g_return_if_fail (item >= 0 && item <= ITEM_STORAGE_MAX); gtk_entry_set_icon_from_icon_name (GTK_ENTRY (passwd_entry), GTK_ENTRY_ICON_SECONDARY, icon_name_table[item]); gtk_entry_set_icon_tooltip_text (GTK_ENTRY (passwd_entry), GTK_ENTRY_ICON_SECONDARY, gettext (icon_desc_table[item])); /* We want to make entry insensitive when ITEM_STORAGE_ASK is selected * Unfortunately, making GtkEntry insensitive will also make the icon * insensitive, which prevents user from reverting the action. * Let's workaround that by disabling focus for entry instead of * sensitivity change. */ ask_mode = !!g_object_get_data (G_OBJECT (passwd_entry), ASK_MODE_TAG); if ( (item == ITEM_STORAGE_ASK && !ask_mode) || item == ITEM_STORAGE_UNUSED) { /* Store the old password */ old_pwd = gtk_entry_get_text (GTK_ENTRY (passwd_entry)); if (old_pwd && *old_pwd) g_object_set_data_full (G_OBJECT (passwd_entry), "password-old", g_strdup (old_pwd), g_free_str0); gtk_entry_set_text (GTK_ENTRY (passwd_entry), ""); if (gtk_widget_is_focus (passwd_entry)) gtk_widget_child_focus ((gtk_widget_get_toplevel (passwd_entry)), GTK_DIR_TAB_BACKWARD); gtk_widget_set_can_focus (passwd_entry, FALSE); } else { /* Set the old password to the entry */ old_pwd = g_object_get_data (G_OBJECT (passwd_entry), "password-old"); if (old_pwd && *old_pwd) gtk_entry_set_text (GTK_ENTRY (passwd_entry), old_pwd); g_object_set_data (G_OBJECT (passwd_entry), "password-old", NULL); if (!gtk_widget_get_can_focus (passwd_entry)) { gtk_widget_set_can_focus (passwd_entry, TRUE); gtk_widget_grab_focus (passwd_entry); } } }
static void ide_editor_spell_widget_init (IdeEditorSpellWidget *self) { gtk_widget_init_template (GTK_WIDGET (self)); self->dict = ide_editor_spell_dict_new (NULL); self->view_spellchecker_set = FALSE; /* FIXME: do not work, Gtk+ bug */ gtk_entry_set_icon_tooltip_text (self->word_entry, GTK_ENTRY_ICON_SECONDARY, _("The word is not in the dictionary")); g_signal_connect_swapped (self->dict_words_list, "key-press-event", G_CALLBACK (dict_row_key_pressed_event_cb), self); }
void set_entry_validation_error (GtkEntry *entry, const gchar *text) { g_object_set (entry, "caps-lock-warning", FALSE, NULL); gtk_entry_set_icon_from_icon_name (entry, GTK_ENTRY_ICON_SECONDARY, "dialog-warning-symbolic"); gtk_entry_set_icon_activatable (entry, GTK_ENTRY_ICON_SECONDARY, TRUE); g_signal_connect (entry, "icon-release", G_CALLBACK (icon_released), FALSE); g_signal_connect (entry, "query-tooltip", G_CALLBACK (query_tooltip), NULL); g_object_set (entry, "has-tooltip", TRUE, NULL); gtk_entry_set_icon_tooltip_text (entry, GTK_ENTRY_ICON_SECONDARY, text); }
static void custom_command_entry_changed_cb (GtkEntry *entry) { const char *command; gs_free_error GError *error = NULL; command = gtk_entry_get_text (entry); if (command[0] == '\0' || g_shell_parse_argv (command, NULL, NULL, &error)) { gtk_entry_set_icon_from_icon_name (entry, GTK_PACK_END, NULL); } else { gs_free char *tooltip; gtk_entry_set_icon_from_icon_name (entry, GTK_PACK_END, "dialog-warning"); tooltip = g_strdup_printf (_("Error parsing command: %s"), error->message); gtk_entry_set_icon_tooltip_text (entry, GTK_PACK_END, tooltip); } }
static void search_entry_changed_cb (GtkEditable *editable, YGtkHelpDialog *dialog) { static GdkColor red = { 0, 255 << 8, 102 << 8, 102 << 8 }; static GdkColor white = { 0, 0xffff, 0xffff, 0xffff }; static GdkColor yellow = { 0, 0xf7f7, 0xf7f7, 0xbdbd }; static GdkColor black = { 0, 0, 0, 0 }; GtkWidget *widget = GTK_WIDGET (editable); GtkEntry *entry = GTK_ENTRY (editable); const gchar *text = gtk_entry_get_text (entry); gboolean found = ygtk_html_wrap_search (dialog->help_text, text); if (found && *text) { gtk_widget_modify_base (widget, GTK_STATE_NORMAL, &yellow); gtk_widget_modify_text (widget, GTK_STATE_NORMAL, &black); } else if (found) { // revert gtk_widget_modify_base (widget, GTK_STATE_NORMAL, NULL); gtk_widget_modify_text (widget, GTK_STATE_NORMAL, NULL); } else { gtk_widget_modify_base (widget, GTK_STATE_NORMAL, &red); gtk_widget_modify_text (widget, GTK_STATE_NORMAL, &white); gtk_widget_error_bell (widget); } gboolean showIcon = *text; // show clear icon if text if (showIcon != gtk_entry_get_icon_activatable (entry, GTK_ENTRY_ICON_SECONDARY)) { gtk_entry_set_icon_activatable (entry, GTK_ENTRY_ICON_SECONDARY, showIcon); gtk_entry_set_icon_from_stock (entry, GTK_ENTRY_ICON_SECONDARY, showIcon ? GTK_STOCK_CLEAR : NULL); if (showIcon) gtk_entry_set_icon_tooltip_text (entry, GTK_ENTRY_ICON_SECONDARY, _("Clear")); } }
static void egg_find_bar_init (EggFindBar *find_bar) { EggFindBarPrivate *priv; GtkWidget *label; GtkWidget *alignment; GtkWidget *box; GtkToolItem *item; GtkWidget *arrow; /* Data */ priv = EGG_FIND_BAR_GET_PRIVATE (find_bar); find_bar->priv = priv; priv->search_string = NULL; gtk_toolbar_set_style (GTK_TOOLBAR (find_bar), GTK_TOOLBAR_BOTH_HORIZ); /* Find: |_____| */ item = gtk_tool_item_new (); box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 12); alignment = gtk_alignment_new (0.0, 0.5, 1.0, 0.0); gtk_alignment_set_padding (GTK_ALIGNMENT (alignment), 0, 0, 2, 2); label = gtk_label_new_with_mnemonic (_("Find:")); priv->find_entry = gtk_entry_new (); gtk_entry_set_width_chars (GTK_ENTRY (priv->find_entry), 32); gtk_entry_set_max_length (GTK_ENTRY (priv->find_entry), 512); gtk_label_set_mnemonic_widget (GTK_LABEL (label), priv->find_entry); /* Find options */ gtk_entry_set_icon_from_stock (GTK_ENTRY (priv->find_entry), GTK_ENTRY_ICON_PRIMARY, GTK_STOCK_FIND); gtk_entry_set_icon_activatable (GTK_ENTRY (priv->find_entry), GTK_ENTRY_ICON_PRIMARY, TRUE); gtk_entry_set_icon_tooltip_text (GTK_ENTRY (priv->find_entry), GTK_ENTRY_ICON_PRIMARY, _("Find options")); /* Prev */ arrow = gtk_arrow_new (GTK_ARROW_LEFT, GTK_SHADOW_NONE); priv->previous_button = gtk_tool_button_new (arrow, Q_("Find Pre_vious")); gtk_tool_button_set_use_underline (GTK_TOOL_BUTTON (priv->previous_button), TRUE); gtk_tool_item_set_is_important (priv->previous_button, TRUE); gtk_widget_set_tooltip_text (GTK_WIDGET (priv->previous_button), _("Find previous occurrence of the search string")); /* Next */ arrow = gtk_arrow_new (GTK_ARROW_RIGHT, GTK_SHADOW_NONE); priv->next_button = gtk_tool_button_new (arrow, Q_("Find Ne_xt")); gtk_tool_button_set_use_underline (GTK_TOOL_BUTTON (priv->next_button), TRUE); gtk_tool_item_set_is_important (priv->next_button, TRUE); gtk_widget_set_tooltip_text (GTK_WIDGET (priv->next_button), _("Find next occurrence of the search string")); /* Separator*/ priv->status_separator = gtk_separator_tool_item_new(); /* Status */ priv->status_item = gtk_tool_item_new(); gtk_tool_item_set_expand (priv->status_item, TRUE); priv->status_label = gtk_label_new (NULL); gtk_label_set_ellipsize (GTK_LABEL (priv->status_label), PANGO_ELLIPSIZE_END); gtk_misc_set_alignment (GTK_MISC (priv->status_label), 0.0, 0.5); g_signal_connect (priv->find_entry, "changed", G_CALLBACK (entry_changed_callback), find_bar); g_signal_connect (priv->find_entry, "activate", G_CALLBACK (entry_activate_callback), find_bar); g_signal_connect (priv->find_entry, "icon-release", G_CALLBACK (entry_icon_release_callback), find_bar); g_signal_connect (priv->find_entry, "populate-popup", G_CALLBACK (entry_populate_popup_callback), find_bar); g_signal_connect (priv->next_button, "clicked", G_CALLBACK (next_clicked_callback), find_bar); g_signal_connect (priv->previous_button, "clicked", G_CALLBACK (previous_clicked_callback), find_bar); gtk_box_pack_start (GTK_BOX (box), label, FALSE, FALSE, 0); gtk_box_pack_start (GTK_BOX (box), priv->find_entry, TRUE, TRUE, 0); gtk_container_add (GTK_CONTAINER (alignment), box); gtk_container_add (GTK_CONTAINER (item), alignment); gtk_toolbar_insert (GTK_TOOLBAR (find_bar), item, -1); gtk_toolbar_insert (GTK_TOOLBAR (find_bar), priv->previous_button, -1); gtk_toolbar_insert (GTK_TOOLBAR (find_bar), priv->next_button, -1); gtk_toolbar_insert (GTK_TOOLBAR (find_bar), priv->status_separator, -1); gtk_container_add (GTK_CONTAINER (priv->status_item), priv->status_label); gtk_toolbar_insert (GTK_TOOLBAR (find_bar), priv->status_item, -1); /* don't show status separator/label until they are set */ gtk_widget_show_all (GTK_WIDGET (item)); gtk_widget_show_all (GTK_WIDGET (priv->next_button)); gtk_widget_show_all (GTK_WIDGET (priv->previous_button)); gtk_widget_show (priv->status_label); }
int main (int argc, char **argv) { GtkWidget *window; GtkWidget *table; GtkWidget *label; GtkWidget *entry; GtkWidget *button; GIcon *icon; GtkTargetList *tlist; gtk_init (&argc, &argv); window = gtk_window_new (GTK_WINDOW_TOPLEVEL); gtk_window_set_title (GTK_WINDOW (window), "Gtk Entry Icons Test"); gtk_container_set_border_width (GTK_CONTAINER (window), 12); g_signal_connect (G_OBJECT (window), "destroy", G_CALLBACK (gtk_main_quit), NULL); table = gtk_table_new (2, 4, FALSE); gtk_container_add (GTK_CONTAINER (window), table); gtk_table_set_row_spacings (GTK_TABLE (table), 6); gtk_table_set_col_spacings (GTK_TABLE (table), 6); /* * Open File - Sets the icon using a GIcon */ label = gtk_label_new ("Open File:"); gtk_table_attach (GTK_TABLE (table), label, 0, 1, 0, 1, GTK_FILL, GTK_FILL, 0, 0); gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5); entry = gtk_entry_new (); gtk_table_attach (GTK_TABLE (table), entry, 1, 2, 0, 1, GTK_FILL | GTK_EXPAND, GTK_FILL, 0, 0); icon = g_themed_icon_new ("folder"); g_themed_icon_append_name (G_THEMED_ICON (icon), "gtk-directory"); gtk_entry_set_icon_from_gicon (GTK_ENTRY (entry), GTK_ENTRY_ICON_PRIMARY, icon); gtk_entry_set_icon_sensitive (GTK_ENTRY (entry), GTK_ENTRY_ICON_PRIMARY, FALSE); gtk_entry_set_icon_tooltip_text (GTK_ENTRY (entry), GTK_ENTRY_ICON_PRIMARY, "Open a file"); button = gtk_button_new_with_label ("Properties"); gtk_table_attach (GTK_TABLE (table), button, 2, 3, 0, 1, GTK_FILL, GTK_FILL, 0, 0); g_signal_connect (button, "clicked", G_CALLBACK (properties_cb), entry); /* * Save File - sets the icon using a stock id. */ label = gtk_label_new ("Save File:"); gtk_table_attach (GTK_TABLE (table), label, 0, 1, 1, 2, GTK_FILL, GTK_FILL, 0, 0); gtk_misc_set_alignment (GTK_MISC(label), 0.0, 0.5); entry = gtk_entry_new (); gtk_table_attach (GTK_TABLE (table), entry, 1, 2, 1, 2, GTK_FILL | GTK_EXPAND, GTK_FILL, 0, 0); gtk_entry_set_text (GTK_ENTRY (entry), "Right-to-left"); gtk_widget_set_direction (entry, GTK_TEXT_DIR_RTL); gtk_entry_set_icon_from_stock (GTK_ENTRY (entry), GTK_ENTRY_ICON_PRIMARY, GTK_STOCK_SAVE); gtk_entry_set_icon_tooltip_text (GTK_ENTRY (entry), GTK_ENTRY_ICON_PRIMARY, "Save a file"); tlist = gtk_target_list_new (NULL, 0); gtk_target_list_add_text_targets (tlist, 0); gtk_entry_set_icon_drag_source (GTK_ENTRY (entry), GTK_ENTRY_ICON_PRIMARY, tlist, GDK_ACTION_COPY); g_signal_connect_after (entry, "drag-begin", G_CALLBACK (drag_begin_cb), NULL); g_signal_connect (entry, "drag-data-get", G_CALLBACK (drag_data_get_cb), NULL); gtk_target_list_unref (tlist); button = gtk_button_new_with_label ("Properties"); gtk_table_attach (GTK_TABLE (table), button, 2, 3, 1, 2, GTK_FILL, GTK_FILL, 0, 0); g_signal_connect (button, "clicked", G_CALLBACK (properties_cb), entry); /* * Search - Uses a helper function */ label = gtk_label_new ("Search:"); gtk_table_attach (GTK_TABLE (table), label, 0, 1, 2, 3, GTK_FILL, GTK_FILL, 0, 0); gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5); entry = gtk_entry_new (); gtk_table_attach (GTK_TABLE (table), entry, 1, 2, 2, 3, GTK_FILL | GTK_EXPAND, GTK_FILL, 0, 0); gtk_entry_set_icon_from_stock (GTK_ENTRY (entry), GTK_ENTRY_ICON_PRIMARY, GTK_STOCK_FIND); gtk_entry_set_icon_from_stock (GTK_ENTRY (entry), GTK_ENTRY_ICON_SECONDARY, GTK_STOCK_CLEAR); g_signal_connect (entry, "icon-press", G_CALLBACK (clear_pressed), NULL); button = gtk_button_new_with_label ("Properties"); gtk_table_attach (GTK_TABLE (table), button, 2, 3, 2, 3, GTK_FILL, GTK_FILL, 0, 0); g_signal_connect (button, "clicked", G_CALLBACK (properties_cb), entry); /* * Password - Sets the icon using a stock id */ label = gtk_label_new ("Password:"******"Properties"); gtk_table_attach (GTK_TABLE (table), button, 2, 3, 3, 4, GTK_FILL, GTK_FILL, 0, 0); g_signal_connect (button, "clicked", G_CALLBACK (properties_cb), entry); /* Name - Does not set any icons. */ label = gtk_label_new ("Name:"); gtk_table_attach (GTK_TABLE (table), label, 0, 1, 4, 5, GTK_FILL, GTK_FILL, 0, 0); gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5); entry = gtk_entry_new (); gtk_table_attach (GTK_TABLE (table), entry, 1, 2, 4, 5, GTK_FILL | GTK_EXPAND, GTK_FILL, 0, 0); button = gtk_button_new_with_label ("Properties"); gtk_table_attach (GTK_TABLE (table), button, 2, 3, 4, 5, GTK_FILL, GTK_FILL, 0, 0); g_signal_connect (button, "clicked", G_CALLBACK (properties_cb), entry); gtk_widget_show_all (window); gtk_main(); return 0; }
static void ugtk_download_form_init_page1 (UgtkDownloadForm* dform, UgtkProxyForm* proxy) { GtkWidget* widget; GtkGrid* top_grid; GtkGrid* grid; GtkWidget* frame; GtkBox* top_vbox; GtkWidget* vbox; GtkWidget* hbox; dform->page1 = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0); top_vbox = (GtkBox*) dform->page1; gtk_container_set_border_width (GTK_CONTAINER (top_vbox), 2); top_grid = (GtkGrid*) gtk_grid_new (); gtk_box_pack_start (top_vbox, (GtkWidget*) top_grid, FALSE, FALSE, 0); // URL - entry widget = gtk_entry_new (); // gtk_entry_set_width_chars (GTK_ENTRY (widget), 20); // remove for GTK+ 3.12 gtk_entry_set_activates_default (GTK_ENTRY (widget), TRUE); g_object_set (widget, "margin-left", 1, "margin-right", 1, NULL); g_object_set (widget, "margin-top", 2, "margin-bottom", 2, NULL); g_object_set (widget, "hexpand", TRUE, NULL); gtk_grid_attach (top_grid, widget, 1, 0, 2, 1); g_signal_connect (GTK_EDITABLE (widget), "changed", G_CALLBACK (on_uri_entry_changed), dform); dform->uri_entry = widget; // URL - label widget = gtk_label_new_with_mnemonic (_("_URI:")); gtk_label_set_mnemonic_widget (GTK_LABEL(widget), dform->uri_entry); g_object_set (widget, "margin-left", 3, "margin-right", 3, NULL); g_object_set (widget, "margin-top", 2, "margin-bottom", 2, NULL); gtk_grid_attach (top_grid, widget, 0, 0, 1, 1); dform->uri_label = widget; // Mirrors - entry widget = gtk_entry_new (); // gtk_entry_set_width_chars (GTK_ENTRY (widget), 20); // remove for GTK+ 3.12 gtk_entry_set_activates_default (GTK_ENTRY (widget), TRUE); g_object_set (widget, "margin-left", 1, "margin-right", 1, NULL); g_object_set (widget, "margin-top", 2, "margin-bottom", 2, NULL); g_object_set (widget, "hexpand", TRUE, NULL); gtk_grid_attach (top_grid, widget, 1, 1, 2, 1); g_signal_connect (GTK_EDITABLE (widget), "changed", G_CALLBACK (on_uri_entry_changed), dform); dform->mirrors_entry = widget; // Mirrors - label widget = gtk_label_new_with_mnemonic (_("Mirrors:")); gtk_label_set_mnemonic_widget (GTK_LABEL(widget), dform->mirrors_entry); g_object_set (widget, "margin-left", 3, "margin-right", 3, NULL); g_object_set (widget, "margin-top", 2, "margin-bottom", 2, NULL); gtk_grid_attach (top_grid, widget, 0, 1, 1, 1); dform->mirrors_label = widget; // File - entry widget = gtk_entry_new (); gtk_entry_set_activates_default (GTK_ENTRY (widget), TRUE); g_object_set (widget, "margin", 1, "hexpand", TRUE, NULL); gtk_grid_attach (top_grid, widget, 1, 2, 2, 1); g_signal_connect (GTK_EDITABLE (widget), "changed", G_CALLBACK (on_entry_changed), dform); dform->file_entry = widget; // File - label widget = gtk_label_new_with_mnemonic (_("File:")); gtk_label_set_mnemonic_widget (GTK_LABEL (widget), dform->file_entry); g_object_set (widget, "margin-left", 3, "margin-right", 3, NULL); g_object_set (widget, "margin-top", 1, "margin-bottom", 1, NULL); gtk_grid_attach (top_grid, widget, 0, 2, 1, 1); dform->file_label = widget; // Folder - combo entry + icon dform->folder_combo = gtk_combo_box_text_new_with_entry (); dform->folder_entry = gtk_bin_get_child (GTK_BIN (dform->folder_combo)); widget = dform->folder_entry; gtk_entry_set_activates_default (GTK_ENTRY (widget), TRUE); #if GTK_MAJOR_VERSION >= 3 && GTK_MINOR_VERSION >= 10 gtk_entry_set_icon_from_icon_name (GTK_ENTRY (widget), GTK_ENTRY_ICON_SECONDARY, "folder"); #else gtk_entry_set_icon_from_stock (GTK_ENTRY (widget), GTK_ENTRY_ICON_SECONDARY, GTK_STOCK_DIRECTORY); #endif gtk_entry_set_icon_tooltip_text (GTK_ENTRY (widget), GTK_ENTRY_ICON_SECONDARY, _("Select Folder")); g_object_set (dform->folder_combo, "margin", 1, "hexpand", TRUE, NULL); gtk_grid_attach (top_grid, dform->folder_combo, 1, 3, 1, 1); g_signal_connect (widget, "icon-release", G_CALLBACK (on_select_folder), dform); g_signal_connect (GTK_EDITABLE (widget), "changed", G_CALLBACK (on_entry_changed), dform); // Folder - label widget = gtk_label_new_with_mnemonic (_("_Folder:")); gtk_label_set_mnemonic_widget(GTK_LABEL (widget), dform->folder_combo); g_object_set (widget, "margin-left", 3, "margin-right", 3, NULL); g_object_set (widget, "margin-top", 1, "margin-bottom", 1, NULL); gtk_grid_attach (top_grid, widget, 0, 3, 1, 1); // Referrer - entry widget = gtk_entry_new (); gtk_entry_set_activates_default (GTK_ENTRY (widget), TRUE); g_object_set (widget, "margin", 1, "hexpand", TRUE, NULL); gtk_grid_attach (top_grid, widget, 1, 4, 2, 1); g_signal_connect (GTK_EDITABLE (widget), "changed", G_CALLBACK (on_http_entry_changed), dform); dform->referrer_entry = widget; // Referrer - label widget = gtk_label_new_with_mnemonic (_("Referrer:")); gtk_label_set_mnemonic_widget (GTK_LABEL (widget), dform->referrer_entry); g_object_set (widget, "margin-left", 3, "margin-right", 3, NULL); g_object_set (widget, "margin-top", 1, "margin-bottom", 1, NULL); gtk_grid_attach (top_grid, widget, 0, 4, 1, 1); // dform->referrer_label = widget; // ---------------------------------------------------- // Connections // HBox for Connections hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 2); gtk_box_pack_start (top_vbox, hbox, FALSE, FALSE, 2); // connections - label // widget = gtk_label_new (_("connections")); // gtk_box_pack_end (GTK_BOX (hbox), widget, FALSE, FALSE, 2); // dform->label_connections = widget; // connections - spin button widget = gtk_spin_button_new_with_range (1.0, 16.0, 1.0); gtk_entry_set_activates_default (GTK_ENTRY (widget), TRUE); // gtk_entry_set_width_chars (GTK_ENTRY (widget), 3); // remove for GTK+ 3.12 gtk_box_pack_end (GTK_BOX (hbox), widget, FALSE, FALSE, 2); dform->spin_connections = widget; // "Max Connections:" - title label widget = gtk_label_new_with_mnemonic (_("_Max Connections:")); gtk_label_set_mnemonic_widget ((GtkLabel*)widget, dform->spin_connections); gtk_box_pack_end (GTK_BOX (hbox), widget, FALSE, FALSE, 2); dform->title_connections = widget; // ---------------------------------------------------- // HBox for "Status" and "Login" hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 2); gtk_box_pack_start (top_vbox, hbox, FALSE, FALSE, 2); // ---------------------------------------------------- // frame for Status (start mode) frame = gtk_frame_new (_("Status")); vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 2); gtk_container_set_border_width (GTK_CONTAINER (vbox), 2); gtk_container_add (GTK_CONTAINER (frame), vbox); gtk_box_pack_start (GTK_BOX (hbox), frame, FALSE, FALSE, 0); dform->radio_runnable = gtk_radio_button_new_with_mnemonic (NULL, _("_Runnable")); dform->radio_pause = gtk_radio_button_new_with_mnemonic_from_widget ( (GtkRadioButton*)dform->radio_runnable, _("P_ause")); gtk_box_pack_start (GTK_BOX (vbox), dform->radio_runnable, FALSE, FALSE, 0); gtk_box_pack_start (GTK_BOX (vbox), dform->radio_pause, FALSE, FALSE, 0); // ---------------------------------------------------- // frame for login frame = gtk_frame_new (_("Login")); grid = (GtkGrid*) gtk_grid_new (); gtk_container_set_border_width (GTK_CONTAINER (grid), 2); gtk_container_add (GTK_CONTAINER (frame), (GtkWidget*) grid); gtk_box_pack_start (GTK_BOX (hbox), frame, TRUE, TRUE, 2); // User - entry widget = gtk_entry_new (); gtk_entry_set_activates_default (GTK_ENTRY (widget), TRUE); g_object_set (widget, "margin", 1, "hexpand", TRUE, NULL); gtk_grid_attach (grid, widget, 1, 0, 1, 1); g_signal_connect (GTK_EDITABLE (widget), "changed", G_CALLBACK (on_entry_changed), dform); dform->username_entry = widget; // User - label widget = gtk_label_new (_("User:"******"margin-left", 2, "margin-right", 2, NULL); g_object_set (widget, "margin-top", 1, "margin-bottom", 1, NULL); gtk_grid_attach (grid, widget, 0, 0, 1, 1); // dform->username_label = widget; // Password - entry widget = gtk_entry_new (); gtk_entry_set_visibility (GTK_ENTRY (widget), FALSE); gtk_entry_set_activates_default (GTK_ENTRY (widget), TRUE); g_object_set (widget, "margin", 1, "hexpand", TRUE, NULL); gtk_grid_attach (grid, widget, 1, 1, 1, 1); g_signal_connect (GTK_EDITABLE (widget), "changed", G_CALLBACK (on_entry_changed), dform); dform->password_entry = widget; // Password - label widget = gtk_label_new (_("Password:"******"margin-left", 2, "margin-right", 2, NULL); g_object_set (widget, "margin-top", 1, "margin-bottom", 1, NULL); gtk_grid_attach (grid, widget, 0, 1, 1, 1); // dform->password_label = widget; // ---------------------------------------------------- // proxy // ug_proxy_widget_init (&dform->proxy_dform); if (proxy) { widget = proxy->self; gtk_box_pack_start (top_vbox, widget, FALSE, FALSE, 2); } }
static void ugtk_download_form_init_page2 (UgtkDownloadForm* dform) { GtkWidget* widget; GtkGrid* grid; dform->page2 = gtk_grid_new (); grid = (GtkGrid*) dform->page2; gtk_container_set_border_width (GTK_CONTAINER (grid), 2); // label - cookie file widget = gtk_label_new (_("Cookie file:")); gtk_misc_set_alignment (GTK_MISC (widget), 0.0, 0.5); // left, center g_object_set (widget, "margin-left", 2, "margin-right", 2, NULL); g_object_set (widget, "margin-top", 1, "margin-bottom", 1, NULL); gtk_grid_attach (grid, widget, 0, 0, 1, 1); dform->cookie_label = widget; // entry - cookie file widget = gtk_entry_new (); gtk_entry_set_activates_default (GTK_ENTRY (widget), TRUE); #if GTK_MAJOR_VERSION >= 3 && GTK_MINOR_VERSION >= 10 gtk_entry_set_icon_from_icon_name (GTK_ENTRY (widget), GTK_ENTRY_ICON_SECONDARY, "text-x-generic"); #else gtk_entry_set_icon_from_stock (GTK_ENTRY (widget), GTK_ENTRY_ICON_SECONDARY, GTK_STOCK_FILE); #endif gtk_entry_set_icon_tooltip_text (GTK_ENTRY (widget), GTK_ENTRY_ICON_SECONDARY, _("Select Cookie File")); g_object_set (widget, "margin", 1, "hexpand", TRUE, NULL); gtk_grid_attach (grid, widget, 1, 0, 3, 1); g_signal_connect (widget, "icon-release", G_CALLBACK (on_select_cookie), dform); g_signal_connect (GTK_EDITABLE (widget), "changed", G_CALLBACK (on_http_entry_changed), dform); dform->cookie_entry = widget; // label - post file widget = gtk_label_new (_("Post file:")); gtk_misc_set_alignment (GTK_MISC (widget), 0.0, 0.5); // left, center g_object_set (widget, "margin-left", 2, "margin-right", 2, NULL); g_object_set (widget, "margin-top", 1, "margin-bottom", 1, NULL); gtk_grid_attach (grid, widget, 0, 1, 1, 1); dform->post_label = widget; // entry - post file widget = gtk_entry_new (); gtk_entry_set_activates_default (GTK_ENTRY (widget), TRUE); #if GTK_MAJOR_VERSION >= 3 && GTK_MINOR_VERSION >= 10 gtk_entry_set_icon_from_icon_name (GTK_ENTRY (widget), GTK_ENTRY_ICON_SECONDARY, "text-x-generic"); #else gtk_entry_set_icon_from_stock (GTK_ENTRY (widget), GTK_ENTRY_ICON_SECONDARY, GTK_STOCK_FILE); #endif gtk_entry_set_icon_tooltip_text (GTK_ENTRY (widget), GTK_ENTRY_ICON_SECONDARY, _("Select Post File")); g_object_set (widget, "margin", 1, "hexpand", TRUE, NULL); gtk_grid_attach (grid, widget, 1, 1, 3, 1); g_signal_connect (widget, "icon-release", G_CALLBACK (on_select_post), dform); g_signal_connect (GTK_EDITABLE (widget), "changed", G_CALLBACK (on_http_entry_changed), dform); dform->post_entry = widget; // label - user agent widget = gtk_label_new (_("User Agent:")); gtk_misc_set_alignment (GTK_MISC (widget), 0.0, 0.5); // left, center g_object_set (widget, "margin-left", 2, "margin-right", 2, NULL); g_object_set (widget, "margin-top", 1, "margin-bottom", 1, NULL); gtk_grid_attach (grid, widget, 0, 2, 1, 1); dform->agent_label = widget; // entry - user agent widget = gtk_entry_new (); gtk_entry_set_activates_default (GTK_ENTRY (widget), TRUE); g_object_set (widget, "margin", 1, "hexpand", TRUE, NULL); gtk_grid_attach (grid, widget, 1, 2, 3, 1); g_signal_connect (GTK_EDITABLE (widget), "changed", G_CALLBACK (on_http_entry_changed), dform); dform->agent_entry = widget; // Retry limit - label widget = gtk_label_new_with_mnemonic (_("Retry _limit:")); gtk_label_set_mnemonic_widget (GTK_LABEL (widget), dform->spin_retry); g_object_set (widget, "margin-left", 2, "margin-right", 2, NULL); g_object_set (widget, "margin-top", 1, "margin-bottom", 1, NULL); gtk_grid_attach (grid, widget, 0, 3, 2, 1); // Retry limit - spin button widget = gtk_spin_button_new_with_range (0.0, 99.0, 1.0); gtk_entry_set_activates_default (GTK_ENTRY (widget), TRUE); g_object_set (widget, "margin-left", 2, "margin-right", 2, NULL); g_object_set (widget, "margin-top", 1, "margin-bottom", 1, NULL); gtk_grid_attach (grid, widget, 2, 3, 1, 1); g_signal_connect (GTK_EDITABLE (widget), "changed", G_CALLBACK (on_spin_changed), dform); dform->spin_retry = widget; // counts - label widget = gtk_label_new (_("counts")); gtk_misc_set_alignment (GTK_MISC (widget), 0.0, 0.5); g_object_set (widget, "margin-left", 2, "margin-right", 2, NULL); g_object_set (widget, "margin-top", 1, "margin-bottom", 1, NULL); gtk_grid_attach (grid, widget, 3, 3, 1, 1); // Retry delay - label widget = gtk_label_new_with_mnemonic (_("Retry _delay:")); gtk_label_set_mnemonic_widget (GTK_LABEL (widget), dform->spin_delay); g_object_set (widget, "margin-left", 2, "margin-right", 2, NULL); g_object_set (widget, "margin-top", 1, "margin-bottom", 1, NULL); gtk_grid_attach (grid, widget, 0, 4, 2, 1); // Retry delay - spin button widget = gtk_spin_button_new_with_range (0.0, 600.0, 1.0); gtk_entry_set_activates_default (GTK_ENTRY (widget), TRUE); g_object_set (widget, "margin-left", 2, "margin-right", 2, NULL); g_object_set (widget, "margin-top", 1, "margin-bottom", 1, NULL); gtk_grid_attach (grid, widget, 2, 4, 1, 1); g_signal_connect (GTK_EDITABLE (widget), "changed", G_CALLBACK (on_spin_changed), dform); dform->spin_delay = widget; // seconds - label widget = gtk_label_new (_("seconds")); gtk_misc_set_alignment (GTK_MISC (widget), 0.0, 0.5); g_object_set (widget, "margin-left", 2, "margin-right", 2, NULL); g_object_set (widget, "margin-top", 1, "margin-bottom", 1, NULL); gtk_grid_attach (grid, widget, 3, 4, 1, 1); // label - Max upload speed widget = gtk_label_new (_("Max upload speed:")); g_object_set (widget, "margin-left", 2, "margin-right", 2, NULL); g_object_set (widget, "margin-top", 1, "margin-bottom", 1, NULL); gtk_grid_attach (grid, widget, 0, 5, 2, 1); // spin - Max upload speed widget = gtk_spin_button_new_with_range (0, 99999999, 1); gtk_entry_set_activates_default (GTK_ENTRY (widget), TRUE); gtk_entry_set_width_chars (GTK_ENTRY (widget), 8); g_object_set (widget, "margin", 1, NULL); gtk_grid_attach (grid, widget, 2, 5, 1, 1); dform->spin_upload_speed = (GtkSpinButton*) widget; // label - "KiB/s" widget = gtk_label_new (_("KiB/s")); gtk_misc_set_alignment (GTK_MISC (widget), 0.0, 0.5); // left, center g_object_set (widget, "margin", 2, "hexpand", TRUE, NULL); gtk_grid_attach (grid, widget, 3, 5, 1, 1); // label - Max download speed widget = gtk_label_new (_("Max download speed:")); g_object_set (widget, "margin-left", 2, "margin-right", 2, NULL); g_object_set (widget, "margin-top", 1, "margin-bottom", 1, NULL); gtk_grid_attach (grid, widget, 0, 6, 2, 1); // spin - Max download speed widget = gtk_spin_button_new_with_range (0, 99999999, 1); gtk_entry_set_activates_default (GTK_ENTRY (widget), TRUE); gtk_entry_set_width_chars (GTK_ENTRY (widget), 8); g_object_set (widget, "margin", 1, NULL); gtk_grid_attach (grid, widget, 2, 6, 1, 1); dform->spin_download_speed = (GtkSpinButton*) widget; // label - "KiB/s" widget = gtk_label_new (_("KiB/s")); gtk_misc_set_alignment (GTK_MISC (widget), 0.0, 0.5); // left, center g_object_set (widget, "margin", 2, "hexpand", TRUE, NULL); gtk_grid_attach (grid, widget, 3, 6, 1, 1); // Retrieve timestamp widget = gtk_check_button_new_with_label (_("Retrieve timestamp")); gtk_grid_attach (grid, widget, 0, 7, 3, 1); dform->timestamp = (GtkToggleButton*) widget; }