/* * File: math_panel.C * Purpose: Mathed GUI for lyx * Author: Alejandro Aguilar Sierra <asierra@servidor.unam.mx> * Created: March 28, 1996 * * Dependencies: Xlib, Xpm, XForms, Lyx * * Copyright: (c) 1996, Alejandro Aguilar Sierra * * You are free to use and modify it under the terms of * the GNU General Public Licence version 2 or later.
*/
/* callbacks for form panel */ void button_cb(FL_OBJECT *ob, long data)
{ externvoid free_symbols_form(); switch (data) { case MM_GREEK: case MM_VARSIZE: case MM_BRELATS: case MM_ARROW: case MM_BOP: case MM_MISC:
{
BitmapMenu *menu = (BitmapMenu *)ob->u_vdata;
menu->Show(); break;
} case MM_FRAC:
lyxfunc->Dispatch(LFUN_INSERT_MATH, "frac"); break; case MM_SQRT:
lyxfunc->Dispatch(LFUN_INSERT_MATH, "sqrt"); break; case MM_DELIM:
fl_show_form(fd_delim->delim,FL_PLACE_MOUSE,FL_FULLBORDER, _("Delimiter"));
fl_set_form_atclose(fd_delim->delim, CancelCloseBoxCB, NULL); break; case MM_DECO:
fl_show_form(fd_deco->deco,FL_PLACE_MOUSE,FL_FULLBORDER,_("Decoration"));
fl_set_form_atclose(fd_deco->deco, CancelCloseBoxCB, NULL); break; case MM_SPACE:
fl_show_form(fd_space->space,FL_PLACE_MOUSE,FL_FULLBORDER,_("Spacing"));
fl_set_form_atclose(fd_space->space, CancelCloseBoxCB, NULL); break; case MM_MATRIX:
fl_show_form(fd_matrix->matrix,FL_PLACE_MOUSE,FL_FULLBORDER,_("Matrix"));
fl_set_form_atclose(fd_matrix->matrix, CancelCloseBoxCB, NULL); break; case MM_EQU:
lyxfunc->Dispatch(LFUN_MATH_DISPLAY); break; case MM_FUNC:
{ int i = fl_get_browser(fd_panel->func_browse) - 1;
lyxfunc->Dispatch(LFUN_INSERT_MATH, func_code[i]); break;
} case 100:
free_symbols_form(); break;
}
}
/* callbacks for form delim */ void delim_cb(FL_OBJECT *, long data)
{ int left=fd_delim->left->u_ldata, right=fd_delim->right->u_ldata; int side=(fl_get_button(fd_delim->right)!=0);
Pixmap p1, p2;
switch (data) { case MM_APPLY: case MM_OK:
{ char s[80];
sprintf(s, "%d %d", delim_code[left], delim_code[right]);
lyxfunc->Dispatch(LFUN_MATH_DELIM, s); if (data==MM_APPLY) break;
} case MM_CLOSE: fl_hide_form(fd_delim->delim); break; case 2:
{ int i = fl_get_bmtable(fd_delim->menu); if (i>=0) { #if FL_REVISION > 85 if (side || (fl_get_bmtable_numb(fd_delim->menu)!=FL_LEFT_MOUSE)) #else if (side || (fl_get_bmtable_numb(fd_delim->menu)!= 1))
#endif
right = i; else
left = i;
}
p1 = fl_get_pixmap_pixmap(fd_delim->pix, &p1, &p2);
fl_draw_bmtable_item(fd_delim->menu,left,p1,0,0);
fl_draw_bmtable_item(fd_delim->menu,right,p1,16,0);
fl_redraw_object(fd_delim->pix);
/* callbacks for form deco */ void deco_cb(FL_OBJECT *, long data)
{ switch (data) { case MM_APPLY: case MM_OK:
{ int i = fl_get_bmtable(fd_deco->menu);
lyxfunc->Dispatch(LFUN_INSERT_MATH, deco_code[i]); if (data==MM_APPLY) break;
} case MM_CLOSE: fl_hide_form(fd_deco->deco); break;
}
}
/* callbacks for form space */ void space_cb(FL_OBJECT *, long data)
{ staticshort sp=-1; externchar *latex_mathspace[];
if (data>=0 && data<6)
sp = (short)data; else switch (data) { case MM_APPLY: case MM_OK:
{ if (sp>=0)
lyxfunc->Dispatch(LFUN_INSERT_MATH, latex_mathspace[sp]); if (data==MM_APPLY) break;
} case MM_CLOSE: fl_hide_form(fd_space->space); break;
}
}
int align_filter(FL_OBJECT *, charconst *, charconst *cur, int c)
{ int n = (int)(fl_get_slider_value(fd_matrix->columns)+0.5) - strlen(cur); return ((c=='c'||c=='l'||c=='r') && n>=0) ? FL_VALID: FL_INVALID;
}
char** mathed_get_pixmap_from_icon(int d)
{ switch (d) { case MM_FRAC: return frac; case MM_SQRT: return sqrt; case MM_DELIM: return delim; case MM_MATRIX: return matrix; case MM_EQU: return equation; case MM_DECO: return deco; case MM_SPACE: return space_xpm; default: return NULL;
}
}
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung ist noch experimentell.