static void connect_dialog_init (ConnectDialog *dialog) { gchar *path = locate_data_file ("connect-dialog.glade"); g_assert(path != NULL); GtkBuilder *xml = gtk_builder_new (); g_assert (gtk_builder_add_from_file ( xml, path, NULL) != 0); g_free (path); #define GW(name) ((dialog->name) = GTK_WIDGET (gtk_builder_get_object (xml, #name))) GW(toplevel); GW(server_list); #undef GW g_object_unref (xml); dialog->server_store = gtk_list_store_new (2, G_TYPE_STRING, G_TYPE_POINTER); gtk_tree_view_set_model (GTK_TREE_VIEW (dialog->server_list), GTK_TREE_MODEL (dialog->server_store)); GtkCellRenderer *renderer = gtk_cell_renderer_text_new (); GtkTreeViewColumn *column = gtk_tree_view_column_new_with_attributes ("name", renderer, "text", 0, NULL); gtk_tree_view_append_column (GTK_TREE_VIEW (dialog->server_list), column); GtkWidget *button = gtk_button_new_with_mnemonic (_("C_onnect")); gtk_dialog_add_button (GTK_DIALOG (dialog), GTK_STOCK_CLOSE, GTK_RESPONSE_CLOSE); gtk_dialog_add_action_widget (GTK_DIALOG (dialog), button, GTK_RESPONSE_OK); gtk_container_set_border_width (GTK_CONTAINER (dialog), 6); GtkWidget *content_area = gtk_dialog_get_content_area (GTK_DIALOG (dialog)); gtk_widget_reparent (dialog->toplevel, content_area); g_signal_connect (G_OBJECT (dialog->server_list), "row-activated", G_CALLBACK (row_activated), dialog); g_signal_connect ( G_OBJECT (gtk_tree_view_get_selection (GTK_TREE_VIEW (dialog->server_list))), "changed", G_CALLBACK (selection_changed), dialog); for (GSList *netlist = network_list; netlist; netlist = g_slist_next (netlist)) { GtkTreeIter iter; ircnet *net = netlist->data; gtk_list_store_append (dialog->server_store, &iter); gtk_list_store_set (dialog->server_store, &iter, 0, net->name, 1, net, -1); } gtk_window_set_default_size (GTK_WINDOW (dialog), 320, 240); gtk_window_set_modal (GTK_WINDOW (dialog), TRUE); gtk_window_set_title (GTK_WINDOW (dialog), _("Connect")); gtk_dialog_set_response_sensitive (GTK_DIALOG (dialog), GTK_RESPONSE_OK, FALSE); g_signal_connect (G_OBJECT (dialog), "response", G_CALLBACK (dialog_response), NULL); g_signal_connect (G_OBJECT (dialog), "key-press-event", G_CALLBACK (dialog_escape_key_handler_destroy), NULL); }
/** * Load a file in memory buffer already allocated * @param filename the file which should be loaded * @param buffer pointer to the buffer where data are stored * @return boolean value on success or failure */ bool loadfile_into_buffer (const char *const filename, char *const buffer) { size_t fsize; FILE *fstream; char *pathname = locate_data_file (filename); if (pathname == NULL) { LOG_ERR ("can't locate file: '%s'", filename); return FALSE; } #ifdef WIN32 fstream = fopen (pathname, "rb"); #else fstream = fopen (pathname, "r"); #endif if (fstream == NULL) { #if defined(_WIN32_WCE) LOG_ERR ("can't open \"%s\" file", pathname); #else LOG_ERR ("can't open \"%s\" file (%s)", pathname, strerror (errno)); #endif free_memory (pathname); return FALSE; } fsize = get_file_size (fstream); if (fsize == 0) { fclose (fstream); LOG_ERR ("file \"%s\" is empty!", filename); return FALSE; } if (fread (buffer, sizeof (char), fsize, fstream) != fsize) { #if defined(_WIN32_WCE) LOG_ERR ("can't read \"%s\" file", pathname); #else LOG_ERR ("can't read \"%s\" file (%s)", pathname, strerror (errno)); #endif fclose (fstream); free_memory (pathname); return FALSE; } fclose (fstream); LOG_DBG ("\"%s\" file was loaded in memory", pathname); free_memory (pathname); return TRUE; }
//------------------------------------------------------------------------------ // load a file in memory // input => _pNomFichier : filename // sortie <= _pMemoire : ptr/integer //------------------------------------------------------------------------------ char *chargeFichier(char *_pNomFichier, unsigned int *pTaille) { int _iHandle; char *_pMemoire; struct stat sDescriptionFichier; char *pathname = locate_data_file(_pNomFichier); if(pathname == 0) { printf("linuxroutines/chargeFichier() : can't locate file : %s\n\n", _pNomFichier); return 0; } #ifdef WIN32 _iHandle = open(pathname, O_RDONLY | O_BINARY, 0); #else _iHandle = open(pathname, O_RDONLY, 0); #endif if(_iHandle == -1) { printf("linuxroutines/chargeFichier() : can't open file : %s (%s)\n\n", pathname, strerror(errno)); //free(pathname); return 0; } if(fstat(_iHandle, &sDescriptionFichier)) { printf("linuxroutines/chargeFichier() : can't stat file : %s (%s)\n\n", pathname, strerror(errno)); close(_iHandle); //free(pathname); return 0; } (*pTaille) = sDescriptionFichier.st_size; //sauve taille _pMemoire = reserveMemoire(sDescriptionFichier.st_size); //reserve la place en memoire pour lire le fichier if(!_pMemoire) { printf("linuxroutines/chargeFichier() %s : out of memory\n\n", pathname); close(_iHandle); //free(pathname); return 0; } if(read(_iHandle, _pMemoire, sDescriptionFichier.st_size) != sDescriptionFichier.st_size) { libereMemoire(_pMemoire); printf("linuxroutines/chargeFichier() can't read file %s (%s)\n\n", pathname, strerror(errno)); close(_iHandle); //free(pathname); return 0; } close(_iHandle); #ifdef _VERBEUX_ if(iVerbeux > 1) printf("linuxroutines/chargeFichier : file %s was loaded in memory\n", pathname); #endif //free(pathname); return _pMemoire; }
gboolean initialize_gui_1(void) { gui.initialized = FALSE; gui.manager = gtk_ui_manager_new(); gchar *path = locate_data_file("xchat-gnome.glade"); g_assert(path != NULL); gui.xml = gtk_builder_new(); g_assert(gtk_builder_add_from_file(gui.xml, path, NULL) != 0); g_free(path); return TRUE; }
/** * Allocate memory and load a file there * @param filename the file which should be loaded * @param fsize pointer on the size of file which will be loaded * @return file data buffer pointer */ char * loadfile (const char *const filename, Uint32 * const fsize) { char *buffer; char *pathname = locate_data_file (filename); if (pathname == NULL) { LOG_ERR ("can't locate file %s", filename); return NULL; } buffer = load_absolute_file (pathname, fsize); if (buffer == NULL) { free_memory (pathname); return NULL; } free_memory (pathname); return buffer; }
//------------------------------------------------------------------------------ // load a file in memory / charge un fichier en memoire // input => _pNomFichier : filename / nom du fichier // => _pMemoire : pointer to memory / pointeur sur la memoire // output <= 1 : 0 error/erreur //------------------------------------------------------------------------------ int chargeFichier(char *_pNomFichier, char *_pMemoire) { int _iHandle; struct stat sDescriptionFichier; char *pathname = locate_data_file(_pNomFichier); if(pathname == 0) { printf("linuxroutines/chargeFichier() : can't locate file : %s\n\n", _pNomFichier); return 0; } #ifdef WIN32 _iHandle = open(pathname, O_RDONLY | O_BINARY, 0); #else _iHandle = open(pathname, O_RDONLY, 0); #endif if(_iHandle == -1) { printf ("linuxroutines.cpp/chargeFichier() : can't open file : %s (%s)\n\n", pathname, strerror(errno)); //free(pathname); return 0; } if(fstat(_iHandle, &sDescriptionFichier)) { printf ("linuxroutines.cpp/chargeFichier() : can't stat file : %s (%s)\n\n", pathname, strerror(errno)); close(_iHandle); //free(pathname); return 0; } if(read(_iHandle, _pMemoire, sDescriptionFichier.st_size) != sDescriptionFichier.st_size) { printf("linuxroutines.cpp/chargeFichier() can't read file %s (%s)\n\n", pathname, strerror(errno)); close(_iHandle); //free(pathname); return 0; } close(_iHandle); #ifdef _VERBEUX_ if(iVerbeux > 1) printf("linuxroutines/chargeFichier : file %s was loaded in memory\n", pathname); #endif //free(pathname); return 1; }
static void preferences_dialog_init (PreferencesDialog *p) { GtkCellRenderer *icon_renderer, *text_renderer; GtkTreeViewColumn *column; GtkTreeSelection *select; p->gconf = NULL; p->dialog = NULL; gchar *path = locate_data_file ("preferences-dialog.glade"); g_assert (path != NULL); GtkBuilder *xml = gtk_builder_new (); g_assert (gtk_builder_add_from_file ( xml, path, NULL) != 0); g_free (path); #define GW(name) ((p->name) = GTK_WIDGET (gtk_builder_get_object (xml, #name))) GW(dialog); GW(settings_page_list); GW(settings_notebook); #undef GW p->gconf = gconf_client_get_default (); g_assert (p->dialog); g_signal_connect (p->dialog, "response", G_CALLBACK (preferences_response), p); g_signal_connect (p->dialog, "key-press-event", G_CALLBACK (dialog_escape_key_handler_hide), NULL); gtk_notebook_set_show_tabs (GTK_NOTEBOOK (p->settings_notebook), FALSE); p->page_store = gtk_list_store_new (4, GDK_TYPE_PIXBUF, G_TYPE_STRING, G_TYPE_INT, G_TYPE_POINTER); gtk_tree_view_set_model (GTK_TREE_VIEW (p->settings_page_list), GTK_TREE_MODEL (p->page_store)); column = gtk_tree_view_column_new (); icon_renderer = gtk_cell_renderer_pixbuf_new (); text_renderer = gtk_cell_renderer_text_new (); gtk_tree_view_column_pack_start (column, icon_renderer, FALSE); gtk_tree_view_column_set_attributes (column, icon_renderer, "pixbuf", 0, NULL); gtk_tree_view_column_pack_start (column, text_renderer, FALSE); gtk_tree_view_column_set_attributes (column, text_renderer, "text", 1, NULL); gtk_tree_view_append_column (GTK_TREE_VIEW (p->settings_page_list), column); select = gtk_tree_view_get_selection (GTK_TREE_VIEW (p->settings_page_list)); gtk_tree_selection_set_mode (select, GTK_SELECTION_SINGLE); g_signal_connect (G_OBJECT (select), "changed", G_CALLBACK (page_selection_changed), p); p->irc_page = preferences_page_irc_new (p, xml); p->spellcheck_page= preferences_page_spellcheck_new (p,xml); p->colors_page = preferences_page_colors_new (p, xml); p->effects_page = preferences_page_effects_new (p, xml); p->dcc_page = preferences_page_dcc_new (p, xml); p->networks_page = preferences_page_networks_new (p, xml); #ifdef USE_PLUGIN p->plugins_page = preferences_page_plugins_new (p, xml); g_signal_connect (p->plugins_page, "new-plugin-page", G_CALLBACK (new_plugin_page), p); g_signal_connect (p->plugins_page, "remove-plugin-page", G_CALLBACK (remove_plugin_page), p); preferences_page_plugins_check_plugins (p->plugins_page); #endif g_object_unref (xml); }
/** * Load configuration file from "~/.tlkgames/powermanga.conf" * @return TRUE if it completed successfully or FALSE otherwise */ bool configfile_load (void) { #if !defined(_WIN32_WCE) Uint32 length; #endif lisp_object_t *root_obj, *lst, *sub; char *str; /* allocate config structure */ if (power_conf == NULL) { power_conf = (config_file *) memory_allocation (sizeof (config_file)); if (power_conf == NULL) { LOG_ERR ("not enough memory to allocate 'power_conf'!"); return FALSE; } } configfile_reset_values (); if (!configfile_check_dir ()) { return TRUE; } if (configname == NULL) { #if defined(_WIN32_WCE) configname = locate_data_file (config_file_name); if (configname == NULL) { LOG_ERR ("can't locate file: %s", config_file_name); return FALSE; } #else length = strlen (config_dir) + strlen (config_file_name) + 2; configname = memory_allocation (length); if (configname == NULL) { LOG_ERR ("not enough memory to allocate %i bytes!", length); return FALSE; } #endif } sprintf (configname, "%s/%s", config_dir, config_file_name); LOG_INF ("configuration filename: %s", configname); root_obj = lisp_read_file (configname); if (root_obj == NULL) { LOG_ERR ("lisp_read_file(%s) failed!", configname); return TRUE; } if (root_obj->type == LISP_TYPE_EOF || root_obj->type == LISP_TYPE_PARSE_ERROR) { LOG_ERR ("lisp_read_file(%s) failed!", configname); lisp_free (root_obj); return TRUE; } if (strcmp (lisp_symbol (lisp_car (root_obj)), "powermanga-config") != 0) { LOG_ERR ("lisp_read_file(%s) failed!", configname); lisp_free (root_obj); return TRUE; } lst = lisp_cdr (root_obj); if (!lisp_read_string (lst, "lang", &str)) { power_conf->lang = EN_LANG; } else { if (strcmp (str, "fr") == 0) { power_conf->lang = FR_LANG; } else if (strcmp (str, "it") == 0) { power_conf->lang = IT_LANG; } else { power_conf->lang = EN_LANG; } } if (!lisp_read_bool (lst, "fullscreen", &power_conf->fullscreen)) { power_conf->fullscreen = TRUE; } if (!lisp_read_bool (lst, "nosound", &power_conf->nosound)) { power_conf->nosound = FALSE; } if (!lisp_read_bool (lst, "nosync", &power_conf->nosync)) { power_conf->nosync = FALSE; } if (!lisp_read_int (lst, "verbose", &power_conf->verbose)) { power_conf->verbose = 0; } if (!lisp_read_int (lst, "scale_x", &power_conf->scale_x)) { power_conf->scale_x = 2; } if (power_conf->scale_x < 1 || power_conf->scale_x > 4) { power_conf->scale_x = 2; } if (!lisp_read_int (lst, "resolution", &power_conf->resolution)) { power_conf->resolution = 640; } if (power_conf->resolution != 320 && power_conf->resolution != 640) { power_conf->resolution = 640; } if (power_conf->scale_x > 1) { power_conf->resolution = 640; } sub = search_for (lst, "joy_config"); if (sub) sub = lisp_car_int (sub, &power_conf->joy_x_axis); if (sub) sub = lisp_car_int (sub, &power_conf->joy_y_axis); if (sub) sub = lisp_car_int (sub, &power_conf->joy_fire); if (sub) sub = lisp_car_int (sub, &power_conf->joy_option); if (sub) sub = lisp_car_int (sub, &power_conf->joy_start); lisp_free (root_obj); configfile_print(); return TRUE; }