Logo Search packages:      
Sourcecode: g2ipmsg version File versions  Download package

int setup_encoding_combobox ( GtkComboBox *  combobox  ) 

文字コード一覧をComboBoxに登録する

Parameters:
[out] combobox エンコーディング指定コンボボックス
Return values:
0 正常終了
-EINVAL 引数異常(comboboxがNULL)
-ENOMEM メモリ不足

Definition at line 218 of file codeset.c.

References check_valid_encoding(), IPMSG_WINIPMSG_PROTO_CODE, and supported_codes.

                                               {
  int                        i =  0;
  int                       rc =  0;
  int                    index = -1;
  int                  code_nr =  0;
  const char *current_encoding = NULL;

  if (combobox == NULL) {
    rc = -EINVAL;
    goto error_out;
  }

  /* デフォルトエンコードを先頭に持ってくる
   * 指定されたデフォルトエンコードが使用できなかった場合は,
   * Windows版のデフォルトであるCP932を使用する.
   */
  rc = check_valid_encoding(IPMSG_EXTERNAL_CHARCODE);
  if (rc == 0)
    gtk_combo_box_append_text(combobox, IPMSG_EXTERNAL_CHARCODE);
  else
    gtk_combo_box_append_text(combobox, IPMSG_WINIPMSG_PROTO_CODE);

  /*
   * 現在の設定値を確認
   */
  current_encoding = hostinfo_refer_encoding();
  if (!strcasecmp(IPMSG_EXTERNAL_CHARCODE, current_encoding))
    index = 0; /* 現在の設定値を設定  */

  for(i = 0, code_nr = 1; supported_codes[i] != NULL; ++i) {
    /*
     * エンコーディングの有効性を確認
     */
    rc = check_valid_encoding(supported_codes[i]);
    if (rc != 0) {
      err_out("Codeset:^s can not supported on this platform.\n", supported_codes[i]);
      continue; /* 使用不可能 */
    }

    /*
     * デフォルト以外を登録
     */
    if (strcasecmp(IPMSG_EXTERNAL_CHARCODE, supported_codes[i])) {
      gtk_combo_box_append_text(combobox, supported_codes[i]);

      /*
       * エンコードの設定値をデフォルトにする
       */
      if (!strcasecmp(supported_codes[i], current_encoding))
      index = code_nr; /* インデクスを設定  */
      ++code_nr;
    }
  }

  /* 現在のエンコードをアクティブにする  */
  if (index > 0)
    gtk_combo_box_set_active(combobox, index); 
  else
    gtk_combo_box_set_active(combobox, 0);

 success_out:
  rc = 0;

  error_out:
    return rc;
}


Generated by  Doxygen 1.6.0   Back to index