static void
prefs_load_xml_end_element(
	GMarkupParseContext * context,
	const gchar * element,
	gpointer user_data,
	GError ** error)
{
	struct prefs_parser_state * state = (struct prefs_parser_state*)user_data;

	if(!g_utf8_collate(element, "vqcc_gtk")
			&& state->tag==PREFS_TAG_VQCC_GTK) {
		state->tag = PREFS_TAG_NO_TAG;
	}
	else if(!g_utf8_collate(element, "settings")
			&& state->tag==PREFS_TAG_VQCC_GTK_SETTINGS) {
		state->tag = PREFS_TAG_VQCC_GTK;
	}
	else if(!g_utf8_collate(element, "pref")
			&& state->tag==PREFS_TAG_VQCC_GTK_SETTINGS_PREF) {
		state->tag = PREFS_TAG_VQCC_GTK_SETTINGS;
	}
	else if(!g_utf8_collate(element, "entry")
			&& state->tag==PREFS_TAG_VQCC_GTK_SETTINGS_PREF_ENTRY) {
		state->tag = PREFS_TAG_VQCC_GTK_SETTINGS_PREF;
	}
}
Пример #2
0
static gboolean
parse_notify_arg (const gchar *option_name, const gchar *value,
                  gpointer data, GError **error)
{
    CutConsoleUIFactory *console = data;

    if (value == NULL ||
        g_utf8_collate(value, "yes") == 0 ||
        g_utf8_collate(value, "true") == 0 ||
        g_utf8_collate(value, "auto") == 0) {
        if (!console->notify_command) {
            console->notify_command = g_strdup(search_notify_command());
        }
    } else if (g_utf8_collate(value, "no") == 0 ||
               g_utf8_collate(value, "false") == 0) {
        if (console->notify_command) {
            g_free(console->notify_command);
            console->notify_command = NULL;
        }
    } else {
        g_set_error(error,
                    G_OPTION_ERROR,
                    G_OPTION_ERROR_BAD_VALUE,
                    _("Invalid notify value: %s"), value);
        return FALSE;
    }

    return TRUE;
}
static gint
mouse_settings_themes_sort_func (GtkTreeModel *model,
                                 GtkTreeIter  *a,
                                 GtkTreeIter  *b,
                                 gpointer      user_data)
{
    gchar *name_a, *name_b;
    gint   retval;

    /* get the names from the model */
    gtk_tree_model_get (model, a, COLUMN_THEME_DISPLAY_NAME, &name_a, -1);
    gtk_tree_model_get (model, b, COLUMN_THEME_DISPLAY_NAME, &name_b, -1);

    /* make sure the names are not null */
    if (G_UNLIKELY (name_a == NULL))
        name_a = g_strdup ("");
    if (G_UNLIKELY (name_b == NULL))
        name_b = g_strdup ("");

    /* sort the names but keep Default on top */
    if (g_utf8_collate (name_a, _("Default")) == 0)
        retval = -1;
    else if (g_utf8_collate (name_b, _("Default")) == 0)
        retval = 1;
    else
        retval = g_utf8_collate (name_a, name_b);

    /* cleanup */
    g_free (name_a);
    g_free (name_b);

    return retval;
}
Пример #4
0
gint
compare_filelist_entry_path(gconstpointer filelist_entry1,
			    gconstpointer filelist_entry2)
{
	const struct mpd_entity *e1, *e2;
	int n = 0;

	e1 = ((const struct filelist_entry *)filelist_entry1)->entity;
	e2 = ((const struct filelist_entry *)filelist_entry2)->entity;

	if (e1 != NULL && e2 != NULL &&
	    mpd_entity_get_type(e1) == mpd_entity_get_type(e2)) {
		switch (mpd_entity_get_type(e1)) {
		case MPD_ENTITY_TYPE_UNKNOWN:
			break;
		case MPD_ENTITY_TYPE_DIRECTORY:
			n = g_utf8_collate(mpd_directory_get_path(mpd_entity_get_directory(e1)),
					   mpd_directory_get_path(mpd_entity_get_directory(e2)));
			break;
		case MPD_ENTITY_TYPE_SONG:
			break;
		case MPD_ENTITY_TYPE_PLAYLIST:
			n = g_utf8_collate(mpd_playlist_get_path(mpd_entity_get_playlist(e1)),
					   mpd_playlist_get_path(mpd_entity_get_playlist(e2)));
		}
	}
	return n;
}
Пример #5
0
static gint sort_func(gconstpointer da, gconstpointer db, gpointer dat) {
  const hub_user_t *a = da;
  const hub_user_t *b = db;
  tab_t *t = dat;
  int p = t->order;

  if(t->opfirst && !a->isop != !b->isop)
    return a->isop && !b->isop ? -1 : 1;

  // All orders have the username as secondary order.
  int o = p == SORT_USER ? 0 :
    p == SORT_SHARE  ? a->sharesize > b->sharesize ? 1 : -1:
    p == SORT_CONN   ? (t->tab.hub->adc ? a->conn - b->conn : strcmp(a->conn?a->conn:"", b->conn?b->conn:"")) :
    p == SORT_DESC   ? g_utf8_collate(a->desc?a->desc:"", b->desc?b->desc:"") :
    p == SORT_MAIL   ? g_utf8_collate(a->mail?a->mail:"", b->mail?b->mail:"") :
    p == SORT_CLIENT ? strcmp(a->client?a->client:"", b->client?b->client:"")
                     : (ip4_cmp(a->ip4, b->ip4) != 0 ? ip4_cmp(a->ip4, b->ip4) : ip6_cmp(a->ip6, b->ip6));

  // Username sort
  if(!o)
    o = g_utf8_collate(a->name, b->name);
  if(!o && a->name_hub && b->name_hub)
    o = strcmp(a->name_hub, b->name_hub);
  if(!o)
    o = a - b;
  return t->reverse ? -1*o : o;
}
Пример #6
0
static void set_single(gpointer data, const char *param)
{
	int val = mpd_server_check_command_allowed(connection, "single");
	if (val == MPD_SERVER_COMMAND_NOT_SUPPORTED)
	{
        char * mesg = g_strdup_printf("%s: %s",
                _("Single"),
                _("The used MPD server is too old and does not support this."));
        playlist3_message_show(pl3_messages,mesg,ERROR_CRITICAL);
        g_free(mesg);
    } else if (val == MPD_SERVER_COMMAND_NOT_ALLOWED)
	{
        char * mesg = g_strdup_printf("%s: %s",
                _("Single"),
                _("You have insufficient permission to use this option."));
        playlist3_message_show(pl3_messages, mesg, ERROR_WARNING);
        g_free(mesg);
	} else if (val == MPD_SERVER_COMMAND_ALLOWED)
	{
		if (g_utf8_collate(param, "on") == 0)
		{
			mpd_player_set_single(connection, TRUE);
		} else if (g_utf8_collate(param, "off") == 0)
		{
			mpd_player_set_single(connection, FALSE);
		} else
		{
			mpd_player_set_single(connection, !mpd_player_get_single(connection));
		}
	}
}
Пример #7
0
gboolean gfire_game_load_config_xml(gboolean p_force)
{
	if(!p_force && gfire_games_config)
		return TRUE;

	xmlnode *node = NULL;

	gchar *filename = g_build_filename(purple_user_dir(), "gfire_game_config.xml", NULL);
	if(filename)
	{
		purple_debug(PURPLE_DEBUG_INFO, "gfire", "Loading Game Launch Data from: %s\n", filename);
		g_free(filename);
	}

	node = purple_util_read_xml_from_file("gfire_game_config.xml", "Gfire Game Config List");
	if(!node)
	{
		purple_debug(PURPLE_DEBUG_ERROR, "gfire", "gfire_game_load_config_xml: Couldn't load game config.\n");
		return FALSE;
	}

	// Check for a valid game config
	if(g_utf8_collate(node->name, "game_config"))
	{
		xmlnode_free(node);
		return FALSE;
	}

	// Check for a valid version
	if(!xmlnode_get_attrib(node, "version") || g_utf8_collate(xmlnode_get_attrib(node, "version"), "2"))
	{
		xmlnode_free(node);
		return FALSE;
	}

	// Delete all old configurations
	gfire_game_config_cleanup();

	// Parse all games
	xmlnode *game_node = xmlnode_get_child(node, "game");
	while(game_node)
	{
		gfire_game_configuration *gconf = gfire_game_configuration_create_from_xml(game_node);
		if(gconf)
			gfire_games_config = g_list_append(gfire_games_config, gconf);

		game_node = xmlnode_get_next_twin(game_node);
	}

	gfire_game_config_sort();

	xmlnode_free(node);

	return TRUE;
}
static gint
sort_personas (FolksPersona *persona_a,
    FolksPersona *persona_b)
{
  EmpathyContact *contact;
  TpAccount *account_a, *account_b;
  gint ret_val;

  g_return_val_if_fail (persona_a != NULL || persona_b != NULL, 0);

  /* alias */
  ret_val = g_utf8_collate (
      folks_aliasable_get_alias (FOLKS_ALIASABLE (persona_a)),
      folks_aliasable_get_alias (FOLKS_ALIASABLE (persona_b)));

  if (ret_val != 0)
    goto out;

  /* identifier */
  ret_val = g_utf8_collate (folks_persona_get_display_id (persona_a),
          folks_persona_get_display_id (persona_b));

  if (ret_val != 0)
    goto out;

  contact = empathy_contact_dup_from_tp_contact (tpf_persona_get_contact (
      TPF_PERSONA (persona_a)));
  account_a = empathy_contact_get_account (contact);
  g_object_unref (contact);

  contact = empathy_contact_dup_from_tp_contact (tpf_persona_get_contact (
      TPF_PERSONA (persona_b)));
  account_b = empathy_contact_get_account (contact);
  g_object_unref (contact);

  /* protocol */
  ret_val = strcmp (tp_account_get_protocol (account_a),
        tp_account_get_protocol (account_a));

  if (ret_val != 0)
    goto out;

  /* account ID */
  ret_val = strcmp (tp_proxy_get_object_path (account_a),
        tp_proxy_get_object_path (account_a));

out:
  return ret_val;
}
Пример #9
0
/** used to compare 2 iters and sort the by type first, and
 * by date and no transaction after
 * always put the white line below
 * \param model the GtkTreeModel
 * \param iter_1
 * \param iter_2
 * \return -1 if iter_1 is above iter_2
 * */
