⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 _cursesmodule.c

📁 python s60 1.4.5版本的源代码
💻 C
📖 第 1 页 / 共 5 页
字号:
  PyDict_SetItemString(ModDict, "LINES", nlines);
  Py_DECREF(nlines);
  cols = PyInt_FromLong((long) COLS);
  PyDict_SetItemString(ModDict, "COLS", cols);
  Py_DECREF(cols);

  return (PyObject *)PyCursesWindow_New(win);
}

static PyObject *
PyCurses_setupterm(PyObject* self, PyObject *args, PyObject* keywds)
{
	int fd = -1;
	int err;
	char* termstr = NULL;

	static char *kwlist[] = {"term", "fd", NULL};

	if (!PyArg_ParseTupleAndKeywords(
		args,keywds,"|zi:setupterm",kwlist,&termstr,&fd)) {
		return NULL;
	}
	
	if (fd == -1) {
		PyObject* sys_stdout;

		sys_stdout = PySys_GetObject("stdout");

		if (sys_stdout == NULL) {
			PyErr_SetString(
				PyCursesError,
				"lost sys.stdout");
			return NULL;
		}

		fd = PyObject_AsFileDescriptor(sys_stdout);

		if (fd == -1) {
			return NULL;
		}
	}

	if (setupterm(termstr,fd,&err) == ERR) {
		char* s = "setupterm: unknown error";
		
		if (err == 0) {
			s = "setupterm: could not find terminal";
		} else if (err == -1) {
			s = "setupterm: could not find terminfo database";
		}

		PyErr_SetString(PyCursesError,s);
		return NULL;
	}

	initialised_setupterm = TRUE;

	Py_INCREF(Py_None);
	return Py_None;	
}

static PyObject *
PyCurses_IntrFlush(PyObject *self, PyObject *args)
{
  int ch;

  PyCursesInitialised

  switch(ARG_COUNT(args)) {
  case 1:
    if (!PyArg_Parse(args,"i;True(1), False(0)",&ch)) return NULL;
    break;
  default:
    PyErr_SetString(PyExc_TypeError, "intrflush requires 1 argument");
    return NULL;
  }

  return PyCursesCheckERR(intrflush(NULL,ch), "intrflush");
}

#if !defined(__NetBSD__)
static PyObject *
PyCurses_KeyName(PyObject *self, PyObject *args)
{
  const char *knp;
  int ch;

  PyCursesInitialised

  if (!PyArg_Parse(args,"i",&ch)) return NULL;

  knp = keyname(ch);

  return PyString_FromString((knp == NULL) ? "" : (char *)knp);
}
#endif

static PyObject *  
PyCurses_KillChar(PyObject *self, PyObject *args)  
{  
  char ch;  

  if (!PyArg_NoArgs(args)) return NULL;  

  ch = killchar();  

  return PyString_FromStringAndSize(&ch, 1);  
}  

static PyObject *
PyCurses_Meta(PyObject *self, PyObject *args)
{
  int ch;

  PyCursesInitialised

  switch(ARG_COUNT(args)) {
  case 1:
    if (!PyArg_Parse(args,"i;True(1), False(0)",&ch)) return NULL;
    break;
  default:
    PyErr_SetString(PyExc_TypeError, "meta requires 1 argument");
    return NULL;
  }

  return PyCursesCheckERR(meta(stdscr, ch), "meta");
}

#ifdef NCURSES_MOUSE_VERSION
static PyObject *
PyCurses_MouseInterval(PyObject *self, PyObject *args)
{
	int interval;
	PyCursesInitialised 

	if (!PyArg_Parse(args,"i;interval",&interval)) 
		return NULL;
	return PyCursesCheckERR(mouseinterval(interval), "mouseinterval");
}

static PyObject *
PyCurses_MouseMask(PyObject *self, PyObject *args)
{
	int newmask;
	mmask_t oldmask, availmask;

	PyCursesInitialised 
	if (!PyArg_Parse(args,"i;mousemask",&newmask)) 
		return NULL;
	availmask = mousemask(newmask, &oldmask);
	return Py_BuildValue("(ll)", (long)availmask, (long)oldmask);
}
#endif

static PyObject *
PyCurses_Napms(PyObject *self, PyObject *args)
{
    int ms;

    PyCursesInitialised
    if (!PyArg_Parse(args, "i;ms", &ms)) return NULL;

    return Py_BuildValue("i", napms(ms));
}


