コード例 #1
0
ファイル: extra.c プロジェクト: skazypl/spellchecker
int update_actual_dict()
{
  GtkWidget *dialog;

  if(dict == NULL)
  {
    if(strcmp(dict_location, DEFAULT_LOC) == 0)
    {
      printf("Nie znaleziono słownika, ładuję pierwszy z folderu\n");
      char* list = NULL;
      size_t len = 0;

      if(dictionary_lang_list(&list, &len) < 0)
      {
        char* err_msg =
        "Błąd ładowania listy słowników!\nSprawdź zawartość katalogu CONF_PATH";
        
        dialog = gtk_message_dialog_new(NULL, 0, GTK_MESSAGE_ERROR,
                                        GTK_BUTTONS_OK,
                                        err_msg);
        gtk_dialog_run(GTK_DIALOG(dialog));
        gtk_widget_destroy(dialog);
        return -1; 
      }
      if(len == 0)
      {
        char* err_msg =
        "Brak słowników!";
        
        dialog = gtk_message_dialog_new(NULL, 0, GTK_MESSAGE_ERROR,
                                        GTK_BUTTONS_OK,
                                        err_msg);
        gtk_dialog_run(GTK_DIALOG(dialog));
        gtk_widget_destroy(dialog);
        return -1; 
      }
      if((dict = dictionary_load_lang(list)) == NULL)
      {
        char* err_msg =
        "Nie udało się załadować słownika!";
        
        dialog = gtk_message_dialog_new(NULL, 0, GTK_MESSAGE_ERROR,
                                        GTK_BUTTONS_OK,
                                        err_msg);
        gtk_dialog_run(GTK_DIALOG(dialog));
        gtk_widget_destroy(dialog);
        return -1; 
      }
      strcpy(dict_location, list);
      free(list);
      printf("Uaktualniono słownik - obecnie %s\n", dict_location);
      return 0;
    }
    return -1;
  }
  return 0;
}
コード例 #2
0
ファイル: extra.c プロジェクト: agaX/SpellChecker
/**
  Wyświetlenie listy dostępnych słowników i wczytanie jednego z nich.
  @param[in] item element menu.
  @param[in] data wskaźnik na wartość.
  */
void load_dictionary_from_menu(GtkMenuItem *item, gpointer data) {
  GtkWidget *dialog;
  GtkWidget *vbox, *label, *combo;
  dialog = gtk_dialog_new_with_buttons("Wczytaj słownik", NULL, 0, 
                                       GTK_STOCK_OK,
                                       GTK_RESPONSE_ACCEPT,
                                       GTK_STOCK_CANCEL,
                                       GTK_RESPONSE_REJECT,
                                       NULL);
  // W treści dialogu dwa elementy
  vbox = gtk_dialog_get_content_area(GTK_DIALOG(dialog));
  // Tekst
  label = gtk_label_new("Lista dostępnych słowników:");
  gtk_widget_show(label);
  gtk_box_pack_start(GTK_BOX(vbox), label, FALSE, FALSE, 1);

  // Spuszczane menu
  combo = gtk_combo_box_text_new();
  DIR *dir;
  struct dirent *ent;
  if ((dir = opendir(CONF_PATH)) != NULL) {
    while ((ent = readdir(dir)) != NULL) {
      if (ent->d_name[0] != '.')
        gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(combo), ent->d_name);
    }
    closedir(dir);
  }
  gtk_combo_box_set_active(GTK_COMBO_BOX(combo), 0);
  gtk_box_pack_start(GTK_BOX(vbox), combo, FALSE, FALSE, 1);
  gtk_widget_show(combo);

  if (gtk_dialog_run(GTK_DIALOG(dialog)) == GTK_RESPONSE_ACCEPT) {
    dictionary_save_lang(dict, dictionary_name);
    dictionary_name = gtk_combo_box_text_get_active_text(GTK_COMBO_BOX_TEXT(combo));
    dictionary_done(dict);
    dict = dictionary_load_lang(dictionary_name);
  }
  gtk_widget_destroy(dialog);
}
コード例 #3
0
ファイル: extra.c プロジェクト: skazypl/spellchecker
// Procedura ładowania języka
static void ChooseLang (GtkMenuItem *item, gpointer data)
{
    GtkWidget *dialog, *vbox, *label, *combo;
    dialog = gtk_dialog_new_with_buttons("Wybierz...", NULL, 0, 
                                         GTK_STOCK_OK,
                                         GTK_RESPONSE_ACCEPT,
                                         GTK_STOCK_CANCEL,
                                         GTK_RESPONSE_REJECT,
                                         NULL);
    // W treści dialogu dwa elementy
    vbox = gtk_dialog_get_content_area(GTK_DIALOG(dialog));
    // Tekst
    label =
      gtk_label_new("Oto lista języków,\ndla których są dostępne słowniki");
    gtk_widget_show(label);
    gtk_box_pack_start(GTK_BOX(vbox), label, FALSE, FALSE, 1);

    char *list = NULL;
    size_t len = 0;
    if(dictionary_lang_list(&list, &len) < 0) {
      GtkWidget* err_dialog = 
                      gtk_message_dialog_new(NULL, 0, GTK_MESSAGE_ERROR,
                                             GTK_BUTTONS_OK,
                                             "Błąd pobierania listy języków!");
      gtk_dialog_run(GTK_DIALOG(err_dialog));
      gtk_widget_destroy(err_dialog);
      return;  
    }

    // Spuszczane menu
    combo = gtk_combo_box_text_new();

    char* lastFirst = list;
    for (size_t i = 0; i < len; i++)
    {
      if ((list + i)[0] == '\0')
      {
        // Dodajemy kolejny element
        gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(combo), lastFirst);
        
        lastFirst = list + i + 1;
      }
    }

    gtk_combo_box_set_active(GTK_COMBO_BOX(combo), 0);
    gtk_box_pack_start(GTK_BOX(vbox), combo, FALSE, FALSE, 1);
    gtk_widget_show(combo);

    if(gtk_dialog_run(GTK_DIALOG(dialog)) == GTK_RESPONSE_ACCEPT)
    {
      const char* wybranyJezyk
        = gtk_combo_box_text_get_active_text(GTK_COMBO_BOX_TEXT(combo));
       
       //zapisujemy stary słownik - ktoś mógł coś tam dodać i mógł się zmienić
      if(strcmp(dict_location, DEFAULT_LOC) != 0)
        dictionary_save_lang(dict, dict_location);

       // i ładujemy wybrany
      struct dictionary* tempDict = dictionary_load_lang(wybranyJezyk);

      // Jeśli wybrany jest ok, to podmienimy go
      if(tempDict == NULL)
      {
        GtkWidget* err_dialog = 
                      gtk_message_dialog_new(NULL, 0, GTK_MESSAGE_ERROR,
                                             GTK_BUTTONS_OK,
                                             "Nie udało się wczytać słownika!");
        gtk_dialog_run(GTK_DIALOG(err_dialog));
        gtk_widget_destroy(err_dialog);
      }
      if(dict != NULL)
        dictionary_done(dict);

      dict = tempDict;
      strcpy(dict_location, wybranyJezyk);
      //free(wybranyJezyk);
    }
    gtk_widget_destroy(dialog);

    free(list);
}