gint gsb_transactions_list_sort_by_type ( gint transaction_number_1,
                        gint transaction_number_2 )
{
    gint return_value;

    /* if it's the same type, we sort by the content of the types */

    if ( gsb_data_transaction_get_method_of_payment_number ( transaction_number_1) == gsb_data_transaction_get_method_of_payment_number ( transaction_number_2))
    {
	return_value = g_utf8_collate ( g_utf8_casefold ( gsb_data_transaction_get_method_of_payment_content ( transaction_number_1) ? gsb_data_transaction_get_method_of_payment_content ( transaction_number_1) : "",
							  -1 ),
					g_utf8_casefold ( gsb_data_transaction_get_method_of_payment_content ( transaction_number_2) ? gsb_data_transaction_get_method_of_payment_content ( transaction_number_2) : "",
							  -1 ));

	if ( !return_value )
	    return gsb_transactions_list_sort_by_date_and_no ( transaction_number_1, transaction_number_2 );
    }
    else
    {
	const gchar *temp_1;
	const gchar *temp_2;

	temp_1 = gsb_data_payment_get_name (gsb_data_transaction_get_method_of_payment_number (transaction_number_1));
	temp_2 = gsb_data_payment_get_name (gsb_data_transaction_get_method_of_payment_number (transaction_number_2));

	/* g_utf8_collate is said not very fast, must try with big big account to check
	 * if it's enough, for me it's ok (cedric), eventually, change with gsb_strcasecmp */
	return_value = g_utf8_collate ( g_utf8_casefold ( temp_1 ? temp_1 : "",
							  -1 ),
					g_utf8_casefold ( temp_2 ? temp_2 : "",
							  -1 ));
    }

    if ( return_value )
	return return_value;
    else
    {
	/* 	it seems that the 2 types are different no but same spell... */

	return_value = g_utf8_collate ( g_utf8_casefold ( gsb_data_transaction_get_method_of_payment_content ( transaction_number_1)? gsb_data_transaction_get_method_of_payment_content ( transaction_number_1): "",
							  -1 ),
					g_utf8_casefold ( gsb_data_transaction_get_method_of_payment_content ( transaction_number_2)? gsb_data_transaction_get_method_of_payment_content ( transaction_number_2): "",
							  -1 ));

	if ( !return_value )
		return gsb_transactions_list_sort_by_date_and_no ( transaction_number_1, transaction_number_2 );
    }
    return return_value;
}
Пример #10
0
gint
sort_default_comparator (GtkTreeModel *model, GtkTreeIter *a, GtkTreeIter *b,
                         gpointer user_data)
{
    const gchar *keya, *keyb;
    gchar *namea, *nameb;

    /* By default we sort by:
     *  - Presence of key pointer (to keep none-option at top)
     *  - Name
     */

    gtk_tree_model_get (model, a, CRYPTUI_KEY_STORE_KEY, &keya,
                        CRYPTUI_KEY_STORE_NAME, &namea, -1);
    gtk_tree_model_get (model, b, CRYPTUI_KEY_STORE_KEY, &keyb,
                        CRYPTUI_KEY_STORE_NAME, &nameb, -1);

    /* This somewhat strage set of checks keep the none-option,
       separator, and keys in proper order */
    if (!keya && keyb)
        return -1;
    else if (!keyb && keya)
        return 1;
    else if (!namea && nameb)
        return 1;
    else if (!nameb && namea)
        return -1;
    else if (!keya && !keyb)
        return 0;
    else if (!namea && !nameb)
        return 0;

    return g_utf8_collate (namea, nameb);

}
Пример #11
0
static void
gtr_message_table_selection_changed (GtkTreeSelection *selection,
                                     GtrMessageTable *table)
{
    GtkTreeIter iter;
    GtkTreeModel *model;
    GtrMsg *msg;
    GList *current_msg = NULL;
    GtrMessageTablePrivate *priv;
    GtrPo *po;

    g_return_if_fail (selection != NULL);

    priv = gtr_message_table_get_instance_private (table);

    po = gtr_tab_get_po (priv->tab);
    current_msg = gtr_po_get_current_message (po);

    if (gtk_tree_selection_get_selected (selection, &model, &iter) == TRUE)
    {
        gtk_tree_model_get (model, &iter,
                            GTR_MESSAGE_TABLE_MODEL_POINTER_COLUMN, &msg, -1);

        if (msg != NULL
                && g_utf8_collate (gtr_msg_get_msgid (msg),
                                   gtr_msg_get_msgid (current_msg->data)))
        {
            g_signal_handlers_block_by_func (priv->tab, showed_message_cb, table);
            gtr_tab_message_go_to (priv->tab, msg,
                                   FALSE, GTR_TAB_MOVE_NONE);
            g_signal_handlers_unblock_by_func (priv->tab, showed_message_cb, table);
        }
    }
}
Пример #12
0
gint
gnomegadu_ui_tree_sort (GtkTreeModel * model, GtkTreeIter * a, GtkTreeIter * b, gpointer user_data)
{
	gchar *str_a = NULL, *str_b = NULL;
	gint status_a = 0, status_b = 0;
	gint ret = 0;

	gtk_tree_model_get (GTK_TREE_MODEL (model), a, UI_CONTACTS_COLUMN_DISPLAYED, &str_a, UI_CONTACTS_COLUMN_STATUS,
			    &status_a, -1);
	gtk_tree_model_get (GTK_TREE_MODEL (model), b, UI_CONTACTS_COLUMN_DISPLAYED, &str_b, UI_CONTACTS_COLUMN_STATUS,
			    &status_b, -1);

	if ((status_a == GNOMEGADU_STATUS_UNAVAIL) && (status_b != GNOMEGADU_STATUS_UNAVAIL))
		ret = 1;

	if ((status_a != GNOMEGADU_STATUS_UNAVAIL) && (status_b == GNOMEGADU_STATUS_UNAVAIL))
		ret = -1;

	if (str_a && str_b && ret == 0) {
		ret = g_utf8_collate (str_a, str_b);
	}

	g_free (str_a);
	g_free (str_b);
	
	return ret;
}
static int
compare_iters (GtkTreeModel* model, GtkTreeIter* iter_a, GtkTreeIter* iter_b, gpointer user_data)
{
	UnicodeBlock *block_a, *block_b;
	char *label_a, *label_b;
	int ret;

	gtk_tree_model_get (model, iter_a, BLOCK_CHAPTERS_MODEL_UNICODE_BLOCK_PTR, &block_a, -1);
	gtk_tree_model_get (model, iter_b, BLOCK_CHAPTERS_MODEL_UNICODE_BLOCK_PTR, &block_b, -1);

	if (block_a == NULL && block_b != NULL)
		return -1;
	else if (block_a != NULL && block_b == NULL)
		return 1;
	else if (block_a == NULL && block_b == NULL)
		return 0;

	gtk_tree_model_get (model, iter_a, BLOCK_CHAPTERS_MODEL_LABEL, &label_a, -1);
	gtk_tree_model_get (model, iter_b, BLOCK_CHAPTERS_MODEL_LABEL, &label_b, -1);

	ret = g_utf8_collate (label_a, label_b);

	g_free (label_a);
	g_free (label_b);

	return ret;
}
Пример #14
0
static gint
gimp_plug_in_manager_file_proc_compare (gconstpointer a,
                                        gconstpointer b,
                                        gpointer      data)
{
  GimpPlugInProcedure *proc_a = GIMP_PLUG_IN_PROCEDURE (a);
  GimpPlugInProcedure *proc_b = GIMP_PLUG_IN_PROCEDURE (b);
  const gchar         *label_a;
  const gchar         *label_b;
  gint                 retval = 0;

  if (g_str_has_prefix (proc_a->prog, "gimp-xcf"))
    return -1;

  if (g_str_has_prefix (proc_b->prog, "gimp-xcf"))
    return 1;

  label_a = gimp_plug_in_procedure_get_label (proc_a);
  label_b = gimp_plug_in_procedure_get_label (proc_b);

  if (label_a && label_b)
    retval = g_utf8_collate (label_a, label_b);

  return retval;
}
Пример #15
0
static gint tree_compare(GtkTreeModel *model, GtkTreeIter *a, GtkTreeIter *b, gTree *tree)
{
	bool def = true;
	int comp;
	char *ka = tree->iterToKey(a);
	char *kb = tree->iterToKey(b);
	const char *ta, *tb;
	
	//fprintf(stderr, "ka = '%s' kb = '%s'\n", ka, kb);
	
	//if (tree->view && tree->view->onCompare)
	//	def = tree->view->onCompare(tree->view, ka, kb, &comp);
	
	if (def)
	{
		ta = tree->getRow(ka)->get(tree->getSortColumn())->text();
		if (!ta) ta = "";
		tb = tree->getRow(kb)->get(tree->getSortColumn())->text();
		if (!tb) tb = "";
		
		//fprintf(stderr, "ta = '%s' tb = '%s'\n", ta, tb);
	
		comp = g_utf8_collate(ta, tb);
	}
	
	if (!tree->isSortAscending())
		comp = (-comp);
	
	return comp;
}
Пример #16
0
/** used to compare 2 iters and sort the by reconcile number first, and
 * by date and no transaction after
 * always put the white line below
 * \param model the GtkTreeModel
 * \param iter_1
 * \param iter_2
 * \return -1 if iter_1 is above iter_2
 * */
