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

📄 view.cc

📁 sdcc是为51等小型嵌入式cpu设计的c语言编译器支持数种不同类型的cpu
💻 CC
字号:
/* * Simulator of microcontrollers (view.cc) * * Copyright (C) 1999,99 Drotos Daniel, Talker Bt. *  * To contact author send email to drdani@mazsola.iit.uni-miskolc.hu * *//* This file is part of microcontroller simulator: ucsim.UCSIM is free software; you can redistribute it and/or modifyit under the terms of the GNU General Public License as published bythe Free Software Foundation; either version 2 of the License, or(at your option) any later version.UCSIM is distributed in the hope that it will be useful,but WITHOUT ANY WARRANTY; without even the implied warranty ofMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See theGNU General Public License for more details.You should have received a copy of the GNU General Public Licensealong with UCSIM; see the file COPYING.  If not, write to the FreeSoftware Foundation, 59 Temple Place - Suite 330, Boston, MA02111-1307, USA. *//*@1@*/#include "ddconfig.h"#include <stdlib.h>#include "i_string.h"#include "appcl.h"/* * Box */cl_box::cl_box(int ix, int iy, int iw, int ih):  cl_base(){  x= ix;  y= iy;  w= iw;  h= ih;}voidcl_box::set(int ix, int iy, int iw, int ih){  x= ix;  y= iy;  w= iw;  h= ih;}voidcl_box::move_rel(int dx, int dy){  x+= dx;  y+= dy;}voidcl_box::grow(int dw, int dh){  w+= dw;  h+= dh;}/* * Astbract of a viewer ****************************************************************************** */cl_view::cl_view(class cl_box *ipos, char *iname, class cl_app *iapp):  cl_base(){  pos= new cl_box(ipos->x,ipos->y, ipos->w,ipos->h);  if ((window= newwin(pos->h,pos->w, pos->y,pos->x)))    {      leaveok(window, TRUE);      panel= new_panel(window);    }  else    {      panel= 0;      delwin(window);      window= 0;    }  parent= 0;  next= last= 0;  app= iapp;  state= SF_NOTHING;  options= OF_SELECTABLE;  if (!iname ||      !(*iname))    {      name= (char*)malloc(100);      sprintf(name, "view%p", this);    }  else    name= strdup(iname);}cl_view::cl_view(char *iname, class cl_app *iapp):  cl_base(){  window= 0;  panel= 0;  parent= 0;  next= last= 0;  app= iapp;  state= SF_NOTHING;  options= OF_SELECTABLE;  if (!iname ||      !(*iname))    {      name= (char*)malloc(100);      sprintf(name, "view%p", this);    }  else    name= strdup(iname);}cl_view::~cl_view(void){  if (panel)    del_panel(panel);  if (window)    delwin(window);  if (palette)    free(palette);  if (name)    free(name);}intcl_view::init(void){  input= mk_input();  palette= mk_palette();  //draw();  return(0);}class cl_gin *cl_view::mk_input(void){  return(0);}int *cl_view::mk_palette(void){  return(0);}intcl_view::ok(void){  return(window && panel);}/* * Make output into the view */intcl_view::draw(void){  int color, x, y;  color= get_color(palette?0:C_WIN_NORMAL);    wattrset(window, color);  for (y= 0; y < pos->h; y++)    for (x= 0; x < pos->w; x++)      mvwaddch(window, y,x, ' ');  app->drawn++;  return(0);}intcl_view::update(void){  draw();  update_panels();  doupdate();  return(0);}intcl_view::get_color(int color){  int *p;  class cl_view *v;  v= this;  while (v)    {      p= v->get_palette();      if (p)	color= p[color];      v= v->parent;    }  return(color);}int *cl_view::get_palette(void){  return(palette);}/* * Event handling */intcl_view::get_event(struct t_event *event){  if (parent)    return(parent->get_event(event));  if (input)    return(input->get_event(event));  return(0);}intcl_view::handle_event(struct t_event *event){  return(0);}intcl_view::unhandled(struct t_event *event){  return(0);}intcl_view::mk_event(struct t_event *event, FILE *f, int key){  event->what= EV_KEY;  event->event.key= key;  return(1);}class cl_view *cl_view::prev(void){  class cl_view *v;  v= next;  while (v != this)    v= v->next;  return(v);}class cl_view *cl_view::prev_view(void){  if (parent &&      parent->first() == this)    return(0);  else    return(prev());    }intcl_view::select(void){  /*  class cl_view *v;  if (!(options & OF_SELECTABLE))    return(0);  if (state & SF_SELECTED)    return(1);  if (parent &&      !(parent->select()))    return(0);  if (parent)    {      v= parent->current_sub_view();      if (v &&	  v != this)	v->unselect();      parent->set_current(this);    }  change_state(SF_FOCUSED, 1);  change_state(SF_SELECTED, 1);  draw();  return(1);*/  if (options & OF_SELECTABLE)    if (parent)      parent->set_current(this);  return(1);}intcl_view::unselect(void){  class cl_view *csv= current_sub_view();  if (csv &&      !(csv->unselect()))    return(0);  if (!terminal_view())    change_state(SF_FOCUSED, 0);  change_state(SF_SELECTED, 0);  draw();  return(1);}class cl_view *cl_view::current_sub_view(void){  return(0);}intcl_view::terminal_view(void){  return(1);}voidcl_view::change_state(unsigned int what, int enable){  if (enable)    state|= what;  else    state&= ~what;  if (parent)    {      switch (what)	{	case SF_FOCUSED:	  //reset_cursor();	  /*message(parent, EV_BROADCAST,	    (enable)?CM_RECEIVED_FOCUS:CM_RELEASED_FOCUS, this);*/	  break;	}    }  draw();}/* End of gui.src/view.cc */

⌨️ 快捷键说明

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