예제 #1
0
void ArpIntControl::DrawOn(BRect updateRect, BView* view)
{
	BRect		cb = ControlBounds();
	float		textY = cb.top + Prefs().GetInt32(ARP_FULLFONT_Y);
	if (mDivider > 0) {
		view->SetHighColor(mViewColor);
		view->FillRect( BRect(0, cb.top, cb.left, cb.bottom) );
		if (mLabel.Length() > 0) {
			if ( IsFocus() ) view->SetHighColor( Prefs().GetColor(ARP_INT_FGF_C));
			else if ( !IsEnabled() ) view->SetHighColor( tint_color(Prefs().GetColor(ARP_INT_FG_C), B_LIGHTEN_1_TINT) );
			else view->SetHighColor( Prefs().GetColor(ARP_INT_FG_C) );
			view->SetLowColor(mViewColor);
			view->DrawString( mLabel.String(), BPoint(0, textY) );
		}
	}
	DrawControlBackgroundOn(cb, view);

	BPoint			drawPt(cb.left + 3, textY);
	if (IsEnabled() == false) {
		drawPt.x++;
		drawPt.y++;
	}
	BString16		str;
	GetValueLabel(Value(), str);
	SetValueColor(view);
	view->DrawString( str.String(), drawPt );
}
예제 #2
0
void ArpIntControl::StartEdit()
{
	// If I've lost the active state while waiting, don't start editing.
	if ( !Window() || !Window()->IsActive() ) return;
	
	StopEdit(false);
	StopTimer();
	
	BRect		b = ControlBounds();
	float		borderL = b.left;
	float		bottomIndent = 0;
	float		stringIndent = 3;
	BPoint		origin( borderL + 3, b.bottom - bottomIndent - stringIndent );
	
	if (!mTextCtrl) {
		BFont font;
		GetFont(&font);
		mTextCtrl = new ArpInlineTextView(BMessenger(this),
										  "text:edit", &font,
										  origin.x, b.right-2, origin.y);
	}
	if (!mTextCtrl) return;
	
	SetEventMask(B_POINTER_EVENTS, B_NO_POINTER_HISTORY);
	
	mTextCtrl->MoveOver(origin.x, b.right-2, origin.y);
	mTextCtrl->SetViewColor( Prefs().GetColor(ARP_INT_BGF_C));
	mTextCtrl->SetHighColor( Prefs().GetColor(ARP_INT_FGF_C));
	BString16		str;
	GetValueLabel(Value(), str);
	mTextCtrl->SetText( str.String() );
	AddChild(mTextCtrl);
}
예제 #3
0
void SeqSignatureMeasureControl::DrawCenterOn(BRect bounds, BView* view)
{
	view->SetHighColor( Prefs().Color(AM_MEASURE_FG_C) );
	view->SetLowColor( Prefs().Color(AM_MEASURE_BOTTOM_BG_C) );

	AmSignatureMeasureBackground		bg(mSignatures, mMtc);
	bg.SetScrollX(mScrollX);
	bg.SetLeftIndent(mLeftIndent);
	bg.SetFlag(bg.DRAW_SIGNATURES_FLAG, true);
	bg.SetFlag(bg.DRAW_MEASURE_FLAG, true);
	/* This looks like a hack I did for drawing the measure in
	 * the track window.  However, as of now, I have no plans to
	 * allow tracks to have their own signatures, so this is
	 * currently a waste of time.  Probably, if I do want to reinstate
	 * this, I should do it a better way, like another subclass.  This
	 * is just gross.
	 */
#if 0
	if (mTrackWinProps) {
		AmTrackRef				trackRef = mTrackWinProps->OrderedTrackAt(0);
		if (trackRef.IsValid() ) bg.SetTrackRef(trackRef);
	}
#endif
	bg.DrawAllOn(view, bounds);
}
예제 #4
0
void SeqMeasureControl::DrawCenterBgOn(BRect cBounds, BView* view, AmTime songEndTime)
{
	BPoint		left(cBounds.left, cBounds.top + 1);
	BPoint		right(cBounds.right, cBounds.top + 1);
	rgb_color	c = Prefs().Color( AM_MEASURE_TOP_BG_C );
	rgb_color	bc = Prefs().Color( AM_MEASURE_BOTTOM_BG_C );
	float		r_delta = 0, g_delta = 0, b_delta = 0;
	float		height = cBounds.bottom - left.y;
	if( c.red != bc.red )		r_delta = ((float)bc.red - (float)c.red) / height;
	if( c.green != bc.green )	g_delta = ((float)bc.green - (float)c.green) / height;
	if( c.blue != bc.blue )		b_delta = ((float)bc.blue - (float)c.blue) / height;

	float		i = 1;
	rgb_color	o = c;
	while (left.y < cBounds.bottom) {
		view->SetHighColor( c );
		view->StrokeLine( left, right );
		c.red = (uint8)(o.red + (i * r_delta));
		c.green = (uint8)(o.green + (i * g_delta));
		c.blue = (uint8)(o.blue + (i * b_delta));
		left.y++;
		right.y++;
		i++;
	}
}
예제 #5
0
BView* SeqPrefWin::NewEditView(BRect bounds, const BMessage& prefs)
{
	BView*		v = new BView(bounds, EDIT_STR, B_FOLLOW_ALL, 0);
	if (!v) return v;
	v->SetViewColor( Prefs().Color(AM_AUX_WINDOW_BG_C) );

	const char*	label = "Undo history:";
	float		top = INDENT;
	float		fh = view_font_height(v);
	float		ih = Prefs().Size(INT_CTRL_Y);
	float		max = (fh > ih) ? fh : ih;
	BRect		r(INDENT, top, INDENT + v->StringWidth(label), top + max);
	BStringView* sv = new BStringView(r, "undolevellabel", label);
	if (sv) v->AddChild(sv);
	r.left = r.right + LABEL_PAD;
	r.right = r.left + v->StringWidth("999") + 5;
	mUndoLevelCtrl = new ArpIntControl( r, UNDO_LEVEL_INT, NULL, new BMessage(CHANGE_UNDO_HISTORY_MSG) );
	if (mUndoLevelCtrl) {
		mUndoLevelCtrl->SetLimits(0, UNDO_HISTORY_MAX);
		int32		level;
		if (prefs.FindInt32(UNDO_HISTORY_PREF, &level) != B_OK) level = AM_DEFAULT_UNDO_HISTORY;
		if (level < 0 || level > UNDO_HISTORY_MAX) level = AM_DEFAULT_UNDO_HISTORY;
		mUndoLevelCtrl->SetValue(level);
		v->AddChild(mUndoLevelCtrl);
	}
	return v;
}
예제 #6
0
void TestPrefsDataReadOld( void )
{
    OldPreferences  oldPref;
    Int16           version;
    UInt16          prefSize;

    /* Add known old preference structure */
    MemSet( &oldPref, sizeof( OldPreferences ), 0 );
    oldPref.rotate          = true;
    oldPref.controlMode     = MODE2;
    oldPref.useDateTime     = true;
    PrefSetAppPreferences( (UInt32) ViewerAppID, (UInt16) ViewerOldPrefID,
        (Int16) ViewerVersion, &oldPref, sizeof( OldPreferences ), true );

    /* When the old preference structure is found it should be converted
       to the new format and then the old structure should be removed */
    ReadPrefs();
    ASSERT( Prefs()->rotate );
    ASSERT( Prefs()->controlMode == MODE2 );
    ASSERT( Prefs()->useDateTime );

    /* Check that the old preference structure is removed */
    prefSize    = 0;
    version     = PrefGetAppPreferences( (UInt32) ViewerAppID,
                    (UInt16) ViewerOldPrefID, NULL, &prefSize, true);

    ASSERT( version == noPreferenceFound );
}
예제 #7
0
/* Load the general section into memory */
static void LoadColorPrefs( void )
{
    CtlSetValue( GetObjectPtr( frmPrefsColorStrikethrough ),
        Prefs()->strikethrough );
    CtlSetValue( GetObjectPtr( frmPrefsColorForceDefaultColors ),
        Prefs()->forceDefaultColors );
}
예제 #8
0
/* Indicate that the next tap looks things up in the selected word */
static void ShowSelectWordTapIcon( void )
{
    FormType* mainForm;
    UInt16    prevCoordSys;

    if ( Prefs()->toolbar == TOOLBAR_NONE )
        return;

    mainForm = FrmGetFormPtr( GetMainFormId() );
    prevCoordSys = PalmSetCoordinateSystem( STANDARD );

    if ( Prefs()->toolbar == TOOLBAR_SILK ) {
        /* FIXME: figure this out */
    }
    else {
        FrmHideObject( mainForm, FrmGetObjectIndex( mainForm, bmpWait ) );

        if ( isSelectWordTapMode ) {
            FrmHideObject( mainForm, FrmGetObjectIndex( mainForm, bmpHome ) );
            FrmShowObject( mainForm, FrmGetObjectIndex( mainForm, bmpLookup ) );
        }
        else {
            FrmHideObject( mainForm, FrmGetObjectIndex( mainForm, bmpLookup ) );
            FrmShowObject( mainForm, FrmGetObjectIndex( mainForm, bmpHome ) );
        }
    }
    PalmSetCoordinateSystem( prevCoordSys );
}
예제 #9
0
/*************************************************************************
 * SEQ-STUDIO-WINDOW
 *************************************************************************/