gint gsb_transactions_list_sort_by_reconcile_nb ( gint transaction_number_1,
                        gint transaction_number_2 )
{
    gint return_value;

    if ( gsb_data_transaction_get_reconcile_number ( transaction_number_1) == gsb_data_transaction_get_reconcile_number ( transaction_number_2))
		return gsb_transactions_list_sort_by_date_and_no ( transaction_number_1, transaction_number_2 );
    else
    {
	const gchar *temp_1;
	const gchar *temp_2;

	temp_1 = gsb_data_reconcile_get_name ( gsb_data_transaction_get_reconcile_number ( transaction_number_1));
	temp_2 = gsb_data_reconcile_get_name ( gsb_data_transaction_get_reconcile_number ( transaction_number_2));

	/* g_utf8_collate is said not very fast, must try with big big account to check
	 * if it's enough, for me it's ok (cedric), eventually, change with gsb_strcasecmp */
	return_value = g_utf8_collate ( g_utf8_casefold ( temp_1 ? temp_1 : "",
							  -1 ),
					g_utf8_casefold ( temp_2 ? temp_2 : "",
							  -1 ));
    }

    if ( return_value )
    	return return_value;
    else
		return gsb_transactions_list_sort_by_date_and_no ( transaction_number_1, transaction_number_2 );
}
Пример #17
0
static gboolean
chat_nick_matches_name(PurpleConversation *conv, const char *aname)
{
	PurpleConvChat *chat = NULL;
	char *nick = NULL;
	char *name = NULL;
	gboolean ret = FALSE;
	PurpleAccount *account;

	chat = purple_conversation_get_chat_data(conv);
	if (chat == NULL)
		return ret;

	account = purple_conversation_get_account(conv);
	nick = g_strdup(purple_normalize(account, chat->nick));
	name = g_strdup(purple_normalize(account, aname));

	if (g_utf8_collate(nick, name) == 0)
		ret = TRUE;

	g_free(nick);
	g_free(name);

	return ret;
}
Пример #18
0
static gint _lib_modulelist_gui_sort(GtkTreeModel *model, GtkTreeIter *a, GtkTreeIter *b, gpointer userdata)
{
    dt_iop_module_t *modulea, *moduleb;
    gtk_tree_model_get(model, a, COL_MODULE, &modulea, -1);
    gtk_tree_model_get(model, b, COL_MODULE, &moduleb, -1);
    return g_utf8_collate(modulea->name(), moduleb->name());
}
Пример #19
0
static GtkWidget *
gnc_prefs_find_page (GtkNotebook *notebook, const gchar *name)
{
    int n_pages, i;
    GtkWidget *child;
    const gchar *child_name;

    g_return_val_if_fail (GTK_IS_NOTEBOOK (notebook), NULL);
    g_return_val_if_fail (name, NULL);

    ENTER("");

    n_pages = gtk_notebook_get_n_pages (notebook);

    for (i = 0; i < n_pages; i++)
    {
        child = gtk_notebook_get_nth_page (notebook, i);
        g_return_val_if_fail (child, NULL);

        child_name = gtk_notebook_get_tab_label_text (notebook, child);
        g_return_val_if_fail (child_name, NULL);

        if (g_utf8_collate (name, child_name) == 0)
        {
            LEAVE("found at index: %d", i);
            return child;
        }
    }

    LEAVE("not found");
    return NULL;
}
Пример #20
0
static gint
sort_chat_users_by_pic(GtkTreeModel * model, GtkTreeIter * a,
                       GtkTreeIter * b, gpointer userdata)
{
    GaimConvChatBuddyFlags f1 = 0, f2 = 0;
    gint flag_mask = 0x000F;
    char *user1 = NULL, *user2 = NULL;
    gint ret = 0;

    gtk_tree_model_get(model, a, CHAT_USERS_NAME_COLUMN, &user1,
                       CHAT_USERS_FLAGS_COLUMN, &f1, -1);
    gtk_tree_model_get(model, b, CHAT_USERS_NAME_COLUMN, &user2,
                       CHAT_USERS_FLAGS_COLUMN, &f2, -1);

    f1 = f1 & flag_mask;
    f2 = f2 & flag_mask;

    if (user1 == NULL || user2 == NULL) {
        if (!(user1 == NULL && user2 == NULL))
            ret = (user1 == NULL) ? -1 : 1;
    } else if (f1 != f2) {
        /* sort more important users first */
        ret = (f1 > f2) ? -1 : 1;
    } else {
        ret = g_utf8_collate(user1, user2);
    }

    g_free(user1);
    g_free(user2);
    return ret;
}
Пример #21
0
/* void ggp_confer_participants_add(PurpleConnection *gc, const gchar *chat_name, const uin_t *recipients, int count) {{{ */
void ggp_confer_participants_add(PurpleConnection *gc, const gchar *chat_name,
				 const uin_t *recipients, int count)
{
	GGPInfo *info = gc->proto_data;
	GList *l;
	gchar *str_uin;

	for (l = info->chats; l != NULL; l = l->next) {
		GGPChat *chat = l->data;
		int i;

		if (g_utf8_collate(chat->name, chat_name) != 0)
			continue;

		for (i = 0; i < count; i++) {
			PurpleConversation *conv;

			if (g_list_find(chat->participants,
					GINT_TO_POINTER(recipients[i])) != NULL) {
				continue;
			}

			chat->participants = g_list_append(chat->participants,
							   GINT_TO_POINTER(recipients[i]));

			str_uin = g_strdup_printf("%lu", (unsigned long int)recipients[i]);
			conv = ggp_confer_find_by_name(gc, chat_name);
			purple_conv_chat_add_user(PURPLE_CONV_CHAT(conv),
						str_uin, NULL,
						PURPLE_CBFLAGS_NONE, TRUE);
			g_free(str_uin);
		}
		break;
	}
}
static gint
wp_list_sort (GtkTreeModel *model,
              GtkTreeIter *a, GtkTreeIter *b,
              AppearanceData *data)
{
  MateWPItem *itema, *itemb;
  gint retval;

  gtk_tree_model_get (model, a, 1, &itema, -1);
  gtk_tree_model_get (model, b, 1, &itemb, -1);

  if (!strcmp (itema->filename, "(none)"))
  {
    retval =  -1;
  }
  else if (!strcmp (itemb->filename, "(none)"))
  {
    retval =  1;
  }
  else
  {
    retval = g_utf8_collate (itema->description, itemb->description);
  }

  return retval;
}
Пример #23
0
/* void ggp_confer_participants_add_uin(GaimConnection *gc, const gchar *chat_name, const uin_t uin) {{{ */
void ggp_confer_participants_add_uin(GaimConnection *gc, const gchar *chat_name,
							 const uin_t uin)
{
	GaimConversation *conv;
	GGPInfo *info = gc->proto_data;
	GGPChat *chat;
	GList *l;
	gchar *str_uin;

	for (l = info->chats; l != NULL; l = l->next) {
		chat = l->data;

		if (g_utf8_collate(chat->name, chat_name) != 0)
			continue;

		if (g_list_find(chat->participants, GINT_TO_POINTER(uin)) == NULL) {
			chat->participants = g_list_append(
						chat->participants, GINT_TO_POINTER(uin));

			str_uin = g_strdup_printf("%lu", (unsigned long int)uin);
			conv = ggp_confer_find_by_name(gc, chat_name);
			gaim_conv_chat_add_user(GAIM_CONV_CHAT(conv), str_uin, NULL,
						GAIM_CBFLAGS_NONE, TRUE);

			g_free(str_uin);
		}
		break;
	}
}
Пример #24
0
/** used to compare 2 iters and sort the by category first, and
 * by date and no transaction after
 * always put the white line below
 * \param model the GtkTreeModel
 * \param iter_1
 * \param iter_2
 * \return -1 if iter_1 is above iter_2
 * */
