/* 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; }