Switch raw sector buffer loading/saving to GtkFileChooserDialog
This commit is contained in:
committed by
Stéphane Lesimple
parent
f8678eb3be
commit
3967ff3cae
@@ -388,12 +388,15 @@ static void save_sector(raw_editor_context *rec)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/***
|
/***
|
||||||
*** Raw sector buffer loading/savinf
|
*** Raw sector buffer loading/saving
|
||||||
***/
|
***/
|
||||||
|
|
||||||
static void buffer_io_cb(GtkWidget *widget, gpointer data)
|
static void buffer_io_cb(GtkWidget *widget, gpointer data)
|
||||||
{ raw_editor_context *rec = Closure->rawEditorContext;
|
{ raw_editor_context *rec = Closure->rawEditorContext;
|
||||||
int action = GPOINTER_TO_INT(data);
|
int action = GPOINTER_TO_INT(data);
|
||||||
|
LargeFile *file;
|
||||||
|
char *path;
|
||||||
|
GtkWidget *dialog;
|
||||||
|
|
||||||
switch(action)
|
switch(action)
|
||||||
{
|
{
|
||||||
@@ -401,51 +404,17 @@ static void buffer_io_cb(GtkWidget *widget, gpointer data)
|
|||||||
if(!rec->loadBufSel)
|
if(!rec->loadBufSel)
|
||||||
{ char filename[strlen(Closure->dDumpDir)+10];
|
{ char filename[strlen(Closure->dDumpDir)+10];
|
||||||
|
|
||||||
rec->loadBufSel = gtk_file_selection_new(_utf("windowtitle|Load buffer from file"));
|
dialog = gtk_file_chooser_dialog_new("Load buffer from file",
|
||||||
g_signal_connect(G_OBJECT(rec->loadBufSel), "destroy",
|
Closure->window,
|
||||||
G_CALLBACK(buffer_io_cb), GINT_TO_POINTER(ACTION_FILESEL_LOAD_DESTROY));
|
GTK_FILE_CHOOSER_ACTION_OPEN,
|
||||||
g_signal_connect(G_OBJECT(GTK_FILE_SELECTION(rec->loadBufSel)->ok_button),"clicked",
|
_("_Cancel"), GTK_RESPONSE_CANCEL,
|
||||||
G_CALLBACK(buffer_io_cb), GINT_TO_POINTER(ACTION_FILESEL_LOAD_OK));
|
_("_Open"), GTK_RESPONSE_ACCEPT,
|
||||||
g_signal_connect(G_OBJECT(GTK_FILE_SELECTION(rec->loadBufSel)->cancel_button),"clicked",
|
NULL);
|
||||||
G_CALLBACK(buffer_io_cb), GINT_TO_POINTER(ACTION_FILESEL_LOAD_CANCEL));
|
|
||||||
sprintf(filename, "%s/", Closure->dDumpDir);
|
sprintf(filename, "%s/", Closure->dDumpDir);
|
||||||
gtk_file_selection_set_filename(GTK_FILE_SELECTION(rec->loadBufSel), filename);
|
gtk_file_chooser_set_filename(GTK_FILE_CHOOSER(dialog), filename);
|
||||||
}
|
|
||||||
gtk_widget_show(rec->loadBufSel);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case ACTION_SAVE_BUFFER: /* open the dialog */
|
|
||||||
if(!rec->saveBufSel)
|
|
||||||
{ char filename[strlen(Closure->dDumpDir)+10];
|
|
||||||
|
|
||||||
rec->saveBufSel = gtk_file_selection_new(_utf("windowtitle|Save buffer to file"));
|
|
||||||
g_signal_connect(G_OBJECT(rec->saveBufSel), "destroy",
|
|
||||||
G_CALLBACK(buffer_io_cb), GINT_TO_POINTER(ACTION_FILESEL_SAVE_DESTROY));
|
|
||||||
g_signal_connect(G_OBJECT(GTK_FILE_SELECTION(rec->saveBufSel)->ok_button),"clicked",
|
|
||||||
G_CALLBACK(buffer_io_cb), GINT_TO_POINTER(ACTION_FILESEL_SAVE_OK));
|
|
||||||
g_signal_connect(G_OBJECT(GTK_FILE_SELECTION(rec->saveBufSel)->cancel_button),"clicked",
|
|
||||||
G_CALLBACK(buffer_io_cb), GINT_TO_POINTER(ACTION_FILESEL_SAVE_CANCEL));
|
|
||||||
sprintf(filename, "%s/", Closure->dDumpDir);
|
|
||||||
gtk_file_selection_set_filename(GTK_FILE_SELECTION(rec->saveBufSel), filename);
|
|
||||||
}
|
|
||||||
gtk_widget_show(rec->saveBufSel);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case ACTION_FILESEL_LOAD_DESTROY:
|
|
||||||
rec->loadBufSel = NULL;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case ACTION_FILESEL_SAVE_DESTROY:
|
|
||||||
rec->saveBufSel = NULL;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case ACTION_FILESEL_LOAD_OK:
|
|
||||||
{ LargeFile *file;
|
|
||||||
char *path;
|
|
||||||
|
|
||||||
path = (char*)gtk_file_selection_get_filename(GTK_FILE_SELECTION(rec->loadBufSel));
|
|
||||||
gtk_widget_hide(rec->loadBufSel);
|
|
||||||
|
|
||||||
|
if (gtk_dialog_run (GTK_DIALOG (dialog)) == GTK_RESPONSE_ACCEPT)
|
||||||
|
{ path = (char*)gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (dialog));
|
||||||
file = LargeOpen(path, O_RDONLY, IMG_PERMS);
|
file = LargeOpen(path, O_RDONLY, IMG_PERMS);
|
||||||
LargeRead(file, rec->rb->recovered, rec->rb->sampleSize);
|
LargeRead(file, rec->rb->recovered, rec->rb->sampleSize);
|
||||||
LargeClose(file);
|
LargeClose(file);
|
||||||
@@ -456,30 +425,34 @@ static void buffer_io_cb(GtkWidget *widget, gpointer data)
|
|||||||
undo_remember(rec);
|
undo_remember(rec);
|
||||||
|
|
||||||
GuiSetLabelText(rec->rightLabel, _("Buffer loaded from %s."), path);
|
GuiSetLabelText(rec->rightLabel, _("Buffer loaded from %s."), path);
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
|
gtk_widget_destroy (dialog);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
case ACTION_FILESEL_SAVE_OK:
|
case ACTION_SAVE_BUFFER: /* open the dialog */
|
||||||
{ LargeFile *file;
|
if(!rec->saveBufSel)
|
||||||
char *path;
|
{ char filename[strlen(Closure->dDumpDir)+10];
|
||||||
|
|
||||||
path = (char*)gtk_file_selection_get_filename(GTK_FILE_SELECTION(rec->saveBufSel));
|
dialog = gtk_file_chooser_dialog_new("Save buffer to file",
|
||||||
gtk_widget_hide(rec->saveBufSel);
|
Closure->window,
|
||||||
|
GTK_FILE_CHOOSER_ACTION_SAVE,
|
||||||
|
_("_Cancel"), GTK_RESPONSE_CANCEL,
|
||||||
|
_("_Open"), GTK_RESPONSE_ACCEPT,
|
||||||
|
NULL);
|
||||||
|
sprintf(filename, "%s/", Closure->dDumpDir);
|
||||||
|
gtk_file_chooser_set_filename(GTK_FILE_CHOOSER(dialog), filename);
|
||||||
|
|
||||||
|
if (gtk_dialog_run (GTK_DIALOG (dialog)) == GTK_RESPONSE_ACCEPT)
|
||||||
|
{ path = (char*)gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (dialog));
|
||||||
file = LargeOpen(path, O_RDWR | O_CREAT, IMG_PERMS);
|
file = LargeOpen(path, O_RDWR | O_CREAT, IMG_PERMS);
|
||||||
LargeWrite(file, rec->rb->recovered, rec->rb->sampleSize);
|
LargeWrite(file, rec->rb->recovered, rec->rb->sampleSize);
|
||||||
LargeClose(file);
|
LargeClose(file);
|
||||||
|
|
||||||
GuiSetLabelText(rec->rightLabel, _("Buffer saved to %s."), path);
|
GuiSetLabelText(rec->rightLabel, _("Buffer saved to %s."), path);
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
|
gtk_widget_destroy (dialog);
|
||||||
case ACTION_FILESEL_LOAD_CANCEL:
|
}
|
||||||
gtk_widget_hide(rec->loadBufSel);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case ACTION_FILESEL_SAVE_CANCEL:
|
|
||||||
gtk_widget_hide(rec->saveBufSel);
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user