static void load_applet_from_command_line (void) { guint size = 24, orient = PANEL_ORIENTATION_TOP; gint i; g_assert (cli_iid != NULL); if (cli_size || cli_orient) { if (cli_size) { for (i = 0; i < G_N_ELEMENTS (size_items); i++) { if (strcmp (g_dpgettext2 (NULL, "Size", size_items[i].name), cli_size) == 0) { size = size_items[i].value; break; } } } if (cli_orient) { for (i = 0; i < G_N_ELEMENTS (orient_items); i++) { if (strcmp (g_dpgettext2 (NULL, "Orientation", orient_items[i].name), cli_orient) == 0) { orient = orient_items[i].value; break; } } } } g_print ("Loading %s\n", cli_iid); load_applet_into_window (cli_iid, cli_prefs_path, size, orient); }
static void dt_accel_paths_slider_iop_translated(char *s[], size_t n, dt_iop_module_so_t *module, const char* path) { snprintf(s[0], n, "<Darktable>/%s/%s/%s/%s", C_("accel", "image operations"), module->name(), g_dpgettext2(NULL, "accel", path), C_("accel", "increase")); snprintf(s[1], n, "<Darktable>/%s/%s/%s/%s", C_("accel", "image operations"), module->name(), g_dpgettext2(NULL, "accel", path), C_("accel", "decrease")); snprintf(s[2], n, "<Darktable>/%s/%s/%s/%s", C_("accel", "image operations"), module->name(), g_dpgettext2(NULL, "accel", path), C_("accel", "reset")); snprintf(s[3], n, "<Darktable>/%s/%s/%s/%s", C_("accel", "image operations"), module->name(), g_dpgettext2(NULL, "accel", path), C_("accel", "edit")); }
static void listStore_append(GtkListStore *listStore,const gchar *str, const gchar *translationContext, MakerDialogPropertyFlags propertyFlags){ GtkTreeIter iter; gtk_list_store_append (listStore, &iter); if (propertyFlags & MAKER_DIALOG_PROPERTY_FLAG_HAS_TRANSLATION){ if (translationContext || propertyFlags & MAKER_DIALOG_PROPERTY_FLAG_TRANSLATION_WITH_CONTEXT){ G_DEBUG_MSG(5,"*** str=%s, _(str)=%s",str,g_dpgettext2(NULL,translationContext,str)); gtk_list_store_set (listStore, &iter, 0, str, 1, g_dpgettext2(NULL,translationContext,str), -1); }else{ G_DEBUG_MSG(5,"*** str=%s, _(str)=%s",str,_(str)); gtk_list_store_set (listStore, &iter, 0, str, 1, _(str), -1); } }else{ G_DEBUG_MSG(5,"*** str=%s",str); gtk_list_store_set (listStore, &iter, 0, str, -1); } }
void gimp_action_group_add_enum_actions (GimpActionGroup *group, const gchar *msg_context, const GimpEnumActionEntry *entries, guint n_entries, GCallback callback) { gint i; g_return_if_fail (GIMP_IS_ACTION_GROUP (group)); for (i = 0; i < n_entries; i++) { GimpEnumAction *action; const gchar *label; const gchar *tooltip = NULL; if (! gimp_action_group_check_unique_action (group, entries[i].name)) continue; if (msg_context) { label = g_dpgettext2 (NULL, msg_context, entries[i].label); if (entries[i].tooltip) tooltip = g_dpgettext2 (NULL, msg_context, entries[i].tooltip); } else { label = gettext (entries[i].label); tooltip = gettext (entries[i].tooltip); } action = gimp_enum_action_new (entries[i].name, label, tooltip, entries[i].icon_name, entries[i].value, entries[i].value_variable); if (callback) g_signal_connect (action, "selected", callback, group->user_data); gtk_action_group_add_action_with_accel (GTK_ACTION_GROUP (group), GTK_ACTION (action), entries[i].accelerator); g_signal_emit (group, signals[ACTION_ADDED], 0, action); if (entries[i].help_id) g_object_set_qdata_full (G_OBJECT (action), GIMP_HELP_ID, g_strdup (entries[i].help_id), (GDestroyNotify) g_free); g_object_unref (action); } }
/** * gs_plugin_refine_app_category: */ static void gs_plugin_refine_app_category (GsPlugin *plugin, GsApp *app, const MenuSpecData *cat) { const gchar *menu_path[] = { NULL, NULL, NULL }; const MenuSpecData *msdata; gboolean ret = FALSE; gchar *tmp; guint i; /* find a sub-level category the app has */ msdata = menu_spec_get_data (); for (i = 0; msdata[i].path != NULL; i++) { tmp = g_strstr_len (msdata[i].path, -1, "::"); if (tmp == NULL) continue; if (!g_str_has_prefix (msdata[i].path, cat->path)) continue; ret = gs_app_has_category (app, tmp + 2); if (ret) { g_autofree gchar *msgctxt = NULL; msgctxt = g_strdup_printf ("Menu subcategory of %s", cat->text); menu_path[1] = g_dpgettext2 (GETTEXT_PACKAGE, msgctxt, msdata[i].text); break; } } /* the top-level category always exists */ menu_path[0] = gettext (cat->text); gs_app_set_menu_path (app, (gchar **) menu_path); }
static void setup_combo (GtkWidget *combo_box, ComboItem *items, const char *context, int nb_items) { GtkListStore *model; GtkTreeIter iter; GtkCellRenderer *renderer; int i; model = gtk_list_store_new (NUMBER_COLUMNS, G_TYPE_STRING, G_TYPE_INT); gtk_combo_box_set_model (GTK_COMBO_BOX (combo_box), GTK_TREE_MODEL (model)); for (i = 0; i < nb_items; i++) { gtk_list_store_append (model, &iter); gtk_list_store_set (model, &iter, COLUMN_TEXT, g_dpgettext2 (NULL, context, items [i].name), COLUMN_ITEM, items [i].value, -1); } renderer = gtk_cell_renderer_text_new (); gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (combo_box), renderer, TRUE); gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (combo_box), renderer, "text", COLUMN_TEXT, NULL); gtk_combo_box_set_active (GTK_COMBO_BOX (combo_box), 0); }
static JSBool gjs_dpgettext(JSContext *context, unsigned argc, jsval *vp) { jsval *argv = JS_ARGV(context, vp); char *domain; char *src_context; char *msgid; const char *translated; JSBool result; jsval retval; if (!gjs_parse_args (context, "dpgettext", "sss", argc, argv, "domain", &domain, "context", &src_context, "msgid", &msgid)) return JS_FALSE; translated = g_dpgettext2(domain, src_context, msgid); g_free (domain); g_free (src_context); result = gjs_string_from_utf8(context, translated, -1, &retval); if (result) JS_SET_RVAL(context, vp, retval); g_free (msgid); return result; }
static void dt_accel_path_view_translated(char *s, size_t n, dt_view_t *module, const char* path) { snprintf(s, n, "<Darktable>/%s/%s/%s", C_("accel", "views"), module->name(module), g_dpgettext2(NULL, "accel", path)); }
const gchar * _gimp_unit_get_plural (Gimp *gimp, GimpUnit unit) { g_return_val_if_fail ((unit < (GIMP_UNIT_END + gimp->n_user_units)) || (unit == GIMP_UNIT_PERCENT), gimp_unit_defs[GIMP_UNIT_INCH].plural); if (unit < GIMP_UNIT_END) return g_dpgettext2 (NULL, "unit-plural", gimp_unit_defs[unit].plural); if (unit == GIMP_UNIT_PERCENT) return g_dpgettext2 (NULL, "unit-plural", gimp_unit_percent.plural); return _gimp_unit_get_user_unit (gimp, unit)->plural; }
/** \brief Create a label for the description */ Gtk::Widget * ParamDescription::get_widget (SPDocument * /*doc*/, Inkscape::XML::Node * /*node*/, sigc::signal<void> * /*changeSignal*/) { if (_gui_hidden) { return NULL; } Glib::ustring newguitext; if (_context != NULL) { newguitext = g_dpgettext2(NULL, _context, _value); } else { newguitext = _(_value); } Gtk::Label * label; int padding = 12 + _indent; if (_mode == HEADER) { label = Gtk::manage(new Gtk::Label(Glib::ustring("<b>") +newguitext + Glib::ustring("</b>"), Gtk::ALIGN_START)); label->set_padding(0,5); label->set_use_markup(true); padding = _indent; } else { label = Gtk::manage(new Gtk::Label(newguitext, Gtk::ALIGN_START)); } label->set_line_wrap(); label->show(); Gtk::HBox * hbox = Gtk::manage(new Gtk::HBox(false, 4)); hbox->pack_start(*label, true, true, padding); hbox->show(); return hbox; }
/** * gimp_enum_value_get_desc: * @enum_class: a #GEnumClass * @enum_value: a #GEnumValue from @enum_class * * Retrieves the translated description for a given @enum_value. * * Return value: the translated description of the enum value * * Since: GIMP 2.2 **/ const gchar * gimp_enum_value_get_desc (GEnumClass *enum_class, GEnumValue *enum_value) { GType type = G_TYPE_FROM_CLASS (enum_class); GimpEnumDesc *enum_desc; enum_desc = gimp_enum_get_desc (enum_class, enum_value->value); if (enum_desc && enum_desc->value_desc) { const gchar *context; context = gimp_type_get_translation_context (type); if (context) /* the new way, using NC_() */ return g_dpgettext2 (gimp_type_get_translation_domain (type), context, enum_desc->value_desc); else /* for backward compatibility */ return g_strip_context (enum_desc->value_desc, dgettext (gimp_type_get_translation_domain (type), enum_desc->value_desc)); } return enum_value->value_name; }
static void dt_accel_path_iop_translated(char *s, size_t n, dt_iop_module_so_t *module, const char *path) { snprintf(s, n, "<Darktable>/%s/%s/%s", C_("accel", "image operations"), module->name(), g_dpgettext2(NULL, "accel", path)); }
static gchar * sgettext_swapped (const gchar *msgid, gpointer data) { gchar *msgctxt = data; return (gchar *)g_dpgettext2 (GETTEXT_PACKAGE, msgctxt, msgid); }
static void panel_properties_dialog_setup_orientation_combo (PanelPropertiesDialog *dialog, GtkBuilder *gui) { GtkWidget *orientation_label; GtkListStore *model; GtkTreeIter iter; GtkCellRenderer *renderer; int i; dialog->orientation_combo = PANEL_GTK_BUILDER_GET (gui, "orientation_combo"); g_return_if_fail (dialog->orientation_combo != NULL); orientation_label = PANEL_GTK_BUILDER_GET (gui, "orientation_label"); g_return_if_fail (orientation_label != NULL); model = gtk_list_store_new (NUMBER_COLUMNS, G_TYPE_STRING, G_TYPE_POINTER); gtk_combo_box_set_model (GTK_COMBO_BOX (dialog->orientation_combo), GTK_TREE_MODEL (model)); for (i = 0; i < G_N_ELEMENTS (orientation_items); i++) { gtk_list_store_append (model, &iter); gtk_list_store_set (model, &iter, COLUMN_TEXT, g_dpgettext2 (NULL, "Orientation", orientation_items [i].name), COLUMN_ITEM, &(orientation_items [i]), -1); } renderer = gtk_cell_renderer_text_new (); gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (dialog->orientation_combo), renderer, TRUE); gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (dialog->orientation_combo), renderer, "text", COLUMN_TEXT, NULL); panel_properties_dialog_orientation_update (dialog); g_signal_connect_swapped (dialog->orientation_combo, "changed", G_CALLBACK (panel_properties_dialog_orientation_changed), dialog); g_signal_connect (dialog->settings_background, "changed::"PANEL_TOPLEVEL_ORIENTATION_KEY, G_CALLBACK (panel_properties_dialog_orientation_setting_changed), dialog); g_settings_bind_writable (dialog->settings, PANEL_TOPLEVEL_ORIENTATION_KEY, orientation_label, "sensitive", FALSE); g_settings_bind_writable (dialog->settings, PANEL_TOPLEVEL_ORIENTATION_KEY, dialog->orientation_combo, "sensitive", FALSE); if (!g_settings_is_writable (dialog->settings, PANEL_TOPLEVEL_ORIENTATION_KEY)) gtk_widget_show (dialog->writability_warn_general); }
const char * get_script_name_for_tag (guint32 tag) { int i; for (i = 0; i < G_N_ELEMENTS (scripts); i++) { if (scripts[i].hb_script == hb_script_from_iso15924_tag (tag)) return g_dpgettext2 (GETTEXT_PACKAGE, "Script", scripts[i].name); } return NULL; }
const char * get_script_name (GUnicodeScript script) { int i; for (i = 0; i < G_N_ELEMENTS (scripts); i++) { if (scripts[i].script == script) return g_dpgettext2 (GETTEXT_PACKAGE, "Script", scripts[i].name); } return NULL; }
const gchar * _gtk_builder_parser_translate (const gchar *domain, const gchar *context, const gchar *text) { const gchar *s; if (context) s = g_dpgettext2 (domain, context, text); else s = g_dgettext (domain, text); return s; }
/** * games_card_get_localised_rank_symbol: * @rank: the card rank * * Returns: the localised rank card symbol */ const char * games_card_get_localised_rank_symbol (int rank) { #if GLIB_CHECK_VERSION (2, 18, 0) static const char *rank_texts[] = { /* Translators: this is the symbol that's on a Joker card */ NC_("card symbol", "JOKER"), /* Translators: this is the symbol that's on an Ace card */ NC_("card symbol", "A"), /* Translators: this is the symbol that's on a 2 card */ NC_("card symbol", "2"), /* Translators: this is the symbol that's on a 3 card */ NC_("card symbol", "3"), /* Translators: this is the symbol that's on a 4 card */ NC_("card symbol", "4"), /* Translators: this is the symbol that's on a 5 card */ NC_("card symbol", "5"), /* Translators: this is the symbol that's on a 6 card */ NC_("card symbol", "6"), /* Translators: this is the symbol that's on a 7 card */ NC_("card symbol", "7"), /* Translators: this is the symbol that's on a 8 card */ NC_("card symbol", "8"), /* Translators: this is the symbol that's on a 9 card */ NC_("card symbol", "9"), /* Translators: this is the symbol that's on a Jack card */ NC_("card symbol", "J"), /* Translators: this is the symbol that's on a Queen card */ NC_("card symbol", "Q"), /* Translators: this is the symbol that's on a King card */ NC_("card symbol", "K"), /* Translators: this is the symbol that's on an Ace card */ NC_("card symbol", "A"), /* Translators: this is the symbol that's on a 1 card */ NC_("card symbol", "1") }; g_return_val_if_fail (rank >= GAMES_CARD_JOKER && rank <= GAMES_CARD_ACE_HIGH, NULL); return g_dpgettext2 (GETTEXT_PACKAGE, "card symbol", rank_texts[rank]); #else static const char rank_texts[][6] = { "JOKER", "A", "1", "2", "3", "4", "5", "6", "7", "8", "9", "J", "Q", "K", "A" }; g_return_val_if_fail (rank >= GAMES_CARD_JOKER && rank <= GAMES_CARD_ACE_HIGH, NULL); return rank_texts[rank]; #endif /* GLIB >= 2.18.0 */ }
static void panel_properties_dialog_setup_orientation_combo (PanelPropertiesDialog *dialog, GtkBuilder *gui) { PanelOrientation orientation; GtkListStore *model; GtkTreeIter iter; GtkCellRenderer *renderer; int i; dialog->orientation_combo = PANEL_GTK_BUILDER_GET (gui, "orientation_combo"); g_return_if_fail (dialog->orientation_combo != NULL); dialog->orientation_label = PANEL_GTK_BUILDER_GET (gui, "orientation_label"); g_return_if_fail (dialog->orientation_label != NULL); orientation = panel_profile_get_toplevel_orientation (dialog->toplevel); model = gtk_list_store_new (NUMBER_COLUMNS, G_TYPE_STRING, G_TYPE_POINTER); gtk_combo_box_set_model (GTK_COMBO_BOX (dialog->orientation_combo), GTK_TREE_MODEL (model)); for (i = 0; i < G_N_ELEMENTS (orientation_items); i++) { gtk_list_store_append (model, &iter); gtk_list_store_set (model, &iter, COLUMN_TEXT, g_dpgettext2 (NULL, "Orientation", orientation_items [i].name), COLUMN_ITEM, &(orientation_items [i]), -1); if (orientation == orientation_items [i].orientation) gtk_combo_box_set_active_iter (GTK_COMBO_BOX (dialog->orientation_combo), &iter); } renderer = gtk_cell_renderer_text_new (); gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (dialog->orientation_combo), renderer, TRUE); gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (dialog->orientation_combo), renderer, "text", COLUMN_TEXT, NULL); g_signal_connect_swapped (dialog->orientation_combo, "changed", G_CALLBACK (panel_properties_dialog_orientation_changed), dialog); panel_properties_dialog_setup_orientation_combo_sensitivty (dialog, NULL); }
static void add_string_column (GcrTreeSelector *self, const GcrColumn *column, gint column_id) { GtkCellRenderer *cell; GtkTreeViewColumn *col; const gchar *label; g_assert (column->column_type == G_TYPE_STRING); g_assert (!(column->flags & GCR_COLUMN_HIDDEN)); cell = gtk_cell_renderer_text_new (); g_object_set (G_OBJECT (cell), "ellipsize", PANGO_ELLIPSIZE_END, NULL); label = column->label ? g_dpgettext2 (NULL, "column", column->label) : ""; col = gtk_tree_view_column_new_with_attributes (label, cell, "text", column_id, NULL); gtk_tree_view_column_set_resizable (col, TRUE); if (column->flags & GCR_COLUMN_SORTABLE) gtk_tree_view_column_set_sort_column_id (col, column_id); gtk_tree_view_append_column (GTK_TREE_VIEW (self), col); }
static void add_icon_column (GcrTreeSelector *self, const GcrColumn *column, gint column_id) { GtkCellRenderer *cell; GtkTreeViewColumn *col; const gchar *label; g_assert (column->column_type == G_TYPE_ICON); g_assert (!(column->flags & GCR_COLUMN_HIDDEN)); cell = gtk_cell_renderer_pixbuf_new (); g_object_set (cell, "stock-size", GTK_ICON_SIZE_BUTTON, NULL); label = column->label ? g_dpgettext2 (NULL, "column", column->label) : ""; col = gtk_tree_view_column_new_with_attributes (label, cell, "gicon", column_id, NULL); gtk_tree_view_column_set_resizable (col, TRUE); if (column->flags & GCR_COLUMN_SORTABLE) gtk_tree_view_column_set_sort_column_id (col, column_id); gtk_tree_view_append_column (GTK_TREE_VIEW (self), col); }
static GtkWidget* create_property_option_menu (RBQueryCreator *creator, const RBQueryCreatorPropertyOption *options, int length) { GtkWidget *combo; int i; combo = gtk_combo_box_text_new (); for (i = 0; i < length; i++) { gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (combo), g_dpgettext2 (NULL, "query-criteria", options[i].name)); } gtk_combo_box_set_active (GTK_COMBO_BOX (combo), 0); g_object_set_data (G_OBJECT (combo), "prop-menu old value", GINT_TO_POINTER (0)); g_signal_connect_object (G_OBJECT (combo), "changed", G_CALLBACK (property_option_menu_changed), creator, 0); return combo; }
static void setup_sort_option_menu (RBQueryCreator *creator, GtkWidget *option_menu, const RBQueryCreatorSortOption *options, int length) { GtkListStore *store; int i; store = gtk_list_store_new (1, G_TYPE_STRING); for (i = 0; i < length; i++) { GtkTreeIter iter; gtk_list_store_append (store, &iter); gtk_list_store_set (store, &iter, 0, g_dpgettext2 (NULL, "query-sort", options[i].name), -1); } gtk_combo_box_set_model (GTK_COMBO_BOX (option_menu), GTK_TREE_MODEL (store)); g_signal_connect_object (G_OBJECT (option_menu), "changed", G_CALLBACK (sort_option_menu_changed), creator, 0); gtk_combo_box_set_active (GTK_COMBO_BOX (option_menu), 0); }
static void gcal_date_selector_init (GcalDateSelector *self) { GcalDateSelectorPrivate *priv; gint i, d_index, max; gtk_widget_set_has_window (GTK_WIDGET (self), FALSE); priv = gcal_date_selector_get_instance_private (GCAL_DATE_SELECTOR (self));; gtk_widget_init_template (GTK_WIDGET (self)); priv->day = 1; priv->month = 1; priv->year = 1970; /* This string represents day/month/year order for each of the different * languages. It could possibly be default value, %m/%d/%y placing the month * before, or any ordering according to the translator's environment. */ priv->mask = g_dpgettext2 ("glib20", "GDateTime", "%m/%d/%y"); /** * Translators: Select the day, month and year indexes. This will * be used later on to map the date entries to the * corresponding indexes. I should have added more validations here. */ max = strlen (priv->mask); if (max != 8) { /* I'll assume an error and bail out with the default values */ priv->day_pos = 0; priv->month_pos = 1; priv->year_pos = 2; return; } d_index = 0; for (i = 0; i < max; i++) { gchar c; c = *(priv->mask + i); /* No need to check these common separators */ if (c == '%' || c == '-' || c == '/' || c == '.') continue; switch (c) { /* day */ case 'a': case 'A': case 'd': case 'e': case 'j': case 'u': case 'w': priv->day_pos = d_index++; break; /* month */ case 'b': case 'B': case 'm': priv->month_pos = d_index++; break; /* year */ case 'y': priv->year_pos = d_index++; break; case 'Y': priv->year_pos = d_index++; break; } } }
/** * gimp_enum_get_value: * @enum_type: the #GType of a registered enum * @value: an integer value * @value_name: return location for the value's name (or %NULL) * @value_nick: return location for the value's nick (or %NULL) * @value_desc: return location for the value's translated description (or %NULL) * @value_help: return location for the value's translated help (or %NULL) * * Checks if @value is valid for the enum registered as @enum_type. * If the value exists in that enum, its name, nick and its translated * description and help are returned (if @value_name, @value_nick, * @value_desc and @value_help are not %NULL). * * Return value: %TRUE if @value is valid for the @enum_type, * %FALSE otherwise * * Since: GIMP 2.2 **/ gboolean gimp_enum_get_value (GType enum_type, gint value, const gchar **value_name, const gchar **value_nick, const gchar **value_desc, const gchar **value_help) { GEnumClass *enum_class; GEnumValue *enum_value; gboolean success = FALSE; g_return_val_if_fail (G_TYPE_IS_ENUM (enum_type), FALSE); enum_class = g_type_class_ref (enum_type); enum_value = g_enum_get_value (enum_class, value); if (enum_value) { if (value_name) *value_name = enum_value->value_name; if (value_nick) *value_nick = enum_value->value_nick; if (value_desc || value_help) { GimpEnumDesc *enum_desc; enum_desc = gimp_enum_get_desc (enum_class, value); if (value_desc) { if (enum_desc && enum_desc->value_desc) { const gchar *context; context = gimp_type_get_translation_context (enum_type); if (context) /* the new way, using NC_() */ *value_desc = g_dpgettext2 (gimp_type_get_translation_domain (enum_type), context, enum_desc->value_desc); else /* for backward compatibility */ *value_desc = g_strip_context (enum_desc->value_desc, dgettext (gimp_type_get_translation_domain (enum_type), enum_desc->value_desc)); } else { *value_desc = NULL; } } if (value_help) { *value_help = ((enum_desc && enum_desc->value_help) ? dgettext (gimp_type_get_translation_domain (enum_type), enum_desc->value_help) : NULL); } } success = TRUE; } g_type_class_unref (enum_class); return success; }
gchar* SPUse::description() const { if (child) { if ( dynamic_cast<SPSymbol *>(child) ) { if (child->title()) { return g_strdup_printf(_("called %s"), Glib::Markup::escape_text(Glib::ustring( g_dpgettext2(NULL, "Symbol", child->title()))).c_str()); } else if (child->getAttribute("id")) { return g_strdup_printf(_("called %s"), Glib::Markup::escape_text(Glib::ustring( g_dpgettext2(NULL, "Symbol", child->getAttribute("id")))).c_str()); } else { return g_strdup_printf(_("called %s"), _("Unnamed Symbol")); } } static unsigned recursion_depth = 0; if (recursion_depth >= 4) { /* TRANSLATORS: Used for statusbar description for long <use> chains: * "Clone of: Clone of: ... in Layer 1". */ return g_strdup(_("...")); /* We could do better, e.g. chasing the href chain until we reach something other than * a <use>, and giving its description. */ } ++recursion_depth; char *child_desc = this->child->detailedDescription(); --recursion_depth; char *ret = g_strdup_printf(_("of: %s"), child_desc); g_free(child_desc); return ret; } else { return g_strdup(_("[orphaned]")); } }
GSList * gimp_action_group_add_radio_actions (GimpActionGroup *group, const gchar *msg_context, const GimpRadioActionEntry *entries, guint n_entries, GSList *radio_group, gint value, GCallback callback) { GtkRadioAction *first_action = NULL; gint i; g_return_val_if_fail (GIMP_IS_ACTION_GROUP (group), NULL); for (i = 0; i < n_entries; i++) { GtkRadioAction *action; const gchar *label; const gchar *tooltip = NULL; if (! gimp_action_group_check_unique_action (group, entries[i].name)) continue; if (msg_context) { label = g_dpgettext2 (NULL, msg_context, entries[i].label); if (entries[i].tooltip) tooltip = g_dpgettext2 (NULL, msg_context, entries[i].tooltip); } else { label = gettext (entries[i].label); tooltip = gettext (entries[i].tooltip); } action = gimp_radio_action_new (entries[i].name, label, tooltip, entries[i].icon_name, entries[i].value); if (i == 0) first_action = action; gtk_radio_action_set_group (action, radio_group); radio_group = gtk_radio_action_get_group (action); if (value == entries[i].value) gtk_toggle_action_set_active (GTK_TOGGLE_ACTION (action), TRUE); gtk_action_group_add_action_with_accel (GTK_ACTION_GROUP (group), GTK_ACTION (action), entries[i].accelerator); g_signal_emit (group, signals[ACTION_ADDED], 0, action); if (entries[i].help_id) g_object_set_qdata_full (G_OBJECT (action), GIMP_HELP_ID, g_strdup (entries[i].help_id), (GDestroyNotify) g_free); g_object_unref (action); } if (callback && first_action) g_signal_connect (first_action, "changed", callback, group->user_data); return radio_group; }
static void dt_accel_path_global_translated(char *s, size_t n, const char* path) { snprintf(s, n, "<Darktable>/%s/%s", C_("accel", "global"), g_dpgettext2(NULL, "accel", path)); }
ParamComboBox::ParamComboBox(const gchar *name, const gchar *guitext, const gchar *desc, const Parameter::_scope_t scope, bool gui_hidden, const gchar *gui_tip, Inkscape::Extension::Extension *ext, Inkscape::XML::Node *xml) : Parameter(name, guitext, desc, scope, gui_hidden, gui_tip, ext) , _value(NULL) , _indent(0) , choices(NULL) { const char *xmlval = NULL; // the value stored in XML if (xml != NULL) { // Read XML tree to add enumeration items: for (Inkscape::XML::Node *node = xml->firstChild(); node; node = node->next()) { char const * chname = node->name(); if (!strcmp(chname, INKSCAPE_EXTENSION_NS "item") || !strcmp(chname, INKSCAPE_EXTENSION_NS "_item")) { Glib::ustring newguitext, newvalue; const char * contents = NULL; if (node->firstChild()) { contents = node->firstChild()->content(); } if (contents != NULL) { // don't translate when 'item' but do translate when '_item' // NOTE: internal extensions use build_from_mem and don't need _item but // still need to include if are to be localized if (!strcmp(chname, INKSCAPE_EXTENSION_NS "_item")) { if (node->attribute("msgctxt") != NULL) { newguitext = g_dpgettext2(NULL, node->attribute("msgctxt"), contents); } else { newguitext = _(contents); } } else { newguitext = contents; } } else continue; const char * val = node->attribute("value"); if (val != NULL) { newvalue = val; } else { newvalue = contents; } if ( (!newguitext.empty()) && (!newvalue.empty()) ) { // logical error if this is not true here choices = g_slist_append( choices, new enumentry(newvalue, newguitext) ); } } } // Initialize _value with the default value from xml // for simplicity : default to the contents of the first xml-child if (xml->firstChild() && xml->firstChild()->firstChild()) { xmlval = xml->firstChild()->attribute("value"); } const char *indent = xml->attribute("indent"); if (indent != NULL) { _indent = atoi(indent) * 12; } } gchar * pref_name = this->pref_name(); Inkscape::Preferences *prefs = Inkscape::Preferences::get(); Glib::ustring paramval = prefs ? prefs->getString(extension_pref_root + pref_name) : ""; g_free(pref_name); if (!paramval.empty()) { _value = g_strdup(paramval.data()); } else if (xmlval) { _value = g_strdup(xmlval); } }
static void udisks_client_get_object_info_for_drive (UDisksClient *client, UDisksDrive *drive, UDisksPartition *partition, UDisksObjectInfo *info) { const gchar *vendor; const gchar *model; const gchar *media; const gchar *const *media_compat; gboolean media_available; gboolean media_removable; gint rotation_rate; guint64 size; gchar *size_str; guint n; GString *desc_str; DriveType desc_type; gchar *hyphenated_connection_bus; const gchar *connection_bus; UDisksBlock *block = NULL; gchar *s; const gchar *cs; UDisksBlock *block_for_partition = NULL; g_return_if_fail (UDISKS_IS_DRIVE (drive)); size_str = NULL; vendor = udisks_drive_get_vendor (drive); model = udisks_drive_get_model (drive); size = udisks_drive_get_size (drive); media_removable = udisks_drive_get_media_removable (drive); media_available = udisks_drive_get_media_available (drive); rotation_rate = udisks_drive_get_rotation_rate (drive); if (size > 0) size_str = udisks_client_get_size_for_display (client, size, FALSE, FALSE); media = udisks_drive_get_media (drive); media_compat = udisks_drive_get_media_compatibility (drive); connection_bus = udisks_drive_get_connection_bus (drive); if (strlen (connection_bus) > 0) hyphenated_connection_bus = g_strdup_printf ("-%s", connection_bus); else hyphenated_connection_bus = g_strdup (""); /* Name is easy - that's just "$vendor $model" */ if (strlen (vendor) == 0) vendor = NULL; if (strlen (model) == 0) model = NULL; info->name = g_strdup_printf ("%s%s%s", vendor != NULL ? vendor : "", vendor != NULL ? " " : "", model != NULL ? model : ""); desc_type = DRIVE_TYPE_UNSET; desc_str = g_string_new (NULL); for (n = 0; n < G_N_ELEMENTS (media_data) - 1; n++) { /* media_compat */ if (strv_has (media_compat, media_data[n].id)) { if (info->icon == NULL) info->icon = g_themed_icon_new_with_default_fallbacks (media_data[n].drive_icon); if (info->icon_symbolic == NULL) info->icon_symbolic = g_themed_icon_new_with_default_fallbacks (media_data[n].drive_icon_symbolic); if (strstr (desc_str->str, media_data[n].media_family) == NULL) { if (desc_str->len > 0) g_string_append (desc_str, "/"); g_string_append (desc_str, g_dpgettext2 (GETTEXT_PACKAGE, "media-type", media_data[n].media_family)); } desc_type = media_data[n].media_type; } if (media_removable && media_available) { /* media */ if (g_strcmp0 (media, media_data[n].id) == 0) { if (info->media_description == NULL) { switch (media_data[n].media_type) { case DRIVE_TYPE_UNSET: g_assert_not_reached (); break; case DRIVE_TYPE_DRIVE: /* Translators: Used to describe drive without removable media. The %s is the type, e.g. 'Thumb' */ info->media_description = g_strdup_printf (C_("drive-with-fixed-media", "%s Drive"), g_dpgettext2 (GETTEXT_PACKAGE, "media-type", media_data[n].media_name)); break; case DRIVE_TYPE_DISK: /* Translators: Used to describe generic media. The %s is the type, e.g. 'Zip' or 'Floppy' */ info->media_description = g_strdup_printf (C_("drive-with-generic-media", "%s Disk"), g_dpgettext2 (GETTEXT_PACKAGE, "media-type", media_data[n].media_name)); break; case DRIVE_TYPE_CARD: /* Translators: Used to describe flash media. The %s is the type, e.g. 'SD' or 'CompactFlash' */ info->media_description = g_strdup_printf (C_("flash-media", "%s Card"), g_dpgettext2 (GETTEXT_PACKAGE, "media-type", media_data[n].media_name)); break; case DRIVE_TYPE_DISC: /* Translators: Used to describe optical discs. The %s is the type, e.g. 'CD-R' or 'DVD-ROM' */ info->media_description = g_strdup_printf (C_("optical-media", "%s Disc"), g_dpgettext2 (GETTEXT_PACKAGE, "media-type", media_data[n].media_name)); break; } } if (info->media_icon == NULL) info->media_icon = g_themed_icon_new_with_default_fallbacks (media_data[n].media_icon); if (info->media_icon_symbolic == NULL) info->media_icon_symbolic = g_themed_icon_new_with_default_fallbacks (media_data[n].media_icon_symbolic); } } } switch (desc_type) { case DRIVE_TYPE_UNSET: if (media_removable) { if (size_str != NULL) { /* Translators: Used to describe a drive. The %s is the size, e.g. '20 GB' */ info->description = g_strdup_printf (C_("drive-with-size", "%s Drive"), size_str); } else { /* Translators: Used to describe a drive we know very little about (removable media or size not known) */ info->description = g_strdup (C_("generic-drive", "Drive")); } } else { if (rotation_rate == 0) { if (size_str != NULL) { /* Translators: Used to describe a non-rotating drive (rotation rate either unknown * or it's a solid-state drive). The %s is the size, e.g. '20 GB'. */ info->description = g_strdup_printf (C_("disk-non-rotational", "%s Disk"), size_str); } else { /* Translators: Used to describe a non-rotating drive (rotation rate either unknown * or it's a solid-state drive). The drive is either using removable media or its * size not known. */ info->description = g_strdup (C_("disk-non-rotational", "Disk")); } } else { if (size_str != NULL) { /* Translators: Used to describe a hard-disk drive (HDD). The %s is the size, e.g. '20 GB'. */ info->description = g_strdup_printf (C_("disk-hdd", "%s Hard Disk"), size_str); } else { /* Translators: Used to describe a hard-disk drive (HDD) (removable media or size not known) */ info->description = g_strdup (C_("disk-hdd", "Hard Disk")); } } } break; case DRIVE_TYPE_CARD: /* Translators: Used to describe a card reader. The %s is the card type e.g. 'CompactFlash'. */ info->description = g_strdup_printf (C_("drive-card-reader", "%s Card Reader"), desc_str->str); break; case DRIVE_TYPE_DRIVE: /* explicit fall-through */ case DRIVE_TYPE_DISK: /* explicit fall-through */ case DRIVE_TYPE_DISC: if (!media_removable && size_str != NULL) { /* Translators: Used to describe drive. The first %s is the size e.g. '20 GB' and the * second %s is the drive type e.g. 'Thumb'. */ info->description = g_strdup_printf (C_("drive-with-size-and-type", "%s %s Drive"), size_str, desc_str->str); } else { /* Translators: Used to describe drive. The first %s is the drive type e.g. 'Thumb'. */ info->description = g_strdup_printf (C_("drive-with-type", "%s Drive"), desc_str->str); } break; } g_string_free (desc_str, TRUE); /* fallback for icon */ if (info->icon == NULL) { if (media_removable) { s = g_strdup_printf ("drive-removable-media%s", hyphenated_connection_bus); } else { if (rotation_rate == 0) s = g_strdup_printf ("drive-harddisk-solidstate%s", hyphenated_connection_bus); else s = g_strdup_printf ("drive-harddisk%s", hyphenated_connection_bus); } info->icon = g_themed_icon_new_with_default_fallbacks (s); g_free (s); } /* fallback for icon_symbolic */ if (info->icon_symbolic == NULL) { if (media_removable) { s = g_strdup_printf ("drive-removable-media%s-symbolic", hyphenated_connection_bus); } else { if (rotation_rate == 0) s = g_strdup_printf ("drive-harddisk-solidstate%s-symbolic", hyphenated_connection_bus); else s = g_strdup_printf ("drive-harddisk%s-symbolic", hyphenated_connection_bus); } info->icon_symbolic = g_themed_icon_new_with_default_fallbacks (s); g_free (s); } /* fallback for media_icon */ if (media_removable && media_available && info->media_icon == NULL) { if (media_removable) { s = g_strdup_printf ("drive-removable-media%s", hyphenated_connection_bus); } else { if (rotation_rate == 0) s = g_strdup_printf ("drive-harddisk-solidstate%s", hyphenated_connection_bus); else s = g_strdup_printf ("drive-harddisk%s", hyphenated_connection_bus); } info->media_icon = g_themed_icon_new_with_default_fallbacks (s); g_free (s); } /* fallback for media_icon_symbolic */ if (media_removable && media_available && info->media_icon_symbolic == NULL) { if (media_removable) { s = g_strdup_printf ("drive-removable-media%s-symbolic", hyphenated_connection_bus); } else { if (rotation_rate == 0) s = g_strdup_printf ("drive-harddisk-solidstate%s-symbolic", hyphenated_connection_bus); else s = g_strdup_printf ("drive-harddisk%s-symbolic", hyphenated_connection_bus); } info->media_icon_symbolic = g_themed_icon_new_with_default_fallbacks (s); g_free (s); } /* prepend a qualifier to the media description, based on the disc state */ if (udisks_drive_get_optical_blank (drive)) { /* Translators: String used for a blank disc. The %s is the disc type e.g. "CD-RW Disc" */ s = g_strdup_printf (C_("optical-media", "Blank %s"), info->media_description); g_free (info->media_description); info->media_description = s; } else if (udisks_drive_get_optical_num_audio_tracks (drive) > 0 && udisks_drive_get_optical_num_data_tracks (drive) > 0) { /* Translators: String used for a mixed disc. The %s is the disc type e.g. "CD-ROM Disc" */ s = g_strdup_printf (C_("optical-media", "Mixed %s"), info->media_description); g_free (info->media_description); info->media_description = s; } else if (udisks_drive_get_optical_num_audio_tracks (drive) > 0 && udisks_drive_get_optical_num_data_tracks (drive) == 0) { /* Translators: String used for an audio disc. The %s is the disc type e.g. "CD-ROM Disc" */ s = g_strdup_printf (C_("optical-media", "Audio %s"), info->media_description); g_free (info->media_description); info->media_description = s; } /* Apply UDISKS_NAME, UDISKS_ICON_NAME, UDISKS_SYMBOLIC_ICON_NAME hints, if available */ block = udisks_client_get_block_for_drive (client, drive, TRUE); if (block != NULL) { cs = udisks_block_get_hint_name (block); if (cs != NULL && strlen (cs) > 0) { g_free (info->description); g_free (info->media_description); info->description = g_strdup (cs); info->media_description = g_strdup (cs); } cs = udisks_block_get_hint_icon_name (block); if (cs != NULL && strlen (cs) > 0) { g_clear_object (&info->icon); g_clear_object (&info->media_icon); info->icon = g_themed_icon_new_with_default_fallbacks (cs); info->media_icon = g_themed_icon_new_with_default_fallbacks (cs); } cs = udisks_block_get_hint_symbolic_icon_name (block); if (cs != NULL && strlen (cs) > 0) { g_clear_object (&info->icon_symbolic); g_clear_object (&info->media_icon_symbolic); info->icon_symbolic = g_themed_icon_new_with_default_fallbacks (cs); info->media_icon_symbolic = g_themed_icon_new_with_default_fallbacks (cs); } } if (partition != NULL) { GDBusObject *object_for_partition; object_for_partition = g_dbus_interface_get_object (G_DBUS_INTERFACE (partition)); if (object_for_partition != NULL) block_for_partition = udisks_object_peek_block (UDISKS_OBJECT (object_for_partition)); } if (block_for_partition == NULL) block_for_partition = block; if (partition != NULL) { /* Translators: Used to describe a partition of a drive. * The %d is the partition number. * The %s is the description for the drive (e.g. "2 GB Thumb Drive"). */ s = g_strdup_printf (C_("part-drive", "Partition %d of %s"), udisks_partition_get_number (partition), info->description); g_free (info->description); info->description = s; } /* calculate and set one-liner */ if (block != NULL) { const gchar *drive_revision = udisks_drive_get_revision (drive); if (strlen (drive_revision) > 0) { /* Translators: String used for one-liner description of drive. * The first %s is the description of the object (e.g. "80 GB Disk" or "Partition 2 of 2 GB Thumb Drive"). * The second %s is the name of the object (e.g. "INTEL SSDSA2MH080G1GC"). * The third %s is the fw revision (e.g "45ABX21"). * The fourth %s is the special device file (e.g. "/dev/sda"). */ info->one_liner = g_strdup_printf (C_("one-liner-drive", "%s — %s [%s] (%s)"), info->description, info->name, drive_revision, udisks_block_get_preferred_device (block_for_partition)); } else { /* Translators: String used for one-liner description of drive w/o known fw revision. * The first %s is the description of the object (e.g. "80 GB Disk"). * The second %s is the name of the object (e.g. "INTEL SSDSA2MH080G1GC"). * The third %s is the special device file (e.g. "/dev/sda"). */ info->one_liner = g_strdup_printf (C_("one-liner-drive", "%s — %s (%s)"), info->description, info->name, udisks_block_get_preferred_device (block_for_partition)); } } g_free (hyphenated_connection_bus); g_free (size_str); info->sort_key = g_strdup_printf ("00_drive_%s", udisks_drive_get_sort_key (drive)); g_clear_object (&block); }