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

📄 zbutton.c

📁 unix下的界面工具
💻 C
字号:
#include <stdio.h>
#include <malloc.h>
#include <ctype.h>
#include <curses.h>
#include "zlib.h"

static int ZBvalid( ZBUTTON *bp )
{
  if( bp->r < 0 || bp->c < 1 || bp->w < 0 || bp->h < 0
    || bp->r + bp->h > ZWheight() || bp->c + bp->w > ZWwidth() )
    return( -1 );
  return( 0 );
}

static int ZBlabel( ZBUTTON *bp )
{
  int i;

  for( i = 0; i < bp->h; i ++ )
    ZWprintf( bp->r + i, bp->c, "%-*s", bp->w, "" );
  ZWprintf( bp->r + bp->h - 1, bp->c, "%-*s", bp->w, bp->l );
}

void ZBdisplay( ZBUTTON *bp, int cnt )
{
  int i, a, r, c;

  a = ZWattr( ZA_BUTTON );
  ZWcursor( &r, &c );
  for( i = 0; i < cnt; i ++ )
  {
    if( !ZBvalid( bp ) )
      ZBlabel(bp);
    bp ++;
  }
  ZWattr(a);
  ZWlocate( r, c );
}

void ZBclear( ZBUTTON *bp, int cnt )
{
  int i, j, a, r, c;

  a = ZWattr( ZA_TEXT );
  ZWcursor( &r, &c );
  for( i = 0; i < cnt; i ++ )
  {
    if( !ZBvalid( bp ) )
      for( j = 0; j < bp->h; j ++ )
        ZWprintf( bp->r + j, bp->c, "%-*s", bp->w, "" );
    bp ++;
  }
  ZWattr(a);
  ZWlocate( r, c );
}

void ZBpress( ZBUTTON *bp )
{
  int a, r, c;

  if( !ZBvalid( bp ) )
  {
    ZWcursor( &r, &c );
    a = ZWattr( ZA_HOLD );
    ZBlabel(bp);
    ZWattr( a );
    ZWlocate( r, c );
  }
}

void ZBrelease( ZBUTTON *bp )
{
  int a, r, c;

  if( !ZBvalid( bp ) )
  {
    ZWcursor( &r, &c );
    a = ZWattr( ZA_BUTTON );
    ZBlabel(bp);
    ZWattr( a );
    ZWlocate( r, c );
  }
}

void ZBhit( ZBUTTON *bp )
{
  ZBpress(bp);
  napms(100);
  ZBrelease(bp);
}

int ZBkey( ZBUTTON *bp, int cnt, int k )
{
  int i;

  if( k < 256 )
    k = toupper( k );
  for( i = 0; i < cnt; i ++ )
  {
    if( !bp->k || bp->k == k )
      return( i );
    bp ++;
  }
  return( -1 );
}

⌨️ 快捷键说明

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