static PyObject *
PyCurses_NewPad(PyObject *self, PyObject *args)
{
  WINDOW *win;
  int nlines, ncols;

  PyCursesInitialised 

  if (!PyArg_Parse(args,"(ii);nlines,ncols",&nlines,&ncols)) return NULL;

  win = newpad(nlines, ncols);
  
  if (win == NULL) {
    PyErr_SetString(PyCursesError, catchall_NULL);
    return NULL;
  }

  return (PyObject *)PyCursesWindow_New(win);
}

static PyObject *
PyCurses_NewWindow(PyObject *self, PyObject *args)
{
  WINDOW *win;
  int nlines, ncols, begin_y=0, begin_x=0;

  PyCursesInitialised

  switch (ARG_COUNT(args)) {
  case 2:
    if (!PyArg_Parse(args,"(ii);nlines,ncols",&nlines,&ncols))
      return NULL;
    break;
  case 4:
    if (!PyArg_Parse(args, "(iiii);nlines,ncols,begin_y,begin_x",
		   &nlines,&ncols,&begin_y,&begin_x))
      return NULL;
    break;
  default:
    PyErr_SetString(PyExc_TypeError, "newwin requires 2 or 4 arguments");
    return NULL;
  }

  win = newwin(nlines,ncols,begin_y,begin_x);
  if (win == NULL) {
    PyErr_SetString(PyCursesError, catchall_NULL);
    return NULL;
  }

  return (PyObject *)PyCursesWindow_New(win);
}

static PyObject *
PyCurses_Pair_Content(PyObject *self, PyObject *args)
{
  short pair,f,b;

  PyCursesInitialised
  PyCursesInitialisedColor

  switch(ARG_COUNT(args)) {
  case 1:
    if (!PyArg_Parse(args, "h;pair", &pair)) return NULL;
    break;
  default:
    PyErr_SetString(PyExc_TypeError, "pair_content requires 1 argument");
    return NULL;
  }

  if (!pair_content(pair, &f, &b)) {
    PyErr_SetString(PyCursesError,
		    "Argument 1 was out of range. (1..COLOR_PAIRS-1)");
    return NULL;
  }

  return Py_BuildValue("(ii)", f, b);
}

static PyObject *
PyCurses_pair_number(PyObject *self, PyObject *args)
{
  int n;

  PyCursesInitialised
  PyCursesInitialisedColor

  switch(ARG_COUNT(args)) {
  case 1:
    if (!PyArg_Parse(args, "i;pairvalue", &n)) return NULL;
    break;
  default:
    PyErr_SetString(PyExc_TypeError,
                    "pair_number requires 1 argument");
    return NULL;
  }

  return PyInt_FromLong((long) ((n & A_COLOR) >> 8));
}

static PyObject *
PyCurses_Putp(PyObject *self, PyObject *args)
{
  char *str;

  if (!PyArg_Parse(args,"s;str", &str)) return NULL;
  return PyCursesCheckERR(putp(str), "putp");
}

static PyObject *
PyCurses_QiFlush(PyObject *self, PyObject *args)
{
  int flag = 0;

  PyCursesInitialised

  switch(ARG_COUNT(args)) {
  case 0:
    qiflush();
    Py_INCREF(Py_None);
    return Py_None;
  case 1:
    if (!PyArg_Parse(args, "i;True(1) or False(0)", &flag)) return NULL;
    if (flag) qiflush();
    else noqiflush();
    Py_INCREF(Py_None);
    return Py_None;
  default:
    PyErr_SetString(PyExc_TypeError, "qiflush requires 0 or 1 arguments");
    return NULL;
  }
}

static PyObject *
PyCurses_setsyx(PyObject *self, PyObject *args)
{
  int y,x;

  PyCursesInitialised

  if (ARG_COUNT(args)!=2) {
    PyErr_SetString(PyExc_TypeError, "setsyx requires 2 arguments");
    return NULL;
  }

  if (!PyArg_Parse(args, "(ii);y, x", &y, &x)) return NULL;

  setsyx(y,x);

  Py_INCREF(Py_None);
  return Py_None;
}

