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
|
#ifndef PREFIX
|
||||||
# define PREFIX "/usr/local"
|
# define PREFIX "/usr/local"
|
||||||
#endif
|
#endif
|
||||||
|
#ifndef BINDIR
|
||||||
|
# define BINDIR PREFIX "/bin"
|
||||||
|
#endif
|
||||||
#ifndef DATADIR
|
#ifndef DATADIR
|
||||||
# define DATADIR PREFIX "/share"
|
# define DATADIR PREFIX "/share"
|
||||||
#endif
|
#endif
|
||||||
@ -80,7 +83,8 @@ static void _view_delete(View * view);
|
|||||||
|
|
||||||
/* useful */
|
/* useful */
|
||||||
static int _view_error(View * view, char const * message, int ret);
|
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 */
|
/* callbacks */
|
||||||
#ifdef EMBEDDED
|
#ifdef EMBEDDED
|
||||||
@ -444,11 +448,16 @@ static int _error_text(char const * message, int ret)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* view_run */
|
/* view_open_with */
|
||||||
static void _view_run(View * view, char const * program)
|
static void _view_open_with(View * view, char const * program)
|
||||||
{
|
{
|
||||||
pid_t pid;
|
pid_t pid;
|
||||||
|
|
||||||
|
if(program == NULL)
|
||||||
|
{
|
||||||
|
_view_open_with_dialog(view);
|
||||||
|
return;
|
||||||
|
}
|
||||||
if((pid = fork()) == -1)
|
if((pid = fork()) == -1)
|
||||||
_view_error(view, "fork", 0);
|
_view_error(view, "fork", 0);
|
||||||
else if(pid == 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 */
|
/* callbacks */
|
||||||
#ifdef EMBEDDED
|
#ifdef EMBEDDED
|
||||||
/* on_close */
|
/* on_close */
|
||||||
@ -582,36 +627,8 @@ static void _on_edit(gpointer data)
|
|||||||
static void _on_open_with(gpointer data)
|
static void _on_open_with(gpointer data)
|
||||||
{
|
{
|
||||||
View * view = data;
|
View * view = data;
|
||||||
GtkWidget * dialog;
|
|
||||||
GtkFileFilter * filter;
|
|
||||||
char * filename = NULL;
|
|
||||||
|
|
||||||
dialog = gtk_file_chooser_dialog_new(_("Open with..."),
|
_view_open_with_dialog(view);
|
||||||
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);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -620,7 +637,7 @@ static void _on_properties(gpointer data)
|
|||||||
{
|
{
|
||||||
View * view = data;
|
View * view = data;
|
||||||
|
|
||||||
_view_run(view, "properties");
|
_view_open_with(view, BINDIR "/properties");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user