1
0
mirror of https://github.com/rkd77/elinks.git synced 2025-01-03 14:57:44 -05:00
elinks/src/scripting/python/open.c
2022-01-30 18:48:53 +01:00

85 lines
2.0 KiB
C

/* Document viewing for Python. */
#ifdef HAVE_CONFIG_H
#include "config.h"
#endif
#include "scripting/python/pythoninc.h"
#include "elinks.h"
#include "intl/libintl.h"
#include "protocol/uri.h"
#include "scripting/python/core.h"
#include "scripting/python/open.h"
#include "session/task.h"
#include "terminal/tab.h"
#include "util/error.h"
/* Python interface for viewing a document. */
char python_open_doc[] =
PYTHON_DOCSTRING("open(url, new_tab=False, background=False) -> None\n\
\n\
View a document in either the current tab or a new tab.\n\
\n\
Arguments:\n\
\n\
url -- A string containing the URL to view.\n\
\n\
Optional keyword arguments:\n\
\n\
new_tab -- By default the URL is opened in the current tab. If this\n\
argument's value is the boolean True then the URL is instead\n\
opened in a new tab.\n\
background -- By default a new tab is opened in the foreground. If\n\
this argument's value is the boolean True then a new tab is\n\
instead opened in the background. This argument is ignored\n\
unless new_tab's value is True.\n");
PyObject *
python_open(PyObject *self, PyObject *args, PyObject *kwargs)
{
char *url;
int new_tab = 0, background = 0;
struct uri *uri;
static char s_url[] = "url";
static char s_new_tab[] = "new_tab";
static char s_background[] = "background";
static char *kwlist[] = {s_url, s_new_tab, s_background, NULL};
if (!python_ses) {
PyErr_SetString(python_elinks_err, "No session");
return NULL;
}
if (!PyArg_ParseTupleAndKeywords(args, kwargs, "s|ii:open",
kwlist, &url,
&new_tab, &background))
return NULL;
assert(url);
if_assert_failed {
PyErr_SetString(python_elinks_err, N_("Internal error"));
return NULL;
}
uri = get_translated_uri(url, python_ses->tab->term->cwd);
if (!uri) {
PyErr_SetString(python_elinks_err, N_("Bad URL syntax"));
return NULL;
}
if (new_tab)
open_uri_in_new_tab(python_ses, uri, background, 0);
else
goto_uri(python_ses, uri);
done_uri(uri);
Py_INCREF(Py_None);
return Py_None;
}