SeqStudioWindow::SeqStudioWindow(	BRect frame,
									const BMessage* config = NULL) 
		: inherited(frame,
					"Studio",
					B_DOCUMENT_WINDOW_LOOK,
					B_NORMAL_WINDOW_FEEL,
					B_ASYNCHRONOUS_CONTROLS),
		  mBg(NULL), mPortMenu(NULL),
		  mLabelCtrl(NULL), mDeviceCtrl(NULL)
{
	BRect		b(Bounds() );
	BRect		r(b);
	r.bottom  = Prefs().Size(MAINMENU_Y);
	AddMainMenu(r);
	r.top = r.bottom + 1;
	/* This accounts for the document window tab.  That tab does
	 * not play nicely with a background that goes completely behind
	 * it -- it leaves trails -- so we have to chunk the background
	 * into two parts.
	 */
	r.bottom = b.bottom - B_H_SCROLL_BAR_HEIGHT;
	AddViews(r);
	r.top = r.bottom + 1;
	r.bottom = b.bottom;
	r.right = b.right - B_V_SCROLL_BAR_WIDTH;
	BView*		v = new BView(r, "filler", B_FOLLOW_LEFT_RIGHT | B_FOLLOW_BOTTOM, 0);
	if (v) {
		v->SetViewColor( Prefs().Color(AM_AUX_WINDOW_BG_C) );
		AddChild(v);
	}

	if (config) SetConfiguration(config);
}
예제 #10
0
/* Perform action for specified screen region */
static void DoScreenAction
    (
    RegionType region   /* screen region */
    )
{
    DoSelectTypeAction( Prefs()->select[ Prefs()->controlMode ][ region ] );
}
예제 #11
0
void SeqPrefWin::FactoryRowSelected()
{
	if (mFactoryInspector) {
		if (mFactoryInspector->RemoveSelf()) delete mFactoryInspector;
		mFactoryInspector = 0;
	}

	if (!mFactoryView) return;
	
	ArpVALIDATE(mFactoryList, return);
	float				sx = Prefs().Size(SPACE_X), sy = Prefs().Size(SPACE_Y);
	BPoint				at = BPoint(sx, mFactoryList->Frame().bottom + sy);

	BString				fac, key;
	if (mFactoryList->GetCurrentKeys(fac, key) != B_OK
			|| fac.Length() < 1 || key.Length() < 1)
		return;

	AmViewFactory*		factory = AmGlobals().FactoryNamed(fac);
	if (!factory) return;

	BRect				f(mFactoryView->Bounds());
	f.left = at.x;
	f.top = at.y;
	mFactoryInspector = factory->NewPrefView(f, &mPreferences, key);
	if (mFactoryInspector) mFactoryView->AddChild(mFactoryInspector);
}
예제 #12
0
GlImage* GlNode1dAddOn::NewImage() const
{
	int32				w = Prefs().GetInt32(GL_NODE_IMAGE_X),
						h = Prefs().GetInt32(GL_NODE_IMAGE_Y);
	if (w < 1 || h < 1) return 0;
	
	GlImage*			img = new GlImage(w, h);
	if (!img || img->InitCheck() != B_OK) {
		delete img;
		return 0;
	}
	img->SetColor(0, 0, 0, 0);
	
	GlNode*				node = NewInstance(0);
	if (!node) return img;

	node->IncRefs();
	gl_generate_args	args;
	args.flags = GL_NODE_ICON_F;
	GlAlgo*				a = node->Generate(args);
	node->MakeEmpty();
	node->DecRefs();

	GlAlgo1d*			a1d = (a) ? a->As1d() : 0;
	if (a1d) {
		GlCache1d		cache;
		cache.Render(a1d, img, GlRect(0, 0, w, h), GlRect(0, 0, w, h));
	}
	delete a;
	
	return img;
}
예제 #13
0
BView* GlNode1d::NewView(gl_new_view_params& params) const
{
	if (params.viewType != GL_INSPECTOR_VIEW) return inherited::NewView(params);
	ArpVALIDATE(Parent(), return 0);

	GlStrainedParamList		list;
	status_t				err = GetParams(list);
	if (err != B_OK) return 0;
//	if (GetParams(params) != B_OK) return 0;

	GlParamView*		v = new GlParamView(params, Parent()->Id(), Id());
	if (!v) return 0;

	float					sx = float(Prefs().GetInt32(ARP_PADX)),
							sy = float(Prefs().GetInt32(ARP_PADY));
	float					fh = v->ViewFontHeight();
//	float					div = get_divider(params, this);
	v->mRect.Set(sx, sy, 152, sy + fh);
	v->AddLabel(v->mRect, "label", AddOn()->Label());

	v->mRect.Set(v->mRect.left, v->mRect.bottom + sy, v->mRect.right, v->mRect.bottom + sy + 50);
	v->AddVisualView(v->mRect, "bm", NewVisual(params.ref), 0);

	v->AddParamControls(list);

	return v;
}
예제 #14
0
void SeqPhrasePropertyWindow::AddViews(BRect frame)
{
	mBg = new BView(frame, "bg", B_FOLLOW_ALL, B_WILL_DRAW);
	if (!mBg) return;
	mBg->SetViewColor( Prefs().Color(AM_AUX_WINDOW_BG_C) );
	AddChild(mBg);
	
	float		fh = arp_get_font_height(mBg);
	float		borderX = Prefs().Size(BORDER_X), borderY = Prefs().Size(BORDER_Y);
	float		spaceX = Prefs().Size(SPACE_X), spaceY = Prefs().Size(SPACE_Y);
	float		divider = mBg->StringWidth("Color:") + 10;
	/* The Name field.
	 */
	BRect		f(borderX, borderY, frame.Width() - borderX, borderY + fh);
	mNameCtrl = new BTextControl(f, "name_ctrl", "Name:", NULL, new BMessage(NAME_MSG), B_FOLLOW_LEFT_RIGHT | B_FOLLOW_TOP);
	if (mNameCtrl) {
		f.top = mNameCtrl->Frame().bottom;
		mNameCtrl->SetDivider(divider);
		mNameCtrl->MakeFocus(true);
		mNameCtrl->SetModificationMessage(new BMessage(NAME_MSG) );
		mBg->AddChild(mNameCtrl);
	}
	/* The Time field.
	 */
	f.top += spaceY;
	const char*		timeStr = "Time:";
	f.right = divider;
	f.bottom = f.top + fh;
	mTimeLabel = new BStringView(f, "time_label", timeStr, B_FOLLOW_LEFT | B_FOLLOW_TOP);
	if (mTimeLabel) mBg->AddChild(mTimeLabel);
	mTimeCtrl = new AmTimeView(mSongRef);
	if (mTimeCtrl) {
		mTimeCtrl->MoveTo(f.right + 5, f.top);
		mTimeCtrl->SetEnabled(false);
		mBg->AddChild(mTimeCtrl);
		mTimeCtrl->StartWatching(this, ARPMSG_TIME_VIEW_CHANGED);
		f.top = mTimeCtrl->Frame().bottom;
	}
	/* The color controls.
	 */
	f.top += spaceY;
	f.bottom = f.top + fh;
	f.right = frame.Width() - spaceX;
	mColorField = new_color_field(f);
	if (mColorField) {
		mColorField->SetDivider(divider);
		mBg->AddChild(mColorField);
		f.top = f.bottom;
	}

	mColorCtrl = new BColorControl(	BPoint(spaceX, f.top + spaceY + spaceY),
									B_CELLS_32x8, 2, "color_control",
									new BMessage(COLOR_CHANGED_MSG) );

	if (mColorCtrl) {
		mBg->AddChild(mColorCtrl);
	}

}
예제 #15
0
/* Load the Lookup section into memory */
static void LoadLookupPrefs( void )
{
    CtlSetValue( GetObjectPtr( frmPrefsLookupAlwaysActive ),
        ( Prefs()->selectWordTap != SELECT_WORD_TAP_NONE ) );
    lookupAction = Prefs()->selectedWordAction;
    SetListToSelection( frmPrefsLookupActionList,
        frmPrefsLookupActionPopup, lookupAction );
}
예제 #16
0
void TestPrefsDataInit( void )
{
    /* Change a known item to make sure it is updated */
    Prefs()->controlMode = MODE3;

    /* Since we don't have any preference structure calling ReadPrefs
       should create a new structure, i.e. the controlMode item should
       be set to its default value (MODE1) */
    ReadPrefs();

    ASSERT( Prefs()->controlMode == MODE1 );
}
예제 #17
0
void SeqPhraseMatrixView::DrawOn(	BRect clip, BView* view, const AmTrack* track,
                                    AmPhraseRendererI* renderer)
{
    mDrawMuted = false;
    if ( track->ModeFlags()&track->MUTE_MODE && !(track->ModeFlags()&track->SOLO_MODE) )
        mDrawMuted = true;

    rgb_color	bgC = Prefs().Color(AM_DATA_BACKDROP_C);
    if (mDrawMuted) bgC = shade_color(bgC, BACKDROP_MUTE_SHADE);
    view->SetHighColor(bgC);
    if (!gPhraseBg) view->FillRect(clip);

    float	pipeTop = clip.top + ((clip.bottom - clip.top) / 2) - 3;
    seq_draw_hrz_pipe(view, clip.left, pipeTop, clip.right);

    drawing_mode	mode = view->DrawingMode();
    view->SetDrawingMode(B_OP_ALPHA);
    view->SetBlendingMode(B_PIXEL_ALPHA, B_ALPHA_COMPOSITE);
    mLines.SetTarget(view);

    mSelectionRange.MakeInvalid();
    SeqSongWinPropertiesI*	win = dynamic_cast<SeqSongWinPropertiesI*>( Window() );
    bool		drawSelection = false;
    if (win) {
        SeqSongSelections*	selections = win->Selections();
        if (selections && selections->IncludesTrack( track->Id() ) ) {
            mSelectionRange = selections->TimeRange();
            drawSelection = true;
        }
    }

    if (drawSelection) {
        BRect				selectClip(clip);
        if (mSelectionRange.IsValid() ) {
            selectClip.left = mMtc.TickToPixel(mSelectionRange.start);
            selectClip.right = mMtc.TickToPixel(mSelectionRange.end);
        }
        rgb_color	bgC;
        if (win && win->IsRecording() ) bgC = Prefs().Color(AM_SONG_RECORD_SELECTION_C);
        else bgC = Prefs().Color(AM_SONG_SELECTION_C);
        view->SetHighColor(bgC);
        view->FillRect(selectClip);
    }
    view->SetDrawingMode(mode);
#if 0
    _AmBgMeasureBackground		bg( SongRef(), mTrackRef, *mMtc );
    bg.SetLeftIndent( mLeftIndent );
    bg.LockedDraw( view, clip, track->Signatures() );
#endif

    DrawTrack(clip, view, track, renderer);
}
예제 #18
0
void OnNewProject(ConstructorApp& app, bool on_startup)
{
    bool is_pal = Prefs().isPAL;
    Gtk::Dialog new_prj_dlg(_("New Project"), app.win, true, true);
    new_prj_dlg.set_name("NewProject");
    new_prj_dlg.set_resizable(false);

    Gtk::VBox& dlg_box = *new_prj_dlg.get_vbox();
    PackStart(dlg_box, NewManaged<Gtk::Image>(DataDirPath("cap400.png")));
    Gtk::VBox& vbox = Add(PackStart(dlg_box, NewPaddingAlg(10, 40, 20, 20)), NewManaged<Gtk::VBox>());
    
    PackStart(vbox, NewManaged<Gtk::Label>(_("Please select a Television standard for your project:"),
                                           0.0, 0.5, true));
    {
        Gtk::VBox& vbox2 = Add(PackStart(vbox, NewPaddingAlg(10, 10, 0, 0)), NewManaged<Gtk::VBox>());

        Gtk::RadioButtonGroup grp;
        PackStart(vbox2, TVSelectionButton(is_pal, true,  grp));
        PackStart(vbox2, TVSelectionButton(is_pal, false, grp));
    }

    Gtk::CheckButton r_btn(_("Remember my choice"));
    if( on_startup )
    {
        // :TRICKY: в отличие от GtkAssistant, action_area в диалоге - 
        // GtkButtonBox, который все свои виджеты делает одинаковыми,
        // не смотря на опции shrink, fill, padding (т.е. GtkButtonBox
        // заведомо хуже GtkBox в плане гибкости)
        //PackStart(*new_prj_dlg.get_action_area(), r_btn);
        PackStart(vbox, r_btn);
        new_prj_dlg.add_button(Gtk::Stock::OK, Gtk::RESPONSE_OK);
    }
    else
        AddCancelOKButtons(new_prj_dlg);

    dlg_box.show_all();
    if( Gtk::RESPONSE_OK == new_prj_dlg.run() )
    {
        NewProject();
        AData().SetPalTvSystem(is_pal);
        SetAppTitle();

        if( on_startup && r_btn.get_active() )
        {
            Prefs().isPAL = is_pal;
            // :TRICKY: если будут запросы обратно в false вернуть, то
            // добавим "очищающую" кнопку PackCompositeWdgButton() в диалог настроек
            Prefs().remMyTVChoice = true;
            SavePrefs();
        }
    }
}
예제 #19
0
/***************************************************************************
 * GL-PATH-CONTROL-LAYER
 ***************************************************************************/
