00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027 #include <libheraia.h>
00028
00029 static GladeXML *load_glade_xml_if_it_exists(char *file_to_load);
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040 gboolean load_file_to_analyse(heraia_window_t *main_window, gchar *filename)
00041 {
00042 struct stat *stat_buf = NULL;
00043 gboolean success = FALSE;
00044 GtkWidget *notebook = NULL;
00045 HERAIA_ERROR status = HERAIA_NOERR;
00046
00047 g_return_val_if_fail(filename != NULL, FALSE);
00048 g_return_val_if_fail(main_window != NULL, FALSE);
00049
00050 stat_buf = (struct stat *) g_malloc0 (sizeof(struct stat));
00051 stat(filename, stat_buf);
00052
00053 log_message(main_window, G_LOG_LEVEL_DEBUG, "filename to load : %s", filename);
00054
00055 if (S_ISREG(stat_buf->st_mode) && stat_buf->st_size>0)
00056 {
00057
00058 status = heraia_hex_document_new(main_window, filename);
00059
00060 if (status == HERAIA_NOERR)
00061 {
00062 gtk_box_pack_start(GTK_BOX(heraia_get_widget(main_window->xmls->main, "vbox1")),
00063 main_window->current_DW->current_hexwidget, TRUE, TRUE, 0);
00064
00065 gtk_widget_show(main_window->current_DW->current_hexwidget);
00066
00067 log_message(main_window, G_LOG_LEVEL_DEBUG, "Hexwidget : %p", main_window->current_DW->current_hexwidget);
00068
00069 success = TRUE;
00070
00071 if (main_window->filename != filename)
00072 {
00073 if (main_window->filename != NULL)
00074 {
00075 g_free(main_window->filename);
00076 }
00077 main_window->filename = g_strdup_printf("%s", filename);
00078 }
00079
00080
00081 update_main_window_name(main_window);
00082 set_notebook_tab_name(main_window);
00083
00084
00085 gtk_widget_set_sensitive(heraia_get_widget(main_window->xmls->main, "save"), TRUE);
00086 gtk_widget_set_sensitive(heraia_get_widget(main_window->xmls->main, "save_as"), TRUE);
00087 notebook = heraia_get_widget(main_window->xmls->main, "file_notebook");
00088 gtk_widget_show(notebook);
00089
00090 log_message(main_window, G_LOG_LEVEL_DEBUG, "file %s loaded !", main_window->filename);
00091 }
00092 else
00093 {
00094 log_message(main_window, G_LOG_LEVEL_ERROR, "Error while trying to load file %s", main_window->filename);
00095 success = FALSE;
00096 }
00097
00098 }
00099 else
00100 {
00101 if (S_ISREG(stat_buf->st_mode))
00102 {
00103 log_message(main_window, G_LOG_LEVEL_WARNING, "The file %s is empty !", filename);
00104 }
00105 else
00106 {
00107 log_message(main_window, G_LOG_LEVEL_WARNING, "The file %s does not exist !", filename);
00108 }
00109 success = FALSE;
00110 }
00111
00112 g_free(stat_buf);
00113
00114 return success;
00115 }
00116
00117
00118
00119
00120
00121
00122
00123
00124
00125 static GladeXML *load_glade_xml_if_it_exists(gchar *file_to_load)
00126 {
00127 struct stat *stat_buf;
00128 GladeXML *xml = NULL;
00129
00130 stat_buf = (struct stat *) g_malloc0 (sizeof(struct stat));
00131
00132 stat(file_to_load, stat_buf);
00133 if (S_ISREG(stat_buf->st_mode) && stat_buf->st_size>0)
00134 {
00135 xml = glade_xml_new(file_to_load, NULL, NULL);
00136 }
00137 else
00138 {
00139 xml = NULL;
00140 }
00141
00142 g_free(stat_buf);
00143
00144 return xml;
00145 }
00146
00147
00148
00149
00150
00151
00152
00153
00154
00155
00156 GladeXML *load_glade_xml_file(GList *location_list, gchar *filename)
00157 {
00158 gchar *file_to_load = NULL;
00159 GList *list = g_list_first(location_list);
00160 GladeXML *xml = NULL;
00161
00162 while (list != NULL && xml == NULL)
00163 {
00164 file_to_load = g_build_filename((gchar *) list->data, filename, NULL);
00165
00166 xml = load_glade_xml_if_it_exists(file_to_load);
00167
00168 if (xml == NULL)
00169 {
00170 list = list->next;
00171 }
00172 g_free(file_to_load);
00173 }
00174
00175 return xml;
00176 }
00177
00178
00179
00180
00181
00182
00183
00184
00185 gboolean load_preference_file(heraia_window_t *main_window)
00186 {
00187 if (main_window != NULL && main_window->prefs != NULL)
00188 {
00189 return g_key_file_load_from_file(main_window->prefs->file, main_window->prefs->filename, G_KEY_FILE_KEEP_COMMENTS & G_KEY_FILE_KEEP_TRANSLATIONS, NULL);
00190 }
00191 else
00192 {
00193 return FALSE;
00194 }
00195 }
00196
00197
00198
00199
00200
00201
00202
00203
00204 gboolean save_preferences_to_file(prefs_t *prefs)
00205 {
00206 gsize length = 0;
00207 gchar *contents = NULL;
00208 gboolean result = FALSE;
00209
00210 if (prefs != NULL && prefs->file != NULL && prefs->filename != NULL)
00211 {
00212 contents = g_key_file_to_data(prefs->file, &length, NULL);
00213 result = g_file_set_contents(prefs->filename, contents, length, NULL);
00214 g_free(contents);
00215 }
00216
00217 return result;
00218 }
00219
00220
00221