Example #1
0
void
RemoveLayout(struct layout *lay)
{
  struct layout **layp = &layouts;

  for (; *layp; layp = &(*layp)->lay_next)
    {
      if (*layp == lay)
	{
	  *layp = lay->lay_next;
	  break;
	}
    }
  laytab[lay->lay_number] = (struct layout *)0;

  if (display && D_layout == lay)
    D_layout = (struct layout *)0;

  FreeLayoutCv(&lay->lay_canvas);

  if (lay->lay_title)
    free(lay->lay_title);
  free(lay);

  if (layouts)
    LoadLayout((display && D_layout) ? D_layout : *layp ? *layp : layouts);
  Activate(0);
}
Example #2
0
void AutosaveLayout(Layout *lay)
{
	Canvas *fcv;
	if (!lay || !lay->lay_autosave)
		return;
	FreeLayoutCv(&lay->lay_canvas);
	fcv = D_forecv;
	DupLayoutCv(&D_canvas, &lay->lay_canvas, true);
	lay->lay_forecv = D_forecv;
	D_forecv = fcv;
}
Example #3
0
void FreeLayoutCv(Canvas *cv)
{
	Canvas *cnext, *c = cv;
	for (; cv; cv = cnext) {
		if (cv->c_slperp) {
			FreeLayoutCv(cv->c_slperp);
			free(cv->c_slperp);
			cv->c_slperp = 0;
		}
		cnext = cv->c_slnext;
		cv->c_slnext = 0;
		if (cv != c)
			free(cv);
	}
}
Example #4
0
void SaveLayout(char *name, Canvas *cv)
{
	Layout *lay;
	Canvas *fcv;
	for (lay = layouts; lay; lay = lay->lay_next)
		if (!strcmp(lay->lay_title, name))
			break;
	if (lay)
		FreeLayoutCv(&lay->lay_canvas);
	else
		lay = CreateLayout(name, 0);
	if (!lay)
		return;
	fcv = D_forecv;
	DupLayoutCv(cv, &lay->lay_canvas, true);
	lay->lay_forecv = D_forecv;
	D_forecv = fcv;
	D_layout = lay;
}