GlPathControlLayer::GlPathControlLayer()
		: index(-1), mRootPropsExp(0), mRootPropsOvr(0),
		  mManageExp(0), mManageOvr(0)
{
	float				x = float(Prefs().GetInt32(GL_NODE_CONTROL_X)),
						y = float(Prefs().GetInt32(GL_NODE_CONTROL_Y));
	mRootPropsExp = new ArpBitmap(x, y);
	mRootPropsOvr = new ArpBitmap(x, y);
	mManageExp = new ArpBitmap(x, y);
	mManageOvr = new ArpBitmap(x, y);
	
	AddControl(ROOT_INFO_ID, mRootPropsExp, mRootPropsOvr);
	AddControl(MANAGE_CTRL_ID, mManageExp, mManageOvr);
}
예제 #20
0
/*************************************************************************
 * _AM-PROPERTIES-FIELD
 *************************************************************************/
_AmPropertiesField::_AmPropertiesField(	BPoint topLeft,
										BPopUpMenu* menu,
										AmTrackInfoView* menuTarget)
		: inherited( BRect(	topLeft.x,
							topLeft.y,
							topLeft.x + Prefs().Size( PROP_FIELD_X ),
							topLeft.y + Prefs().Size( PROP_FIELD_Y) ),
					 "propertiesfield"),
		  mMenu(menu), mMenuTarget(menuTarget)
{
	assert(menu);
	menu->SetFontSize( Prefs().Size(FONT_Y) );
	menu->SetFont( be_plain_font );
}
예제 #21
0
void ArpIntControl::DrawControlBackgroundOn(BRect bounds, BView* view)
{
	rgb_color	bg, fg;
	if (IsEnabled() == false) {
		bg = mViewColor;
		fg = tint_color(Prefs().GetColor(ARP_INT_FG_C), B_LIGHTEN_1_TINT);
		if (bgImage != 0) {
			DrawBitmapBackgroundOn(bounds, view, bgImage);
		} else {
			view->SetHighColor(bg);
			view->FillRect(bounds);
		}
		view->SetLowColor(bg);
	} else if (IsFocus()) {
		bg = Prefs().GetColor(ARP_INT_BGF_C);
		fg = Prefs().GetColor(ARP_INT_FGF_C);
		view->SetHighColor(bg);
		view->SetLowColor(bg);
		// Changed this so GratuitousShadeOn() can set the low colour...
		GratuitousShadeOn(view, bounds, bg, -3);
	} else {
		bg = Prefs().GetColor(ARP_INT_BG_C);
		fg = Prefs().GetColor(ARP_INT_FG_C);
		view->SetHighColor(bg);
		view->SetLowColor(bg);
		// Changed this so GratuitousShadeOn() can set the low colour...
		GratuitousShadeOn(view, bounds, bg, -3);
	}
	BRect		r = bounds;

	if (IsEnabled() == false) {
		view->SetHighColor( tint_color(bg, B_DARKEN_2_TINT) );
		view->StrokeRect(bounds);

		view->StrokeLine(BPoint(r.left+1, r.top+1), BPoint(r.right-1, r.top+1));
		view->StrokeLine(BPoint(r.left+1, r.top+2), BPoint(r.left+1, r.bottom-1));
	} else {
		view->SetHighColor( tint_color( tint_color(bg, B_DARKEN_3_TINT), B_DARKEN_2_TINT ) );
		view->StrokeRect(bounds);

		view->StrokeLine(BPoint(r.left+1, r.bottom-1), BPoint(r.left+1, r.bottom-1));
		view->StrokeLine(BPoint(r.right-1, r.top+1), BPoint(r.right-1, r.top+1));
		view->SetHighColor(tint_color(bg, B_DARKEN_3_TINT));
		view->StrokeLine(BPoint(r.left+2, r.bottom-1), BPoint(r.right-1, r.bottom-1));
		view->StrokeLine(BPoint(r.right-1, r.bottom-1), BPoint(r.right-1, r.top+2));
	}

	view->SetHighColor(fg);
//	view->SetLowColor(bg);
}
예제 #22
0
/* Handle the Gesture preferences */
Boolean PrefsGesturePreferenceEvent
    (
    ActionType action
    )
{
    Boolean handled;

    handled = false;

    switch ( action ) {
        case AVAILABLE:
            /* Always available */
            handled = true;
            break;

        case SHOWFIRST:
            handled = showFirst;
            showFirst = false;
            break;

        case LOAD:
            gestureSelected = GESTURES_UP;
            MemMove( gestureMode, Prefs()->gestMode, sizeof( gestureMode ) );
            InitializeActionList( frmPrefsGestureActionList );
            CtlSetValue( GetObjectPtr( frmPrefsGestureGestures ),
                Prefs()->gestures );
            SetListToSelection( frmPrefsGestureActionList,
                frmPrefsGestureSelectAction, gestureMode[ gestureSelected ] );
            handled = true;
            break;

        case DISPLAY:
            AffirmControlImage( gestureSelected, frmPrefsGestureUp,
                bmpGestureUp );
            handled = true;
            break;

        case SAVE:
            Prefs()->gestures = CtlGetValue( GetObjectPtr(
                frmPrefsGestureGestures ) );
            MemMove( Prefs()->gestMode, gestureMode, sizeof( gestureMode ) );
            handled = true;
            break;

        default:
            handled = false;
            break;
    }
    return handled;
}
예제 #23
0
void AmTrackInfoView::AttachedToWindow()
{
	inherited::AttachedToWindow();
	mViewColor = Prefs().Color(AM_INFO_BG_C);
	SetViewColor(B_TRANSPARENT_COLOR);
	AddPropertiesField();
}
예제 #24
0
BMenuItem* AmTrackInfoView::NewChangeViewItem() const
{
	AmViewFactory*	factory = AmGlobals().FactoryNamed(mFactorySignature);
	if (!factory) return NULL;
	BMenu*			menu = new BMenu(AM_INFO_CHANGE_VIEW_STR);
	if (!menu) return NULL;
	BMenuItem*		item;		
	BString			name;
	for (uint32 k = 0; factory->DataNameAt(k, mViewType, name) == B_OK; k++) {
		BMessage*	msg = new BMessage(CHANGE_INFO_MSG);
		if( msg && (item = new BMenuItem( name.String(), msg )) ) {
			msg->AddPointer(SZ_VIEW_ID, this);
			msg->AddString(SZ_FACTORY_SIGNATURE, mFactorySignature.String() );
			msg->AddString(SZ_FACTORY_VIEW_NAME, name.String() );
			item->SetTarget(this);
			menu->AddItem(item);
			if (name == mViewName) item->SetEnabled(false);
		}
		name = (const char*)NULL;
	}
	item = new BMenuItem(menu);
	if( !item ) {
		delete menu;
		return NULL;
	}
	menu->SetFontSize( Prefs().Size(FONT_Y) );
	menu->SetFont( be_plain_font );
	return item;
}
예제 #25
0
void SeqMeasureControl::DrawCenterOn(BRect bounds, BView* view)
{
	view->SetHighColor( Prefs().Color( AM_MEASURE_FG_C ) );
	view->SetLowColor( Prefs().Color( AM_MEASURE_BOTTOM_BG_C ) );

	AmSongMeasureBackground		bg(SongRef(), mMtc);
	if (mTrackWinProps) {
		AmTrackRef				trackRef = mTrackWinProps->OrderedTrackAt(0);
		if (trackRef.IsValid() ) bg.SetTrack(trackRef.TrackId() );
	}
	bg.SetScrollX(mScrollX);
	bg.SetLeftIndent(mLeftIndent);
	bg.SetFlag(bg.DRAW_SIGNATURES_FLAG, true);

	bg.DrawAllOn(view, bounds);
}
예제 #26
0
static void AnnotationFormInit( void )
{
    FormType*   annotationForm;

    annotationForm = FrmGetFormPtr( frmAnnotation );
    
    if ( ( entryP->flags & ANNOTATION_BOOKMARK ) &&
         entryP->id.indexInParagraph == NEW_ANNOTATION ) {
        SetFormTitle( annotationForm, strAddBookmarkTitle );
    }
    else {
        SetFormTitle( annotationForm, strAnnotationTitle );
    }

    scrollBar      = GetObjectPtr( frmAnnotationScrollBar );
    if ( Prefs()->scrollbar == SCROLLBAR_LEFT ) {
        SetObjectPosition( annotationForm, frmAnnotationField, false );
        SetObjectPosition( annotationForm, frmAnnotationScrollBar, true );
    }
    field = GetObjectPtr( frmAnnotationField );
    CtlSetUsable( GetObjectPtr( frmAnnotationDelete ),
        entryP->id.indexInParagraph != NEW_ANNOTATION );

    FrmDrawForm( annotationForm );
    InsertText( field, data );
    if ( entryP->id.indexInParagraph == NEW_ANNOTATION )
        FldSetSelection( field, 0, StrLen( data ) );
    else
        FldSetInsertionPoint( field, 0 );

    UpdateFieldScrollbar( field, scrollBar );

    FrmSetFocus( annotationForm, FrmGetObjectIndex( annotationForm,
                                     frmAnnotationField ) );
}
예제 #27
0
/* Initialize the details form */
static void DetailsFormInit( void )
{
    FormType*   detailsForm;
    FieldType*  urlField;
    UInt16      reference;

    detailsForm = FrmGetFormPtr( frmDetails );
    urlField    = GetObjectPtr( frmDetailsLink );
    reference   = GetHistoryCurrent();

    if ( AddURLToField( urlField, reference ) )
        FrmShowObject( detailsForm, FrmGetObjectIndex( detailsForm,
                                        frmDetailsCopy ) );
    else
        FrmHideObject( detailsForm, FrmGetObjectIndex( detailsForm,
                                        frmDetailsCopy ) );
    FrmDrawForm( detailsForm );

    AddDocNameTitle( Prefs()->docName );

    CtlSetValue( GetObjectPtr( frmDetailsStatusRead ),
        LinkVisited( reference ) );
    CtlSetValue( GetObjectPtr( frmDetailsStatusUnread ),
        ! LinkVisited( reference ) );
    CtlSetValue( GetObjectPtr( frmDetailsShowImages ),
        ShowImages( reference ) );
}
예제 #28
0
void SeqStudioWindow::AddViews(BRect frame)
{
	mBg = new BView(frame, "BG", B_FOLLOW_ALL, B_WILL_DRAW);
	if (!mBg) return;
	mBg->SetViewColor( Prefs().Color(AM_AUX_WINDOW_BG_C) );

	/* Layout the frames.
	 */
	float		spaceX = 5, spaceY = 5;
	float		divider = mBg->StringWidth("Device:") + 10;
	BRect		labelF(spaceX, frame.Height() - spaceY - Prefs().Size(TEXTCTRL_Y), frame.Width() - spaceX, frame.Height() - spaceY);
	BRect		devicesF(labelF);
	devicesF.bottom = devicesF.top - spaceY;
	devicesF.top = devicesF.bottom - Prefs().Size(MENUFIELD_Y);
	BRect		studioF(devicesF);
	studioF.bottom = devicesF.top - spaceY;
	studioF.top = spaceY;

	/* The consumer list view.
	 */
	_EndpointList*		consumerList = new _EndpointList(studioF);
	if (consumerList) {
		mBg->AddChild(consumerList);
	}
	/* The Device field.
	 */
	mDeviceCtrl = new_device_control(devicesF);
	if (mDeviceCtrl) {
		mDeviceCtrl->SetDivider(divider);
		mDeviceCtrl->SetEnabled(false);
		mBg->AddChild(mDeviceCtrl);
	}
	/* The Label field.
	 */
	mLabelCtrl = new BTextControl(labelF, "label_ctrl", "Label:", NULL, new BMessage(LABEL_MSG), B_FOLLOW_LEFT_RIGHT | B_FOLLOW_BOTTOM);
	if (mLabelCtrl) {
		mLabelCtrl->SetDivider(divider);
		mLabelCtrl->MakeFocus(true);
		mLabelCtrl->SetEnabled(false);
		mBg->AddChild(mLabelCtrl);
	}

	if (consumerList) consumerList->SetTargets(mLabelCtrl, mDeviceCtrl);

	AddChild(mBg);
}
예제 #29
0
/* Populate document list with records */
static void UpdateDocList( void )
    /* THROWS */
{
    /* no automatic update if user has selected to handle it manually
       or if we have a low power situation */
    if ( Prefs()->syncPolicy == SYNC_MANUAL || ! HasEnoughPower() )
        return;

    SpeedFaster();

    /* create list for documents that have been deleted since the last
       session */
    CreateRemoveList();

    ErrTry {
        /* find all Plucker documents in RAM */

        EnumerateRAM();

        /* ... and on mounted external cards */
        if ( Prefs()->syncPolicy != SYNC_IGNORE_CARD ) {
#ifdef SUPPORT_VFS_FONTS
            if ( ! ScannedVFSFonts() ) {
                EnumerateCards( ENUMERATECARD_DOCS | ENUMERATECARD_FONTS );
                PostprocessVFSFonts();
            }
            else
#endif
            {
                EnumerateCards( ENUMERATECARD_DOCS );
            }
        }

        /* clean up */
        DeactivateDocuments();

        DmInsertionSort( plkrDocList, CompareDocumentNames, 0 );
    }
    ErrCatch( err ) {
        ReleaseDeactivateList();
        ErrThrow( err );
    } ErrEndCatch

    SpeedRestore();
}
예제 #30
0
BView* SeqPrefWin::NewFactoriesView(BRect bounds, const BMessage& prefs)
{
	BView*		v = new BView(bounds, VIEWS_STR, B_FOLLOW_ALL, 0);
	if (!v) return v;
	v->SetViewColor( Prefs().Color(AM_AUX_WINDOW_BG_C) );
	float		sx = Prefs().Size(SPACE_X), sy = Prefs().Size(SPACE_Y);
	float		iH = Prefs().Size(INT_CTRL_Y);
	float		listB = (bounds.Height() * 0.5) - (sy * 2) - (iH * 3);
	/* The factory list.
	 */
	BRect		f(sx, sy, bounds.Width() - sx, sy + listB);
	mFactoryList = new SeqFactoryListView(f, VIEWS_STR);
	if (!mFactoryList) return v;
	mFactoryList->SetSelectionMessage(new BMessage(VIEW_ROW_SELECTED_MSG));
	v->AddChild(mFactoryList);

	return v;
}