Code cleanup
This commit is contained in:
parent
7e72b4e202
commit
41598858b3
83
src/view.c
83
src/view.c
@ -42,6 +42,9 @@ static char const _license[] =
|
||||
#ifndef PREFIX
|
||||
# define PREFIX "/usr/local"
|
||||
#endif
|
||||
#ifndef BINDIR
|
||||
# define BINDIR PREFIX "/bin"
|
||||
#endif
|
||||
#ifndef DATADIR
|
||||
# define DATADIR PREFIX "/share"
|
||||
#endif
|
||||
@ -80,7 +83,8 @@ static void _view_delete(View * view);
|
||||
|
||||
/* useful */
|
||||
static int _view_error(View * view, char const * message, int ret);
|
||||
static void _view_run(View * view, char const * program);
|
||||
static void _view_open_with(View * view, char const * program);
|
||||
static void _view_open_with_dialog(View * view);
|
||||
|
||||
/* callbacks */
|
||||
#ifdef EMBEDDED
|
||||
@ -444,11 +448,16 @@ static int _error_text(char const * message, int ret)
|
||||
}
|
||||
|
||||
|
||||
/* view_run */
|
||||
static void _view_run(View * view, char const * program)
|
||||
/* view_open_with */
|
||||
static void _view_open_with(View * view, char const * program)
|
||||
{
|
||||
pid_t pid;
|
||||
|
||||
if(program == NULL)
|
||||
{
|
||||
_view_open_with_dialog(view);
|
||||
return;
|
||||
}
|
||||
if((pid = fork()) == -1)
|
||||
_view_error(view, "fork", 0);
|
||||
else if(pid == 0)
|
||||
@ -462,6 +471,42 @@ static void _view_run(View * view, char const * program)
|
||||
}
|
||||
|
||||
|
||||
/* view_open_with_dialog */
|
||||
static void _view_open_with_dialog(View * view)
|
||||
{
|
||||
GtkWidget * dialog;
|
||||
GtkFileFilter * filter;
|
||||
char * filename = NULL;
|
||||
|
||||
dialog = gtk_file_chooser_dialog_new(_("Open with..."),
|
||||
GTK_WINDOW(view->window),
|
||||
GTK_FILE_CHOOSER_ACTION_OPEN, GTK_STOCK_CANCEL,
|
||||
GTK_RESPONSE_CANCEL, GTK_STOCK_OPEN,
|
||||
GTK_RESPONSE_ACCEPT, NULL);
|
||||
filter = gtk_file_filter_new();
|
||||
gtk_file_filter_set_name(filter, _("Executable files"));
|
||||
gtk_file_filter_add_mime_type(filter, "application/x-executable");
|
||||
gtk_file_chooser_add_filter(GTK_FILE_CHOOSER(dialog), filter);
|
||||
gtk_file_chooser_set_filter(GTK_FILE_CHOOSER(dialog), filter);
|
||||
filter = gtk_file_filter_new();
|
||||
gtk_file_filter_set_name(filter, _("Shell scripts"));
|
||||
gtk_file_filter_add_mime_type(filter, "application/x-shellscript");
|
||||
gtk_file_chooser_add_filter(GTK_FILE_CHOOSER(dialog), filter);
|
||||
filter = gtk_file_filter_new();
|
||||
gtk_file_filter_set_name(filter, _("All files"));
|
||||
gtk_file_filter_add_pattern(filter, "*");
|
||||
gtk_file_chooser_add_filter(GTK_FILE_CHOOSER(dialog), filter);
|
||||
if(gtk_dialog_run(GTK_DIALOG(dialog)) == GTK_RESPONSE_ACCEPT)
|
||||
filename = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(
|
||||
dialog));
|
||||
gtk_widget_destroy(dialog);
|
||||
if(filename == NULL)
|
||||
return;
|
||||
_view_open_with(view, filename);
|
||||
g_free(filename);
|
||||
}
|
||||
|
||||
|
||||
/* callbacks */
|
||||
#ifdef EMBEDDED
|
||||
/* on_close */
|
||||
@ -582,36 +627,8 @@ static void _on_edit(gpointer data)
|
||||
static void _on_open_with(gpointer data)
|
||||
{
|
||||
View * view = data;
|
||||
GtkWidget * dialog;
|
||||
GtkFileFilter * filter;
|
||||
char * filename = NULL;
|
||||
|
||||
dialog = gtk_file_chooser_dialog_new(_("Open with..."),
|
||||
GTK_WINDOW(view->window),
|
||||
GTK_FILE_CHOOSER_ACTION_OPEN, GTK_STOCK_CANCEL,
|
||||
GTK_RESPONSE_CANCEL, GTK_STOCK_OPEN,
|
||||
GTK_RESPONSE_ACCEPT, NULL);
|
||||
filter = gtk_file_filter_new();
|
||||
gtk_file_filter_set_name(filter, _("Executable files"));
|
||||
gtk_file_filter_add_mime_type(filter, "application/x-executable");
|
||||
gtk_file_chooser_add_filter(GTK_FILE_CHOOSER(dialog), filter);
|
||||
gtk_file_chooser_set_filter(GTK_FILE_CHOOSER(dialog), filter);
|
||||
filter = gtk_file_filter_new();
|
||||
gtk_file_filter_set_name(filter, _("Shell scripts"));
|
||||
gtk_file_filter_add_mime_type(filter, "application/x-shellscript");
|
||||
gtk_file_chooser_add_filter(GTK_FILE_CHOOSER(dialog), filter);
|
||||
filter = gtk_file_filter_new();
|
||||
gtk_file_filter_set_name(filter, _("All files"));
|
||||
gtk_file_filter_add_pattern(filter, "*");
|
||||
gtk_file_chooser_add_filter(GTK_FILE_CHOOSER(dialog), filter);
|
||||
if(gtk_dialog_run(GTK_DIALOG(dialog)) == GTK_RESPONSE_ACCEPT)
|
||||
filename = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(
|
||||
dialog));
|
||||
gtk_widget_destroy(dialog);
|
||||
if(filename == NULL)
|
||||
return;
|
||||
_view_run(view, filename);
|
||||
g_free(filename);
|
||||
_view_open_with_dialog(view);
|
||||
}
|
||||
|
||||
|
||||
@ -620,7 +637,7 @@ static void _on_properties(gpointer data)
|
||||
{
|
||||
View * view = data;
|
||||
|
||||
_view_run(view, "properties");
|
||||
_view_open_with(view, BINDIR "/properties");
|
||||
}
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user