133 |
{ |
{ |
134 |
gboolean success; |
gboolean success; |
135 |
GError *error = NULL; |
GError *error = NULL; |
136 |
gchar *buffer; |
gchar *buffer = NULL; |
137 |
|
|
138 |
/* Read file */ |
/* Read file */ |
139 |
success = g_file_get_contents (filename, &buffer, NULL, &error); |
success = g_file_get_contents (filename, &buffer, NULL, &error); |
140 |
|
|
141 |
|
if (!success && error->code == G_FILE_ERROR_NOENT) |
142 |
|
{ |
143 |
|
/* We are trying to open a non-existant file. This is OK. |
144 |
|
We merely set the buffer to empty and treat it like a |
145 |
|
success. */ |
146 |
|
success = TRUE; |
147 |
|
buffer = g_strdup (""); |
148 |
|
} |
149 |
|
|
150 |
if (!success) |
if (!success) |
151 |
{ |
{ |
152 |
gchar *primary; |
gchar *primary; |
225 |
** Return values : |
** Return values : |
226 |
** void |
** void |
227 |
*/ |
*/ |
228 |
void open_file_in_editor(GtkWidget *Editor, |
void open_file_in_editor (GtkWidget *Editor, const gchar *Filename, |
229 |
const gchar *Filename, gint CurrentPage) |
gint CurrentPage) |
230 |
{ |
{ |
231 |
GtkTextIter start; |
GtkTextIter start; |
232 |
GtkTextBuffer *Buffer; |
GtkTextBuffer *Buffer; |
233 |
|
|
234 |
START_FCN |
START_FCN |
235 |
|
|
236 |
Buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (Editor)); |
Buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (Editor)); |
237 |
|
|
238 |
if (Filename) |
/* connect our buffer */ |
239 |
{ |
FPROPS (CurrentPage, Buffer) = Buffer; |
240 |
gtk_source_buffer_begin_not_undoable_action (GTK_SOURCE_BUFFER (Buffer)); |
|
241 |
load_file_contents_into_buffer (CurrentPage, Filename); |
gtk_source_view_set_show_line_numbers (GTK_SOURCE_VIEW (Editor), |
242 |
gtk_source_buffer_end_not_undoable_action (GTK_SOURCE_BUFFER (Buffer)); |
Settings.show_line_numbers); |
243 |
} |
gtk_source_view_set_show_margin (GTK_SOURCE_VIEW (Editor), |
244 |
else |
Settings.show_margin); |
245 |
{ |
gtk_source_view_set_tabs_width (GTK_SOURCE_VIEW (Editor), |
246 |
gtk_source_buffer_set_highlight (GTK_SOURCE_BUFFER (Buffer), FALSE); |
Settings.tab_width); |
247 |
} |
gtk_source_view_set_auto_indent (GTK_SOURCE_VIEW (Editor), |
248 |
|
Settings.auto_indent); |
249 |
|
|
250 |
/* display line numbers */ |
if (Filename) |
251 |
gtk_source_view_set_show_line_numbers (GTK_SOURCE_VIEW (Editor), Settings.show_line_numbers); |
{ |
252 |
|
gtk_source_buffer_begin_not_undoable_action ( |
253 |
/* display margin */ |
GTK_SOURCE_BUFFER (Buffer)); |
254 |
gtk_source_view_set_show_margin (GTK_SOURCE_VIEW (Editor), Settings.show_margin); |
load_file_contents_into_buffer (CurrentPage, Filename); |
255 |
|
gtk_source_buffer_end_not_undoable_action (GTK_SOURCE_BUFFER (Buffer)); |
256 |
/* tab width */ |
} |
257 |
gtk_source_view_set_tabs_width (GTK_SOURCE_VIEW (Editor), Settings.tab_width); |
else |
258 |
|
{ |
259 |
/* connect new buffer */ |
gtk_source_buffer_set_highlight (GTK_SOURCE_BUFFER (Buffer), FALSE); |
260 |
FPROPS (CurrentPage, Buffer) = Buffer; |
} |
261 |
|
|
262 |
gtk_text_buffer_get_start_iter(Buffer, &start); |
gtk_text_buffer_get_start_iter (Buffer, &start); |
263 |
gtk_text_buffer_place_cursor(Buffer, &start); |
gtk_text_buffer_place_cursor (Buffer, &start); |
264 |
gtk_widget_grab_focus(Editor); |
gtk_widget_grab_focus (Editor); |
265 |
gtk_text_buffer_set_modified(Buffer, FALSE); |
|
266 |
FPROPS(CurrentPage, Format) = get_format_type (CurrentPage); |
FPROPS (CurrentPage, Format) = get_format_type (CurrentPage); |
267 |
FPROPS(CurrentPage, LastSave) = time (NULL); |
FPROPS (CurrentPage, LastSave) = time (NULL); |
268 |
|
|
269 |
gtk_source_view_set_auto_indent (GTK_SOURCE_VIEW (Editor), Settings.auto_indent); |
note_format (); |
270 |
|
note_saveable (); |
271 |
note_saveable (); |
|
272 |
|
g_signal_connect_swapped (G_OBJECT (Buffer), "can-undo", |
273 |
g_signal_connect_swapped (G_OBJECT (Buffer), "can-undo", |
G_CALLBACK (note_redoundo), |
274 |
G_CALLBACK (note_redoundo), GINT_TO_POINTER (CurrentPage)); |
GINT_TO_POINTER (CurrentPage)); |
275 |
g_signal_connect_swapped (G_OBJECT (Buffer), "can-redo", |
g_signal_connect_swapped (G_OBJECT (Buffer), "can-redo", |
276 |
G_CALLBACK (note_redoundo), GINT_TO_POINTER (CurrentPage)); |
G_CALLBACK (note_redoundo), |
277 |
g_signal_connect (G_OBJECT (Editor), "key-press-event", |
GINT_TO_POINTER (CurrentPage)); |
278 |
G_CALLBACK (catch_mult_line_indents), GINT_TO_POINTER (CurrentPage)); |
g_signal_connect (G_OBJECT (Editor), "key-press-event", |
279 |
g_signal_connect(G_OBJECT(Buffer), "modified-changed", |
G_CALLBACK (catch_mult_line_indents), |
280 |
G_CALLBACK (buffer_changed), NULL); |
GINT_TO_POINTER (CurrentPage)); |
281 |
|
g_signal_connect (G_OBJECT(Buffer), "modified-changed", |
282 |
note_format (); |
G_CALLBACK (buffer_changed), NULL); |
283 |
|
|
284 |
END_FCN |
gtk_text_buffer_set_modified (Buffer, FALSE); |
285 |
return; |
|
286 |
|
END_FCN |
287 |
|
return; |
288 |
} |
} |
289 |
|
|
290 |
gboolean catch_mult_line_indents (GtkWidget *widget, GdkEventKey *event, gpointer data) |
gboolean catch_mult_line_indents (GtkWidget *widget, GdkEventKey *event, gpointer data) |