Commit c914320539a3d60dfe9c07e02bf0c9d996d569c9
1 parent
edb69398
Exists in
master
Implementing the "get" method.
Showing
4 changed files
with
61 additions
and
9 deletions
Show diff stats
src/include/py3270.h
| ... | ... | @@ -116,6 +116,8 @@ |
| 116 | 116 | DLL_PRIVATE PyObject * py3270_session_connect(PyObject *self, PyObject *args); |
| 117 | 117 | DLL_PRIVATE PyObject * py3270_session_disconnect(PyObject *self, PyObject *args); |
| 118 | 118 | |
| 119 | + DLL_PRIVATE PyObject * py3270_session_get(PyObject *self, PyObject *args); | |
| 120 | + | |
| 119 | 121 | /* |
| 120 | 122 | |
| 121 | 123 | DLL_PRIVATE PyObject * py3270_alloc(PyTypeObject *type, PyObject *args, PyObject *kwds); | ... | ... |
src/module/init.c
src/terminal/get.cc
| ... | ... | @@ -34,8 +34,56 @@ |
| 34 | 34 | |
| 35 | 35 | #include <py3270.h> |
| 36 | 36 | |
| 37 | + using std::string; | |
| 38 | + | |
| 37 | 39 | /*---[ Implement ]----------------------------------------------------------------------------------*/ |
| 38 | 40 | |
| 41 | + PyObject * py3270_session_get(PyObject *self, PyObject *args) { | |
| 42 | + | |
| 43 | + return py3270_session_call(self, [args](TN3270::Host &host){ | |
| 44 | + | |
| 45 | + string text; | |
| 46 | + | |
| 47 | + switch(PyTuple_Size(args)) { | |
| 48 | + case 0: // Get the entire screen | |
| 49 | + text = host.toString(); | |
| 50 | + break; | |
| 51 | + | |
| 52 | + case 2: // Address and length. | |
| 53 | + { | |
| 54 | + int baddr, length; | |
| 55 | + | |
| 56 | + if (!PyArg_ParseTuple(args, "ii", &baddr, &length)) | |
| 57 | + return (PyObject *) NULL; | |
| 58 | + | |
| 59 | + text = host.toString(baddr, length); | |
| 60 | + } | |
| 61 | + break; | |
| 62 | + | |
| 63 | + case 3: // Row, col and length | |
| 64 | + { | |
| 65 | + unsigned int row, col; | |
| 66 | + int length; | |
| 67 | + | |
| 68 | + if (!PyArg_ParseTuple(args, "IIi", &row, &col, &length)) | |
| 69 | + return (PyObject *) NULL; | |
| 70 | + | |
| 71 | + text = host.toString(row, col, length); | |
| 72 | + } | |
| 73 | + break; | |
| 74 | + | |
| 75 | + default: | |
| 76 | + throw std::system_error(EINVAL, std::system_category()); | |
| 77 | + | |
| 78 | + } | |
| 79 | + | |
| 80 | + return PyUnicode_FromString(text.c_str()); | |
| 81 | + | |
| 82 | + }); | |
| 83 | + | |
| 84 | + } | |
| 85 | + | |
| 86 | + | |
| 39 | 87 | /* |
| 40 | 88 | DLL_PRIVATE PyObject * py3270_session_getattr(PyObject *self, char *attr_name) { |
| 41 | 89 | ... | ... |
testprograms/sample.py
| ... | ... | @@ -22,16 +22,11 @@ session.connect('') |
| 22 | 22 | |
| 23 | 23 | print(session.connected) |
| 24 | 24 | |
| 25 | -print('----------------------') | |
| 26 | -inspect.getmembers(session) | |
| 27 | -print('----------------------') | |
| 25 | +#print('----------------------') | |
| 26 | +#print(dir(session)) | |
| 27 | +#print('----------------------') | |
| 28 | 28 | |
| 29 | - | |
| 30 | - | |
| 31 | -#print term.IsConnected() | |
| 32 | -#print term.IsReady() | |
| 33 | - | |
| 34 | -#print term.GetStringAt(14,19,38) | |
| 29 | +print(session.get(14,22,38)) | |
| 35 | 30 | |
| 36 | 31 | #print "-----------------------------------------------------------------------" |
| 37 | 32 | #print term | ... | ... |