VOID edit_bit(LONG tree, WORD sobj) { WORD where, exitobj, ok; BYTE name[9]; GRECT p; if (rcs_state != ALRT_STATE) { objc_xywh(tree, sobj, &p); ini_tree(&tree, BITDIAL); where = set_obname(tree, BITNAME, name, ad_view, sobj); do { exitobj = hndl_dial(tree, 0, &p); desel_obj(tree, exitobj); ok = DEFAULT & GET_FLAGS(tree, exitobj); } while (ok && !name_ok(name, where, TRUE)); if (ok) { rcs_edited = TRUE; get_obname(name, ad_view, sobj); } } }
VOID edit_box(LONG tree, WORD sobj) { LONG obspec; WORD where, type, exitobj, ok, nilok; BYTE name[9], text[2], bxchar; GRECT p; if (rcs_state != ALRT_STATE) { get_fields(tree, sobj, &type, &obspec, &p); ini_tree(&tree, BOXDIAL); where = set_obname(tree, BOXNAME, name, ad_view, sobj); if ( where != NIL && tree_view() && tree_kind( get_kind(where)) ) nilok = FALSE; else nilok = TRUE; bxchar = LHIBT(LHIWD(LLGET(obspec))); set_text(tree, OCHRITEM, (LONG)ADDR(&text[0]), 2); text[0] = bxchar? bxchar: '@'; text[1] = '\0'; do { exitobj = hndl_dial(tree, OCHRITEM, &p); desel_obj(tree, exitobj); ok = DEFAULT & GET_FLAGS(tree, exitobj); } while (ok && !name_ok(name, where, nilok)); if (ok) { rcs_edited = TRUE; get_obname(name, ad_view, sobj); bxchar = (text[0] == '@')? '\0': text[0]; LLSET(obspec, (LLGET(obspec) & 0xffffffL) | ((LONG) ((UWORD) bxchar) << 24)); } } }
static void btn_ok_cb( GtkWidget *button, /* Ignored */ t_ctxt *ctxt) { t_obj * dev_obj; t_dev * dev; /* Actual deck */ t_obj * dup_obj; /* Duplicate */ t_usr_ctxt * usr; t_ctxt * devs_ctxt; /* For channels list editor */ gchar * name = NULL; usr = ctxt->usr; dev_obj = usr->dev_obj; dev = usr->dev; update_txt_fld(&name, usr->fld_name); if(!name_ok(name, find_dev_called, dev_obj)) { if(!name || !*name) { SimplePopUp(ctxt->win, "Blank Device name", "The Device name is blank", "You must give the device a unique name. " "Please add a name and re-save", TRUE, GTK_MESSAGE_ERROR, GTK_BUTTONS_OK); return; } dup_obj = find_dev_called(name); /* Look for duplicate */ if(dup_obj) /* Found duplicate? */ edit_dev(dup_obj); /* Launch editor on duplicate*/ else E("Could not find duplicate object ... odd"); SimplePopUp(ctxt->win, "Duplicate Device name", "The new name is not unique", "All device names must be unique. The duplicate " "device has been launched in a separate window. " "Please change the name for one of these devices " "and re-save", TRUE, GTK_MESSAGE_ERROR, GTK_BUTTONS_OK); return; } WAITLOCK(dev->lck); update_txt_fld(&(dev->desc), usr->fld_desc); UNLOCK(dev->lck); obj_rename(dev_obj, name); /* --- Now update the list editor - if there is one! --- */ if(locked4edit(devices, &devs_ctxt)) list_window_change_cb(dev_obj, devs_ctxt); /*devs_window_change_cb(usr->dev_obj, ctxt);*/ gtk_widget_destroy(ctxt->win); changed(); } /* btn_ok_cb() */
VOID edit_icon(LONG tree, WORD sobj) { LONG obspec, taddr; WORD where, type, itmp, exitobj, ok; GRECT p; BYTE text[14], valid[2], name[9]; WORD trule, crule, w, h; if (rcs_state != ALRT_STATE) { get_fields(tree, sobj, &type, &obspec, &p); ini_tree(&tree, ICONDIAL); where = set_obname(tree, ICONNAME, name, ad_view, sobj); taddr = LLGET(obspec); set_text(tree, IBTEXT, (LONG)ADDR(&text[0]), 13); set_text(tree, IBCHAR, (LONG)ADDR(&valid[0]), 2); icon_set(taddr, &text[0], &valid[0]); trule = icon_twhich(LWGET(IB_YTEXT(taddr)), LWGET(IB_HICON(taddr))); sel_obj(tree, IBTPOS0 + trule); itmp = icon_cwhich(LWGET(IB_YCHAR(taddr)), gl_hschar, LWGET(IB_HICON(taddr))); crule = icon_cwhich(LWGET(IB_XCHAR(taddr)), gl_wschar, LWGET(IB_WICON(taddr))); crule += 3 * itmp; sel_obj(tree, IBCPOS0 + crule); do { exitobj = hndl_dial(tree, IBTEXT, &p); desel_obj(tree, exitobj); ok = DEFAULT & GET_FLAGS(tree, exitobj); } while (ok && !name_ok(name, where, TRUE)); if (ok) { rcs_edited = TRUE; get_obname(name, ad_view, sobj); icon_get(taddr, &text[0], &valid[0]); itmp = encode(tree, IBTPOS0, 3); if (itmp != trule) { itmp = icon_tapply(itmp, gl_hschar, LWGET(IB_HICON(taddr))); LWSET(IB_YTEXT(taddr), itmp); } LWSET(IB_WTEXT(taddr), (WORD)(gl_wschar * strlen(text))); icon_tfix(taddr); itmp = encode(tree, IBCPOS0, 9); if (itmp != crule) { crule = itmp; itmp = icon_capply(crule / 3, gl_hschar, LWGET(IB_HICON(taddr))); LWSET(IB_YCHAR(taddr), itmp); itmp = icon_capply(crule % 3, gl_wschar, LWGET(IB_WICON(taddr))); LWSET(IB_XCHAR(taddr), itmp); } icon_wh(taddr, &w, &h); newsize_obj(ad_view, sobj, w, h, FALSE); } map_tree(tree, ROOT, NIL, (fkt_parm)desel_obj); /* clear radio buttons */ } }
VOID edit_text(LONG tree, WORD sobj) { LONG obspec, taddr; WORD min_width, where, type, deftext, w, h, exitobj, ok; GRECT p; BYTE text[73], valid[73], tmplt[73], name[9]; if (rcs_state != ALRT_STATE) { get_fields(tree, sobj, &type, &obspec, &p); taddr = LLGET(obspec); if (type == G_FTEXT || type == G_FBOXTEXT) if (LSTRLEN(LLGET(TE_PTMPLT(taddr))) > 72) return; ini_tree(&tree, TEXTDIAL); where = set_obname(tree, TEXTNAME, name, ad_view, sobj); set_text(tree, OTMPITEM, (LONG)ADDR(&tmplt[0]), 73); set_text(tree, OVALITEM, (LONG)ADDR(&valid[0]), 73); set_text(tree, OTEXITEM, (LONG)ADDR(&text[0]), 73); LLSTRCPY(LLGET(TE_PTMPLT(taddr)), (LONG)ADDR(&tmplt[0])); ted_set(taddr, &tmplt[0], &valid[0], &text[0]); if (type == G_TEXT || type == G_BOXTEXT) { if (LSTRLEN(LLGET(TE_PTEXT(taddr))) > 72) return; hide_obj(tree, TMPLTTAG); hide_obj(tree, OTMPITEM); hide_obj(tree, VALIDTAG); hide_obj(tree, OVALITEM); deftext = OTEXITEM; } else deftext = (tmplt[0] != '@')? OTMPITEM: OTEXITEM; do { exitobj = hndl_dial(tree, deftext, &p); desel_obj(tree, exitobj); ok = DEFAULT & GET_FLAGS(tree, exitobj); } while (ok && !name_ok(name, where, TRUE)); if (ok) { rcs_edited = TRUE; get_obname(name, ad_view, sobj); ted_get(taddr, &tmplt[0], &valid[0], &text[0]); if (type == G_TEXT || type == G_FTEXT || type == G_BOXTEXT) { text_wh(taddr, type, &w, &h); min_width = GET_WIDTH(ad_view, sobj); if ( w > min_width) newsize_obj(ad_view, sobj, w, h, TRUE); } } unhide_obj(tree,TMPLTTAG); unhide_obj(tree,OTMPITEM); unhide_obj(tree, VALIDTAG); unhide_obj(tree,OVALITEM); map_tree(tree, ROOT, NIL, (fkt_parm)desel_obj); /* clear radio buttons */ } }
VOID edit_str(LONG tree, WORD sobj) { LONG obspec; WORD where, type, exitobj, ok; GRECT p; WORD min_width, neww, len; BYTE text[73], name[9]; get_fields(tree, sobj, &type, &obspec, &p); len = (WORD)LSTRLEN(LLGET(obspec)); if (len <= 72) { ini_tree(&tree, STRDIAL); where = set_obname(tree, STRNAME, name, ad_view, sobj); set_text(tree, OSTRITEM, (LONG)ADDR(&text[0]), 73); LLSTRCPY(LLGET(obspec), (LONG)ADDR(&text[0])); if ( rcs_state == ALRT_STATE ) hide_obj( tree, STRNAME); if (!text[0]) text[0] = '@'; do { exitobj = hndl_dial(tree, OSTRITEM, &p); desel_obj(tree, exitobj); ok = DEFAULT & GET_FLAGS(tree, exitobj); } while ( ok && !name_ok(name, where, TRUE)); if (ok) { rcs_edited = TRUE; get_obname(name, ad_view, sobj); if (text[0] == '@') text[0] = '\0'; if (rcs_state == ALRT_STATE) { if (strlen(text) > 40 ) { hndl_alert(1, string_addr(STOOLONG)); text[40] = '\0'; } update_if(obspec, &text[0]); fix_alert(ad_view); unhide_obj(tree, STRNAME); } else { neww = (WORD)(gl_wchar * strlen(text)); if (rcs_state == MENU_STATE) { if (type == G_TITLE) { if (!newsize_obj(ad_view, sobj, neww,gl_hchar, TRUE)) text[len] = '\0'; fix_menu_bar(ad_view); } else if (in_which_menu(ad_view, sobj) == 1 && in_menu(ad_view, sobj) == 1 && strlen(text) > 20 ) { hndl_alert(1, string_addr(STOOLONG)); text[20] = '\0'; } else if(!newsize_obj(ad_view, sobj, neww,gl_hchar, FALSE)) text[len] = '\0'; } else if (type == G_STRING || type == G_BUTTON ) { min_width = GET_WIDTH(ad_view, sobj); if( neww > min_width ) if(!newsize_obj(ad_view, sobj, neww,gl_hchar, FALSE)) text[len] = '\0'; } } if( rcs_state != ALRT_STATE) update_if(obspec, &text[0]); } } }
static void btn_ok_callback( GtkWidget *button, /* Ignored */ t_ctxt *ctxt) { t_cue *cue; /* Actual cue */ t_ctxt *qsheet_ctxt; /* List editor context */ int hours; int mins; int msecs; t_usr_ctxt *usr; gchar *name = NULL; t_obj *cue_obj; usr = ctxt->usr; cue = usr->cue; update_txt_fld(&name, usr->fld_name); if(!name_ok(name, find_cue_called, usr->cue_obj)) { if(!name || !*name) { SimplePopUp(ctxt->win, "Blank Cue name", "The Cue name is blank", "You must give the cue a unique name. " "Please add a name and re-save", TRUE, GTK_MESSAGE_ERROR, GTK_BUTTONS_OK); return; } cue_obj = find_cue_called(name); /* Look for duplicate */ if(cue_obj) /* Found duplicate? */ edit_cue(cue_obj); /* Launch editor on duplicate*/ else E("Could not find duplicate object ... odd"); SimplePopUp(ctxt->win, "Duplicate Cue name", "The new name is not unique", "All cue names must be unique. The duplicate cue " " has been launched in a separate window. Please " " change the name for one of these cues and re-save", TRUE, GTK_MESSAGE_ERROR, GTK_BUTTONS_OK); return; } obj_rename(usr->cue_obj, name); update_txt_fld(&(cue->when), usr->fld_when); update_txt_fld(&(cue->desc), usr->fld_desc); cue->tx_go = gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON(usr->fld_go)); if(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(usr->fld_none))) cue->follow = fo_none; else { if(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(usr->fld_immediate))) cue->follow = fo_immediate; else cue->follow = fo_chain; } hours = gtk_spin_button_get_value_as_int(/* Hours spin button */ GTK_SPIN_BUTTON(usr->fld_hours)); mins = gtk_spin_button_get_value_as_int( /* Minutes spin button */ GTK_SPIN_BUTTON(usr->fld_mins)); msecs = (int)rintf((float)gtk_spin_button_get_value(/* Millisecs spin button*/ GTK_SPIN_BUTTON(usr->fld_msecs)) * 1000.0); cue->delay = HMM2DUR(hours, mins, msecs);/* Calculate total delay */ last_change = time(NULL); /* --- Now update the list editor - if there is one! --- */ if(locked4edit(cue->qsheet, &qsheet_ctxt)) cue_changed(usr->cue_obj, qsheet_ctxt); gtk_widget_destroy(ctxt->win); changed(); } /* apply_handler() */