More flexible command invocation for help contents
This commit is contained in:
parent
54cc541139
commit
28bd582ada
|
@ -65,7 +65,8 @@ static Helper * _helper_new(void);
|
||||||
void _helper_delete(Helper * helper);
|
void _helper_delete(Helper * helper);
|
||||||
|
|
||||||
static int _helper_open(Helper * helper, char const * url);
|
static int _helper_open(Helper * helper, char const * url);
|
||||||
static int _helper_open_contents(Helper * helper, char const * package);
|
static int _helper_open_contents(Helper * helper, char const * package,
|
||||||
|
char const * command);
|
||||||
static int _helper_open_dialog(Helper * helper);
|
static int _helper_open_dialog(Helper * helper);
|
||||||
static int _helper_open_man(Helper * helper, int section, char const * page);
|
static int _helper_open_man(Helper * helper, int section, char const * page);
|
||||||
static int _helper_open_devel(Helper * helper, char const * package);
|
static int _helper_open_devel(Helper * helper, char const * package);
|
||||||
|
@ -199,13 +200,18 @@ static int _helper_open(Helper * helper, char const * url)
|
||||||
|
|
||||||
|
|
||||||
/* helper_open_contents */
|
/* helper_open_contents */
|
||||||
static int _helper_open_contents(Helper * helper, char const * package)
|
static int _helper_open_contents(Helper * helper, char const * package,
|
||||||
|
char const * command)
|
||||||
{
|
{
|
||||||
char buf[256];
|
char buf[256];
|
||||||
|
|
||||||
|
if(package == NULL)
|
||||||
|
return -1;
|
||||||
|
if(command == NULL)
|
||||||
|
command = "index";
|
||||||
/* read a package documentation */
|
/* read a package documentation */
|
||||||
snprintf(buf, sizeof(buf), "%s%s%s%s%s", "file://" DATADIR "/doc/html/",
|
snprintf(buf, sizeof(buf), "%s%s%s%s%s", "file://" DATADIR "/doc/html/",
|
||||||
package, "/", package, ".html");
|
package, "/", command, ".html");
|
||||||
return _helper_open(helper, buf);
|
return _helper_open(helper, buf);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -240,7 +246,7 @@ static int _helper_open_dialog(Helper * helper)
|
||||||
GTK_STOCK_OPEN, GTK_RESPONSE_OK, NULL);
|
GTK_STOCK_OPEN, GTK_RESPONSE_OK, NULL);
|
||||||
vbox = gtk_dialog_get_content_area(GTK_DIALOG(dialog));
|
vbox = gtk_dialog_get_content_area(GTK_DIALOG(dialog));
|
||||||
hbox = gtk_hbox_new(FALSE, 4);
|
hbox = gtk_hbox_new(FALSE, 4);
|
||||||
label = gtk_label_new("Page: ");
|
label = gtk_label_new("Package: ");
|
||||||
gtk_box_pack_start(GTK_BOX(hbox), label, TRUE, FALSE, 0);
|
gtk_box_pack_start(GTK_BOX(hbox), label, TRUE, FALSE, 0);
|
||||||
entry = gtk_entry_new();
|
entry = gtk_entry_new();
|
||||||
gtk_box_pack_start(GTK_BOX(hbox), entry, TRUE, TRUE, 0);
|
gtk_box_pack_start(GTK_BOX(hbox), entry, TRUE, TRUE, 0);
|
||||||
|
@ -252,7 +258,7 @@ static int _helper_open_dialog(Helper * helper)
|
||||||
if(page == NULL || strlen(page) == 0)
|
if(page == NULL || strlen(page) == 0)
|
||||||
ret = -1;
|
ret = -1;
|
||||||
else
|
else
|
||||||
ret = _helper_open_contents(helper, page);
|
ret = _helper_open_contents(helper, page, NULL);
|
||||||
free(page);
|
free(page);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
@ -372,7 +378,8 @@ static void _helper_on_view_fullscreen(gpointer data)
|
||||||
/* usage */
|
/* usage */
|
||||||
static int _usage(void)
|
static int _usage(void)
|
||||||
{
|
{
|
||||||
fputs(_("Usage: helper [-c|-d] package\n"
|
fputs(_("Usage: helper [-c][-p package] command\n"
|
||||||
|
" helper -d package\n"
|
||||||
" helper -s section page\n"
|
" helper -s section page\n"
|
||||||
" -s Section of the manual page to read from\n"), stderr);
|
" -s Section of the manual page to read from\n"), stderr);
|
||||||
return 1;
|
return 1;
|
||||||
|
@ -637,6 +644,7 @@ int main(int argc, char * argv[])
|
||||||
{
|
{
|
||||||
int o;
|
int o;
|
||||||
int devel = 0;
|
int devel = 0;
|
||||||
|
char const * package = NULL;
|
||||||
int section = -1;
|
int section = -1;
|
||||||
char * p;
|
char * p;
|
||||||
Helper * helper;
|
Helper * helper;
|
||||||
|
@ -645,7 +653,7 @@ int main(int argc, char * argv[])
|
||||||
bindtextdomain(PACKAGE, LOCALEDIR);
|
bindtextdomain(PACKAGE, LOCALEDIR);
|
||||||
textdomain(PACKAGE);
|
textdomain(PACKAGE);
|
||||||
gtk_init(&argc, &argv);
|
gtk_init(&argc, &argv);
|
||||||
while((o = getopt(argc, argv, "cds:")) != -1)
|
while((o = getopt(argc, argv, "cdp:s:")) != -1)
|
||||||
switch(o)
|
switch(o)
|
||||||
{
|
{
|
||||||
case 'c':
|
case 'c':
|
||||||
|
@ -656,6 +664,9 @@ int main(int argc, char * argv[])
|
||||||
section = -1;
|
section = -1;
|
||||||
devel = 1;
|
devel = 1;
|
||||||
break;
|
break;
|
||||||
|
case 'p':
|
||||||
|
package = optarg;
|
||||||
|
break;
|
||||||
case 's':
|
case 's':
|
||||||
section = strtol(optarg, &p, 10);
|
section = strtol(optarg, &p, 10);
|
||||||
if(optarg[0] == '\0' || *p != '\0'
|
if(optarg[0] == '\0' || *p != '\0'
|
||||||
|
@ -674,7 +685,8 @@ int main(int argc, char * argv[])
|
||||||
else if(argv[optind] != NULL && devel != 0)
|
else if(argv[optind] != NULL && devel != 0)
|
||||||
_helper_open_devel(helper, argv[optind]);
|
_helper_open_devel(helper, argv[optind]);
|
||||||
else if(argv[optind] != NULL)
|
else if(argv[optind] != NULL)
|
||||||
_helper_open_contents(helper, argv[optind]);
|
_helper_open_contents(helper, (package != NULL) ? package
|
||||||
|
: argv[optind], argv[optind]);
|
||||||
else
|
else
|
||||||
_helper_open_dialog(helper);
|
_helper_open_dialog(helper);
|
||||||
gtk_main();
|
gtk_main();
|
||||||
|
|
Loading…
Reference in New Issue
Block a user