Widget* tk_widget(int type, real x, real y, int (*f)(), void *d) { Widget *w = widget_new(type, x, y, 0.2, f); if (wi >= wn) error("tk"); w->id = wi++; wa[w->id] = w; mvwindow(w->id, 0, 1, 0, 1); mvviewport(w->id, w->xo, w->xo + w->xs, w->yo, w->yo + w->ys); switch (type) { case TK_BUTTON: button_make(w, d); break; default: error("tk"); break; } return w; }
void edit_open(void) { int x = INTERSPACE; int y = INTERSPACE; unsigned int w=4,h=4; int i; XSizeHints size_hints; EDITINFO *einf; state_window = NULL; if ( (einf = (EDITINFO *) malloc( sizeof(EDITINFO) )) == NULL) message(MP_ERROR, translate("Out of memory in edit.")); else { if (!state_open) if (!last_xpos && !last_ypos) { last_xpos = (display_width - last_width)/2; last_ypos = (display_height - last_height)/2; } einf->xpos = last_xpos; einf->ypos = last_ypos; einf->width = last_width; einf->height = last_height; einf->saved = MP_True; einf->auto_saved = MP_True; einf->view_mode = MP_False; einf->empty = MP_True; einf->iconized = MP_True; einf->shell = MP_False; einf->fini = MP_False; einf->strt = MP_False; einf->buflen=0; einf->pid=0; einf->prcsbuf=NULL; einf->win_id = XCreateWindow(display, root_window, einf->xpos, einf->ypos, einf->width, einf->height, BORDERWIDTH, CopyFromParent, InputOutput, visual, edit_mask, &edit_attr); if (state_open) size_hints.flags = USPosition | USSize | PMinSize; else size_hints.flags = PPosition | PSize | PMinSize; wm_hints.initial_state = ((iconic || as_icon) ? IconicState : NormalState); size_hints.min_width = size_hints.min_height = pos_y_with + SCROLLBARSIZE*3; XSetWMProperties(display, einf->win_id, NULL, NULL, NULL, 0, &size_hints, &wm_hints, &class_hints); wm_hints.initial_state = NormalState; set_protocols(einf->win_id); i=0; einf->headername = NULL; einf->filename = NULL; einf->pathname = NULL; einf->outputname = NULL; if (set_name(einf, NULL) && add_window(einf->win_id, MAINEDITWINDOW, root_window, (void *) einf, translate(helpname[EDITHELP]))) { while (i<NR_BUTTON && button_make(i, einf->win_id, translate(editbutton[perm[i]]), &x, y, 1, (void*) einf, helpname[edithelp[i]], NULL, NULL, edit_handle_button, edit_handle_button, edit_handle_button, NULL)) i++,x+=BINTERSPACE; w = sub_width(last_width); h = sub_height(last_height); if (i==NR_BUTTON) { einf->drawwin_id = XCreateWindow(display, einf->win_id, pos_x_with, pos_y_with, w-2, h-2, 1, CopyFromParent, InputOutput, visual, edit_mask, &edit_attr); if (add_window(einf->drawwin_id, EDITWINDOW, einf->win_id, NULL, translate(helpname[EDITSUBHELP]))) i++; } if (i==NR_BUTTON +1 && (einf->scrollhor = scrollbar_make(HORIZONTAL, einf->win_id, pos_x_with, pos_y_without, w, font_width(), edit_scrollto, (void*) einf))) i++; if (i==NR_BUTTON+2 && (einf->scrollver = scrollbar_make(VERTICAL, einf->win_id, pos_x_without, pos_y_with, h, line_height(), edit_scrollto, (void*) einf))) i++; } if (i<NR_BUTTON+3) { free(einf->headername); free(einf->pathname); free(einf->filename); XDestroyWindow(display, einf->win_id); destroy_window(einf->win_id); } else { is_opened = MP_True; scrollbar_set(einf->scrollver, 0, 1); scrollbar_set(einf->scrollhor, 0, 80); move_selection = !as_icon; einf->info = open_editwindow(&einf->drawwin_id, w-2, h-2); move_selection = MP_False; (void) window_changed(einf->info); number_icon++; number_open++; edit_is_open = MP_True; edit_iconized = (number_icon==number_open); state_window = einf; XMapSubwindows(display, einf->win_id); XMapWindow(display, einf->win_id); } } }