gint gsb_transactions_list_sort_by_category ( gint transaction_number_1,
                        gint transaction_number_2 )
{
    gint return_value;
    gchar *temp_1;
    gchar *temp_2;

    /** we want to take the name of the categ, so, either
     * split of transaction
     * transfer : ...
     * categ : under-categ
     * and after, we sort by str
     * */

    temp_1 = gsb_transactions_get_category_real_name ( transaction_number_1);
    temp_2 = gsb_transactions_get_category_real_name ( transaction_number_2);

    /* g_utf8_collate is said not very fast, must try with big big account to check
     * if it's enough, for me it's ok (cedric), eventually, change with gsb_strcasecmp */
    return_value = g_utf8_collate ( g_utf8_casefold ( temp_1 ? temp_1 : "",
						      -1 ),
				    g_utf8_casefold ( temp_2 ? temp_2 : "",
						      -1 ));

    g_free (temp_1);
    g_free (temp_2);

    if ( return_value )
	    return return_value;
    else
	    return gsb_transactions_list_sort_by_date_and_no ( transaction_number_1, transaction_number_2 );
}
Пример #25
0
static gint
gwy_app_file_chooser_type_compare(gconstpointer a,
                                  gconstpointer b)
{
    return g_utf8_collate(_(gwy_file_func_get_description((const gchar*)a)),
                          _(gwy_file_func_get_description((const gchar*)b)));
}
Пример #26
0
Файл: mu-msg.c Проект: bonega/mu
static int
cmp_str (const char *s1, const char *s2)
{
	if (s1 == s2)
		return 0;
	else if (!s1)
		return -1;
	else if (!s2)
		return 1;

	/* optimization 1: ascii */
	if (isascii(s1[0]) && isascii(s2[0])) {
		int diff;
		diff = tolower(s1[0]) - tolower(s2[0]);
		if (diff != 0)
			return diff;
	}

	/* utf 8 */
	{
		char *u1, *u2;
		int diff;

		u1 = g_utf8_strdown (s1, -1);
		u2 = g_utf8_strdown (s2, -1);

		diff = g_utf8_collate (u1, u2);

		g_free (u1);
		g_free (u2);

		return diff;
	}
}
Пример #27
0
static inline int
compare_string_values (const GValue *a_value, const GValue *b_value)
{
	const char *str1, *str2;
	int retval;

	str1 = g_value_get_string (a_value);
	str2 = g_value_get_string (b_value);

	if (str1 == NULL)
	{
		retval = -1;
	}
	else if (str2 == NULL)
	{
		retval = 1;
	}
	else
	{
		char *str_a;
		char *str_b;

		str_a = g_utf8_casefold (str1, -1);
		str_b = g_utf8_casefold (str2, -1);
		retval = g_utf8_collate (str_a, str_b);
		g_free (str_a);
		g_free (str_b);
	}

	return retval;
}
static gint
place_compare_func (gconstpointer a,
                    gconstpointer b,
                    gpointer user_data)
{
  GtkWidget *child_a, *child_b;
  Place *place_a, *place_b;
  gchar *path;
  gboolean is_home;

  child_a = GTK_WIDGET (a);
  child_b = GTK_WIDGET (b);

  place_a = g_object_get_data (G_OBJECT (child_a), "place");
  place_b = g_object_get_data (G_OBJECT (child_b), "place");

  path = g_file_get_path (place_a->location);
  is_home = (g_strcmp0 (path, g_get_home_dir ()) == 0);
  g_free (path);

  if (is_home)
    return -1;

  if (place_a->place_type == place_b->place_type)
    return g_utf8_collate (place_a->display_name, place_b->display_name);

  if (place_a->place_type == PLACE_XDG)
    return -1;

  if ((place_a->place_type == PLACE_BOOKMARKS) && (place_b->place_type == PLACE_OTHER))
    return -1;

  return 1;
}
Пример #29
0
static gint
schemes_compare(GtkSourceStyleScheme *a, GtkSourceStyleScheme *b)
{
	const gchar *name_a = gtk_source_style_scheme_get_name(a);
	const gchar *name_b = gtk_source_style_scheme_get_name(b);
	return g_utf8_collate(name_a, name_b);
}
Пример #30
0
errno_t sss_utf8_case_eq(const uint8_t *s1, const uint8_t *s2)
{
    gchar *gs1;
    gchar *gs2;
    gssize n1, n2;
    gint gret;
    errno_t ret;

    n1 = g_utf8_strlen((const gchar *)s1, -1);
    n2 = g_utf8_strlen((const gchar *)s2, -1);

    gs1 = g_utf8_casefold((const gchar *)s1, n1);
    if (gs1 == NULL) {
        return ENOMEM;
    }

    gs2 = g_utf8_casefold((const gchar *)s2, n2);
    if (gs2 == NULL) {
        return ENOMEM;
    }

    gret = g_utf8_collate(gs1, gs2);
    if (gret == 0) {
        ret = EOK;
    } else {
        ret = ENOMATCH;
    }

    g_free(gs1);
    g_free(gs2);

    return ret;
}