//->!Menulib



int csplatename_handle;
int csprocessplates;
int csspotplates;
int csink_handle;
int csspot_handle;




int csspotname(int i,string & name)
{
 switch(i)
 {
  case  0:
          name="Dot";
          break;

  case  1:
          name="Line";
          break;

  case  2:
          name="Square";
          break;

  case  3:
          name="Ellipse";
          break;

  case  4:
          name="Circle";
          break;


  default:
          return(0);
 }
 return(1);
}


int csspot_entry(int entry,int subcode)
{
 cssetspot(entry);
 return(0);
}



int csspot_flags(int entry,string & text)
{
 return(entry==csgetspot()?TICKED:0);
}




int csspot_menu(int open)
{
 string s;
 int    i;

 if(!csspot_handle)
 {
  csspot_handle=create_menu("Spot");
  i=0;
  while(csspotname(i++,s))
  {
   addentry_menu(csspot_handle,"csspot_entry","csspot_flags","","",s);
  }
 }
 return(csspot_handle);
}





int csink_entry(int entry,int subcode)
{
 cssetink(entry);
 return(0);
}


int csink_flags(int entry,string & text)
{
 return(csgetink()==entry);
}



int csink_menu(int open)
{
 int    i;
 string s;


 if(!csink_handle)
 {
  csink_handle=create_menu("Ink");

  i=0;
  while(csinkname(i++,s))
  {
   addentry_menu(csink_handle,"csink_entry","csink_flags","","",s);
  }
 }

 return(csink_handle);
}







int cscurve_handle;


int cscurve_entry(int entry,int subcode)
{
 cssetcurve(entry);
 return(0);
}


int cscurve_flags(int entry,string & text)
{
 return(csgetcurve()==entry);
}



int cscurve_menu(int open)
{
 int    i;
 string s;


 if(!cscurve_handle)
 {
  cscurve_handle=create_menu("Curve");

  i=0;
  while(cscurvename(i++,s))
  {
   addentry_menu(cscurve_handle,"cscurve_entry","cscurve_flags","","",s);
  }
 }

 return(cscurve_handle);
}








int csplatename_flags(int entry,string & text)
{
 int bits;

 if(entry<2)
 {
  if(entry==0) bits=(csprocessplates+csspotplates)>0?0:SHADED;
  if(entry==1) bits=(csspotplates>0?0:SHADED)|DOTTED;
  return(bits);
 }

 entry-=2;

 if(entry<csprocessplates)
 {
  bits=(csplatebits(entry,0,0,0) & 0x2)?TICKED:0;
  if(entry==(csprocessplates-1) && csspotplates) bits|=DOTTED;
  return(bits);
 }

 entry-=csprocessplates;

 if(entry<csspotplates) return((csplatebits(entry,1,0,0) & 0x2)?TICKED:0);

 return(0);
}




int csplatename_entry(int entry,int subcode)
{
 int i;

 if(entry==0)
 {
  for(i=0;i<csprocessplates;i++) csplatebits(i,0,2,2);
  for(i=0;i<csspotplates;i++)    csplatebits(i,1,2,0);
  return(0);
 }

 if(entry==1)
 {
  for(i=0;i<csspotplates;i++)    csplatebits(i,1,2,2);
  for(i=0;i<csprocessplates;i++) csplatebits(i,0,2,0);
  return(0);
 }

 entry-=2;

 if(entry<csprocessplates)
 {
  csplatebits(entry,0,0,2);
  return(0);
 }

 entry-=csprocessplates;

 if(entry<csspotplates)
 {
  csplatebits(entry,1,0,2);
  return(0);
 }

 return(0);
}



int csplate_menu(int open)
{
 int    i;
 string s;


 if(csplatename_handle) delete_menu(csplatename_handle);

 csplatename_handle=create_menu("Plates");
 addentry_menu(csplatename_handle,"csplatename_entry","csplatename_flags","","","All process");
 addentry_menu(csplatename_handle,"csplatename_entry","csplatename_flags","","","All spots");

 csprocessplates=csspotplates=0;

 i=0;
 while(csplatename(i++,s,0))
 {
  addentry_menu(csplatename_handle,"csplatename_entry","csplatename_flags","","",s);
  csprocessplates++;
 }

 i=0;
 while(csplatename(i++,s,1))
 {
  addentry_menu(csplatename_handle,"csplatename_entry","csplatename_flags","","",s);
  csspotplates++;
 }

 return(csplatename_handle);
}




/****************************************************************************/

int csviewname_handle;



int csviewname_flags(int entry,string & text)
{
 int bits;

 if(entry==0)
 {
  bits=((csprocessplates+csspotplates)>0?0:SHADED)|DOTTED;
  return(bits);
 }

 entry-=1;

 if(entry<csprocessplates)
 {
  bits=(csviewbits(entry,0,0,0) & 0x2)?TICKED:0;
  if(entry==(csprocessplates-1) && csspotplates) bits|=DOTTED;
  return(bits);
 }

 entry-=csprocessplates;

 if(entry<csspotplates) return((csviewbits(entry,1,0,0) & 0x2)?TICKED:0);

 return(0);
}




int csviewname_entry(int entry,int subcode)
{

 if(entry==0)
 {
  csviewbits(-1,0,2,2);
  return(0);
 }

 entry--;

 if(entry<csprocessplates)
 {
  csviewbits(entry,0,0,2);
  return(0);
 }

 entry-=csprocessplates;

 if(entry<csspotplates)
 {
  csviewbits(entry,1,0,2);
  return(0);
 }

 return(0);
}



int csview_menu(int open)
{
 int    i;
 string s;


 if(csviewname_handle) delete_menu(csviewname_handle);

 csviewname_handle=create_menu("Plates");
 addentry_menu(csviewname_handle,"csviewname_entry","csviewname_flags","","","All plates");

 csprocessplates=csspotplates=0;

 i=0;
 while(csviewname(i++,s,0))
 {
  addentry_menu(csviewname_handle,"csviewname_entry","csviewname_flags","","",s);
  csprocessplates++;
 }

 i=0;
 while(csviewname(i++,s,1))
 {
  addentry_menu(csviewname_handle,"csviewname_entry","csviewname_flags","","",s);
  csspotplates++;
 }

 return(csviewname_handle);
}




int csview_flags(int entry,string & text)
{
 string s;
 return((csviewname(0,s,1) || csviewname(0,s,0))?0:SHADED);
} 





int process_entry(int entry,int subcode)
{
 openprocessbox();
}



int screen_entry(int entry,int subcode)
{
 openscreenbox();
}




void main(void)
{
 addentry_menu(view_handle,"","csview_flags","csview_menu","","Separations");
 addentry_menu(picture_handle,"process_entry","","","","Process...");
 addentry_menu(picture_handle,"screen_entry","","","","Screen...");
}