static PyObject *
PyCurses_Start_Color(PyObject *self, PyObject *args)
{
  int code;
  PyObject *c, *cp;

  PyCursesInitialised

  if (!PyArg_NoArgs(args)) return NULL;

  code = start_color();
  if (code != ERR) {
    initialisedcolors = TRUE;
    c = PyInt_FromLong((long) COLORS);
    PyDict_SetItemString(ModDict, "COLORS", c);
    Py_DECREF(c);
    cp = PyInt_FromLong((long) COLOR_PAIRS);
    PyDict_SetItemString(ModDict, "COLOR_PAIRS", cp);
    Py_DECREF(cp);
    Py_INCREF(Py_None);
    return Py_None;
  } else {
    PyErr_SetString(PyCursesError, "start_color() returned ERR");
    return NULL;
  }
}

static PyObject *
PyCurses_tigetflag(PyObject *self, PyObject *args)
{
	char *capname;

	PyCursesSetupTermCalled;
		
	if (!PyArg_ParseTuple(args, "z", &capname))
		return NULL;

	return PyInt_FromLong( (long) tigetflag( capname ) );
}

static PyObject *
PyCurses_tigetnum(PyObject *self, PyObject *args)
{
	char *capname;

	PyCursesSetupTermCalled;
		
	if (!PyArg_ParseTuple(args, "z", &capname))
		return NULL;

	return PyInt_FromLong( (long) tigetnum( capname ) );
}

static PyObject *
PyCurses_tigetstr(PyObject *self, PyObject *args)
{
	char *capname;

	PyCursesSetupTermCalled;
		
	if (!PyArg_ParseTuple(args, "z", &capname))
		return NULL;

	capname = tigetstr( capname );
	if (capname == 0 || capname == (char*) -1) {
		Py_INCREF(Py_None);
		return Py_None;
	}
	return PyString_FromString( capname );
}

static PyObject *
PyCurses_tparm(PyObject *self, PyObject *args)
{
	char* fmt;
	char* result = NULL;
	int i1,i2,i3,i4,i5,i6,i7,i8,i9;

	PyCursesSetupTermCalled;

	if (!PyArg_ParseTuple(args, "s|iiiiiiiii:tparm", 
			      &fmt, &i1, &i2, &i3, &i4, 
			      &i5, &i6, &i7, &i8, &i9)) {
		return NULL;
	}
	
#if defined(__hpux) || defined(_AIX)
	/* tparm is declared with 10 arguments on a few platforms
	   (HP-UX, AIX). If this proves to be a problem on other 
	   platforms as well, perhaps an autoconf test should be 
	   added to determine whether tparm can be called with a 
	   variable number of arguments. Perhaps the other arguments 
	   should be initialized in this case also. */
	result = tparm(fmt,i1,i2,i3,i4,i5,i6,i7,i8,i9);
#else
	switch (PyTuple_GET_SIZE(args)) {
	case 1:
		result = tparm(fmt);
		break;
	case 2:
		result = tparm(fmt,i1);
		break;
	case 3:
		result = tparm(fmt,i1,i2);
		break;
	case 4:
		result = tparm(fmt,i1,i2,i3);
		break;
	case 5:
		result = tparm(fmt,i1,i2,i3,i4);
		break;
	case 6:
		result = tparm(fmt,i1,i2,i3,i4,i5);
		break;
	case 7:
		result = tparm(fmt,i1,i2,i3,i4,i5,i6);
		break;
	case 8:
		result = tparm(fmt,i1,i2,i3,i4,i5,i6,i7);
		break;
	case 9:
		result = tparm(fmt,i1,i2,i3,i4,i5,i6,i7,i8);
		break;
	case 10:
		result = tparm(fmt,i1,i2,i3,i4,i5,i6,i7,i8,i9);
		break;
	}
#endif /* defined(__hpux) || defined(_AIX) */
	return PyString_FromString(result);
}

static PyObject *
PyCurses_TypeAhead(PyObject *self, PyObject *args)
{
  int fd;

  PyCursesInitialised

  if (!PyArg_Parse(args,"i;fd",&fd)) return NULL;

  PyCursesCheckERR(typeahead( fd ), "typeahead");
  Py_INCREF(Py_None);
  return Py_None;
}

static PyObject *
PyCurses_UnCtrl(PyObject *self, PyObject *args)
{
  PyObject *temp;
  chtype ch;

  PyCursesInitialised

  if (!PyArg_Parse(args,"O;ch or int",&temp)) return NULL;

  if (PyInt_Check(temp))
    ch = (chtype) PyInt_AsLong(temp);
  else if (PyString_Check(temp))
    ch = (chtype) *PyString_AsString(tem

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -