示例#1
0
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);
		}
	}
}
示例#2
0
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));
		}
	}
}
示例#3
0
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()		      */
示例#4
0
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 */
	}
}
示例#5
0
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 */
	}
}
示例#6
0
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]);
		}
	}
}
示例#7
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()	      */