コード例 #1
0
ファイル: kguidb.cpp プロジェクト: t0mac0/kgui
kGUIDbTableDefRowObj::kGUIDbTableDefRowObj(kGUIDbTableDefWindowObj *parent,const char *name,int type,int length,int maxlength,bool prikey,bool indexed)
{
    unsigned int i;

    m_parent=parent;
    m_name.SetString(name);
    m_name.SetEventHandler(this,CALLBACKNAME(ChangeNameorType));
    m_oldname.SetString(name);

    m_type.SetNumEntries(sizeof(sqltypes)/sizeof(SQLTYPES_DEF));
    for(i=0; i<sizeof(sqltypes)/sizeof(SQLTYPES_DEF); ++i)
        m_type.SetEntry(i,sqltypes[i].name,sqltypes[i].num);

    m_type.SetSelection(type);
    m_oldtype=m_type.GetSelection();
    m_type.SetEventHandler(this,CALLBACKNAME(ChangeNameorType));

    m_length.SetInt(length);
    m_maxlength.SetInt(maxlength);

    m_prikey.SetSelected(prikey);
    m_prikey.SetEventHandler(this,CALLBACKNAME(ChangePriKey));

    m_indexed.SetSelected(indexed);
    m_indexed.SetEventHandler(this,CALLBACKNAME(ChangeIndexed));

    m_objptrs[0]=&m_name;
    m_objptrs[1]=&m_type;
    m_objptrs[2]=&m_length;
    m_objptrs[3]=&m_maxlength;
    m_objptrs[4]=&m_prikey;
    m_objptrs[5]=&m_indexed;
    SetRowHeight(20);
}
コード例 #2
0
ファイル: kguimcontrol.cpp プロジェクト: CarlHuff/kgui
kGUIMovieControlObj::kGUIMovieControlObj()
{
	SetNumGroups(1);

	/* load button shapes */
	m_ipause.SetFilename("_pause.gif");
	m_iplay.SetFilename("_play.gif");

	m_playpause.SetSize(m_iplay.GetImageWidth(),m_iplay.GetImageHeight());
	m_playpause.SetImage(&m_iplay);
	m_playpause.SetEventHandler(this,CALLBACKNAME(PressPlayPause));
	m_playpause.SetFrame(false);	/* no frame since image takes up whole button */
	m_playpause.SetShowCurrent(false);	/* don't draw current box on it when it is the current button */

	m_slider.SetHorz();
	m_slider.SetFixedThumb(24);
	m_slider.SetShowEnds(false);
	m_slider.SetSize(10,kGUI::GetSkin()->GetScrollbarHeight());
	m_slider.SetEventHandler(this,CALLBACKNAME(Move));

	m_loop.SetHint("Loop Movie");
	m_loop.SetEventHandler(this,CALLBACKNAME(LoopChanged));

	SetSize(320,kGUI::GetSkin()->GetScrollbarHeight()+m_playpause.GetZoneH());
	AddObject(&m_playpause);
	AddObject(&m_slider);
	AddObject(&m_loop);
	m_movie=0;
	m_lasttime=0;
	m_lastduration=0;
	m_lastplaying=false;
	m_eventactive=false;
}
コード例 #3
0
ファイル: kguidb.cpp プロジェクト: t0mac0/kgui
kGUIDbTablesListWindowObj::kGUIDbTablesListWindowObj(kGUIDb *dbobj)
{
    MYSQL *conn;
    MYSQL_RES *res_set;
    MYSQL_ROW row;

    m_dbobj=dbobj;
    SetEventHandler(this,CALLBACKNAME(WindowEvent));

    SetTitle("Database tables");
    SetPos(50,50);
    SetSize(600,500);

    m_def.SetPos(25,10);
    m_def.SetSize(150,20);
    m_def.SetString("Design View");
    m_def.SetEventHandler(this,CALLBACKNAME(Design));
    AddObject(&m_def);

    m_data.SetPos(200,10);
    m_data.SetSize(150,20);
    m_data.SetString("Data View");
    m_data.SetEventHandler(this,CALLBACKNAME(Data));
    AddObject(&m_data);

    m_newtable.SetPos(400,10);
    m_newtable.SetSize(150,20);
    m_newtable.SetString("New Table");
    m_newtable.SetEventHandler(this,CALLBACKNAME(NewTable));
    AddObject(&m_newtable);

    m_table.SetPos(0,50);
    m_table.SetSize(400,400);
    m_table.SetNumCols(1);
    m_table.SetColTitle(0,"Name");
    m_table.SetColWidth(0,200);
    m_table.SetEventHandler(this,&CALLBACKNAME(WindowEvent));
    m_table.SetAllowAddNewRow(true);

    AddObject(&m_table);

    conn=dbobj->GetConn();
    res_set=mysql_list_tables(conn, 0);
    /* populate table */
    while ((row = mysql_fetch_row(res_set)) != NULL)
    {
        kGUIDbTablesListRowObj *robj=new kGUIDbTablesListRowObj(dbobj);
        robj->SetName(row[0]);
        m_table.AddRow(robj);
    }

    mysql_free_result(res_set);
    /* automatically calculate */
    //m_table.CalculateColWidths();

    kGUI::AddWindow(this);
}
コード例 #4
0
ファイル: routes.cpp プロジェクト: neolu/gpsturbo
AutoOrderWindow::AutoOrderWindow(kGUITableObj *t)
{
	unsigned int f;
	unsigned int nc;
	GPXCoord *cp;
	GPXRow *row;

	m_t=t;
	nc=t->GetNumChildren();
	m_tsp.Init(nc);
	m_rows.Alloc(nc);

	/* get the current distance for the track */
	m_startdist=gpx->m_routes.UpdateInfo();
	for(f=0;f<nc;++f)
	{
		row=static_cast<GPXRow *>(t->GetChild(f));
		m_rows.SetEntry(f,row->GetCopiedFrom());
		cp=row->GetCoord();
		m_tsp.SetCoord(f,cp->GetLat(),cp->GetLon());
	}

	m_tsp.AsyncCalc();

	m_tries.SetPos(2,20);
	m_tries.SetSize(100,20);
	m_window.AddObject(&m_tries);

	m_best.SetPos(100+2+20,20);
	m_best.SetSize(100,20);
	m_window.AddObject(&m_best);

	m_done.SetPos(200+2+20+20,20);
	m_done.SetString("Good Enough");
	m_done.SetSize(75,20);
	m_window.AddObject(&m_done);

	m_busyrect.SetPos(2,2);
	m_busyrect.SetSize(m_done.GetZoneRX(),16);
	m_busyrect.SetIsBar(false);
	m_window.AddObject(&m_busyrect);

	m_count=0;
	m_curbest=0;

	m_window.GetTitle()->SetString("Calculating...");
	m_window.SetSize(10,10);
	m_window.ExpandToFit();
	m_window.Center();
	m_window.SetTop(true);
	kGUI::AddWindow(&m_window);

	kGUI::AddUpdateTask(this,CALLBACKNAME(Update));
	m_window.SetEventHandler(this,CALLBACKNAME(WindowEvent));
	m_done.SetEventHandler(this,CALLBACKNAME(DoneEvent));
}
コード例 #5
0
ファイル: drawsettings.cpp プロジェクト: neolu/gpsturbo
GPXMapPathRow::GPXMapPathRow()
{
	m_objectlist[0]=&m_path;
	m_objectlist[1]=&m_browse;
	m_browse.SetFontID(1);		/* bold */
	m_browse.SetFontSize(20);	/* big! */
	m_browse.SetString("...");
	m_browse.SetEventHandler(this,CALLBACKNAME(Browse));
	m_path.SetEventHandler(this,CALLBACKNAME(PathChangedEvent));
	SetRowHeight(20);
}
コード例 #6
0
ファイル: kguimenu2.cpp プロジェクト: CarlHuff/kgui
void kGUIMenuObj::OpenMenu(kGUIMenuColObj *menu,int x,int y)
{
	kGUIMenuEntryObj *me;

	/* this callback can be trapped to enable / disable menu entries */
	if(!m_depth)
		CallEvent(EVENT_ENTER);

	m_activeentry.SetEntry(m_depth++,menu);
	menu->SetEventHandler(0,0);
	menu->SetEventHandler(this,CALLBACKNAME(MenuEvent));
	menu->SetDrawPopRow(false);
	menu->Activate(x,y);
	Dirty();

	/* check to see if the first entry has a sub-menu */
	me=menu->GetCurrentEntry();
	if(me->GetSubMenu())
	{
		kGUICorners c;

		/* activate sub-menu */
		me->GetCorners(&c);
		OpenMenu(me->GetSubMenu(),c.rx-6,c.ty+2);
	}
}
コード例 #7
0
ファイル: kguimenu2.cpp プロジェクト: CarlHuff/kgui
bool kGUIMenuObj::UpdateInput(void)
{
	int i;
	kGUICorners c;
	kGUICorners tc;
	bool over;

	GetCorners(&c);

	/* is the mouse over the title area? */
	over=kGUI::MouseOver(&c);
	if(over)
	{
		/* if i'm not active then activate me */
		/* I need to be active so I can track the mouse when it moves */
		/* off of the header area so I can unhilight the last header under the cursor */
		if(m_track==false)
		{
			m_track=true;
			kGUI::AddUpdateTask(this,CALLBACKNAME(Track));
		}
		/* yes they have mouse over the tabs on the top */
		/* which tab is the mouse over? (if any) */
		for(i=0;i<m_numentries;++i)
		{
			tc.lx=c.lx+m_titlex.GetEntry(i);
			tc.rx=tc.lx+m_titlew.GetEntry(i);
			tc.ty=c.ty;
			tc.by=c.by;

			if(kGUI::MouseOver(&tc))
			{
				/* yes mouse is over this column */
				if(i!=m_colhover)
				{
					Dirty();
					m_colhover=i;
					if(m_depth)
					{
						CloseMenu();
						OpenMenu(m_entry.GetEntry(i),tc.lx,tc.by);
					}
				}

				/* are they clicking on the menu header? */
				if(kGUI::GetMouseClickLeft()==true)
				{
					kGUI::SetForceUsed(true);
					if(!m_depth)
						OpenMenu(m_entry.GetEntry(i),tc.lx,tc.by);
					else
						CloseMenu();
				}
				return(true);
			}
		}
	}
	return(false);
}
コード例 #8
0
ファイル: kguimenu2.cpp プロジェクト: CarlHuff/kgui
kGUIMenuObj::~kGUIMenuObj()
{
	if(m_track==true)
	{
		kGUI::DelUpdateTask(this,CALLBACKNAME(Track));
		m_track=false;
	}
}
コード例 #9
0
ファイル: kguidb.cpp プロジェクト: t0mac0/kgui
kGUIDbTablesListRowObj::kGUIDbTablesListRowObj(kGUIDb *dbobj)
{
    SetRowHeight(20);
    m_objptrs[0]=&m_text;
    m_dbobj=dbobj;

    m_text.SetEventHandler(this,& CALLBACKNAME(NameEvent));
}
コード例 #10
0
ファイル: babelglue.cpp プロジェクト: neolu/gpsturbo
/* used for realtime 'tracking' mode */
void BabelGlue::StartTracking(void)
{
	if(m_thread.GetActive()==true)
		return;

	m_types=BABELTYPE_REALTIME;
	m_thread.Start(this,CALLBACKNAME(CallThread));
}
コード例 #11
0
ファイル: drawsettings.cpp プロジェクト: neolu/gpsturbo
void GPX::MapConvert(kGUIEvent *event)
{
	if(event->GetEvent()==EVENT_PRESSED)
	{
		kGUIFileReq *req;
		
		req=new kGUIFileReq(FILEREQ_OPEN,m_defpath.GetString(),".osm",this,CALLBACKNAME(DoMapConvert));
	}
}
コード例 #12
0
ファイル: routes.cpp プロジェクト: neolu/gpsturbo
void RoutesPage::ClickUndo(kGUIEvent *event)
{
	if(event->GetEvent()==EVENT_PRESSED)
	{
		kGUIMsgBoxReq *box;

		box=new kGUIMsgBoxReq(MSGBOX_YES|MSGBOX_NO,this,CALLBACKNAME(ClickUndo2),false,"Undo Changes?");
	}
}
コード例 #13
0
ファイル: routes.cpp プロジェクト: neolu/gpsturbo
void RoutesPage::ClickDelete(kGUIEvent *event)
{
	if(event->GetEvent()==EVENT_PRESSED)
	{
		kGUIMsgBoxReq *box;

		box=new kGUIMsgBoxReq(MSGBOX_YES|MSGBOX_NO,this,CALLBACKNAME(ClickDelete2),true,"Delete Route '%s'?",m_editroutelist.GetSelectionString());
	}
}
コード例 #14
0
ファイル: routes.cpp プロジェクト: neolu/gpsturbo
void RoutesPage::ClickCopy(kGUIEvent *event)
{
	if(event->GetEvent()==EVENT_PRESSED)
	{
		kGUIInputBoxReq *box;

		box=new kGUIInputBoxReq(this,CALLBACKNAME(ClickCopy2),"Copied Route Name?");
	}
}
コード例 #15
0
ファイル: kguidb.cpp プロジェクト: t0mac0/kgui
void kGUIDbTablesListWindowObj::NewTable(kGUIEvent *event)
{
    if(event->GetEvent()==EVENT_PRESSED)
    {
        kGUIInputBoxReq *gn;

        gn=new kGUIInputBoxReq(this,CALLBACKNAME(NewTable2),"New Table Name?");
    }
}
コード例 #16
0
ファイル: drawsettings.cpp プロジェクト: neolu/gpsturbo
void GPXMapOverlayRow::Browse(kGUIEvent *event)
{
	if(event->GetEvent()==EVENT_PRESSED)
	{
		kGUIFileReq *req;
	
		req=new kGUIFileReq(FILEREQ_OPEN,m_filename.GetString(),".kml;.kmz",this,CALLBACKNAME(BrowseDone));
		req->GetTitle()->SetString("Select Map .kml or .kmz");
	}
}
コード例 #17
0
ファイル: drawsettings.cpp プロジェクト: neolu/gpsturbo
void GPXMapPathRow::Browse(kGUIEvent *event)
{
	if(event->GetEvent()==EVENT_PRESSED)
	{
		kGUIFileReq *req;
	
		req=new kGUIFileReq(FILEREQ_OPEN,m_path.GetString(),".img;.map;.osb",this,CALLBACKNAME(BrowseDone));
		req->GetTitle()->SetString("Select Map .img,.map,.osb");
	}
}
コード例 #18
0
ファイル: drawsettings.cpp プロジェクト: neolu/gpsturbo
GPXMapOverlayRow::GPXMapOverlayRow()
{
	m_objectlist[0]=&m_enabled;
	m_objectlist[1]=&m_alpha;
	m_objectlist[2]=&m_filename;
	m_objectlist[3]=&m_browse;
	m_browse.SetFontID(1);		/* bold */
	m_browse.SetFontSize(20);	/* big! */
	m_browse.SetString("...");
	m_browse.SetEventHandler(this,CALLBACKNAME(Browse));
	m_enabled.SetEventHandler(this,CALLBACKNAME(Changed));
	m_alpha.SetEventHandler(this,CALLBACKNAME(Changed));
	m_filename.SetEventHandler(this,CALLBACKNAME(NameChanged));

	gpx->InitAlphaCombo(&m_alpha);

	SetRowHeight(20);
	m_overlay=0;
}
コード例 #19
0
ファイル: drawsettings.cpp プロジェクト: neolu/gpsturbo
void GPXMapPathRow::PathChanged(void)
{
	kGUIMsgBoxReq *box;

	if(m_path.GetLen())
	{
		/* ask to add maps right away! */
		box=new kGUIMsgBoxReq(MSGBOX_YES|MSGBOX_NO,this,CALLBACKNAME(DoAddMaps),true,"Scan Directory '%s' for Maps?",m_path.GetString());
	}
}
コード例 #20
0
ファイル: kguiaudio.cpp プロジェクト: CarlHuff/kgui
kGUIAudioManager::kGUIAudioManager()
{
	m_counter=0;
	m_audiopool.SetBlockSize(16);
	m_audiobufferpool.SetBlockSize(32);

	m_close=false;
	m_numactive=0;
	m_activelist.Init(16,16);
#if USETHREAD
	m_thread.Start(this,CALLBACKNAME(UpdateThread));
#endif
}
コード例 #21
0
ファイル: kguidb.cpp プロジェクト: t0mac0/kgui
kGUIDbTableDataWindowObj::kGUIDbTableDataWindowObj(kGUIDb *dbobj,const char *tablename)
{
    kGUIDbQuery *q;
    const char **row;
    unsigned int i;
    unsigned int numfields;
    int *coltypes;

    SetEventHandler(this,CALLBACKNAME(WindowEvent));

    SetTitle(tablename);
    SetPos(50,50);
    SetSize(800,500);
    m_table.SetPos(0,0);
    m_table.SetSize(700,400);

    kGUI::SetMouseCursor(MOUSECURSOR_BUSY);
    q=new kGUIDbQuery(dbobj,"SELECT * FROM %s",tablename);
    numfields=q->GetNumFields();
    m_table.SetNumCols(numfields);
    for(i=0; i<numfields; ++i)
    {
        m_table.SetColTitle(i,q->GetFieldName(i));
        m_table.SetColWidth(i,200);
    }

    /* build a table of field types for display */
    coltypes=new int[numfields];
    for(i=0; i<numfields; ++i)
    {
        if(q->GetFieldType(i)==MYSQL_TYPE_TINY && q->GetFieldLength(i)==1)
            coltypes[i]=1;
        else
            coltypes[i]=0;
    }
    /* populate table */
    while ((row = q->GetRow()) != NULL)
    {
        kGUIDbTableDataRowObj *robj=new kGUIDbTableDataRowObj(numfields,coltypes,row);
        m_table.AddRow(robj);
    }
    /* automatically calculate */
    m_table.CalculateColWidths();

    delete q;
    delete []coltypes;

    AddObject(&m_table);
    kGUI::AddWindow(this);
    kGUI::SetMouseCursor(MOUSECURSOR_DEFAULT);
}
コード例 #22
0
ファイル: routes.cpp プロジェクト: neolu/gpsturbo
void RoutesPage::ClickSave(kGUIEvent *event)
{
	if(event->GetEvent()==EVENT_PRESSED)
	{
		int fnum;
		kGUIInputBoxReq *box;

		fnum=m_editroutelist.GetSelection();
		if(!fnum)
			box=new kGUIInputBoxReq(this,CALLBACKNAME(ClickSave2),"Route Name?");
		else
			Save(m_editroutelist.GetSelectionStringObj());
	}
}
コード例 #23
0
ファイル: routes.cpp プロジェクト: neolu/gpsturbo
AutoOrderWindow::~AutoOrderWindow()
{
	unsigned int s;
	unsigned int nc=m_t->GetNumChildren();
	unsigned int f;
	GPXRow *newrow;
	GPXRow *row;

	/* wait for tsp to finish */
	m_tsp.Stop();
	while(m_tsp.GetActive());

	kGUI::DelUpdateTask(this,CALLBACKNAME(Update));
	m_t->DeleteChildren();

	/* find position of starting point */
	s=0;
	while(m_tsp.GetIndex(s))
		++s;

	for(f=0;f<nc;++f)
	{
		row=m_rows.GetEntry(m_tsp.GetIndex(s));
		if(++s==nc)
			s=0;
		newrow=new GPXRow();
		newrow->Copy(row);
		m_t->AddRow(newrow);
	}

	/* is this better or worse than before? */
	if(gpx->m_routes.UpdateInfo()>m_startdist)
	{
		/* this is worse!, revert back to original order */
		m_t->DeleteChildren();
		for(f=0;f<nc;++f)
		{
			row=m_rows.GetEntry(f);
			newrow=new GPXRow();
			newrow->Copy(row);
			m_t->AddRow(newrow);
		}
	}

	gpx->m_routes.Changed();
	gpx->MapDirty();

	kGUI::DelWindow(&m_window);
}
コード例 #24
0
ファイル: kguimcontrol.cpp プロジェクト: CarlHuff/kgui
void kGUIMovieControlObj::SetMovie(kGUIMovie *movie)
{
	bool wantevent;

	if(m_movie==movie)
		return;
	m_movie=movie;
	if(m_movie)
	{
		m_loop.SetSelected(m_movie->GetLoop());
		UpdateButton();
		wantevent=true;
	}
	else
		wantevent=false;

	if(wantevent==m_eventactive)
		return;
	m_eventactive=wantevent;
	if(!wantevent)
		kGUI::DelUpdateTask(this,CALLBACKNAME(Event));
	else
		kGUI::AddUpdateTask(this,CALLBACKNAME(Event));
}
コード例 #25
0
ファイル: kguimenu2.cpp プロジェクト: CarlHuff/kgui
void kGUIMenuObj::Track(void)
{
	bool over;
	kGUICorners c;

	GetCorners(&c);

	/* is the mouse over the title area? */
	over=kGUI::MouseOver(&c);
	if(over==false && !m_depth)
	{
		kGUI::DelUpdateTask(this,CALLBACKNAME(Track));
		m_track=false;

		m_colhover=-1;
		Dirty();
	}
}
コード例 #26
0
ファイル: kguitab.cpp プロジェクト: CarlHuff/kgui
void kGUITabObj::Track(void)
{
	kGUICorners c;
	int l,r,h,exp;
	bool over;

	/* calc size of tab area */
	kGUI::GetSkin()->GetTabSize(&exp,&l,&r,&h);
	GetCorners(&c);
	c.by=c.ty+exp+(h*m_numtabrows);

	over=kGUI::MouseOver(&c);
	if(!over)
	{
		kGUI::DelUpdateTask(this,CALLBACKNAME(Track));
		m_track=false;
		DirtyTab(m_overtab);
		m_overtab=-1;
	}
}
コード例 #27
0
ファイル: kguidb.cpp プロジェクト: t0mac0/kgui
kGUIDbTableDefWindowObj::kGUIDbTableDefWindowObj(kGUIDb *dbobj,const char *tablename)
{
    kGUIDbQuery *q;
    unsigned int i;
    unsigned int numfields;
    int *maxlengths;
    const char **row;
    const int tdcwidths[]= {200,200,200,200,100,100};
    const char *tdcnames[]= {"Field Name","Field Type","Field Length","Current Max Length","PriKey","Indexed"};

    SetEventHandler(this,CALLBACKNAME(WindowEvent));

    m_db=dbobj;
    m_name.SetString(tablename);

    SetTitle(tablename);
    SetPos(50,50);
    SetSize(800,500);
    m_table.SetPos(0,0);
    m_table.SetSize(700,400);

    kGUI::SetMouseCursor(MOUSECURSOR_BUSY);
    /* scan whole table because we show the max used length for each field */
    q=new kGUIDbQuery(dbobj,"SELECT * FROM %s",tablename);

    m_table.SetNumCols(6);
    for(i=0; i<6; ++i)
    {
        m_table.SetColTitle(i,tdcnames[i]);
        m_table.SetColWidth(i,tdcwidths[i]);
    }

    numfields=q->GetNumFields();
    maxlengths=new int[numfields];
    for(i=0; i<numfields; ++i)
        maxlengths[i]=0;

    /* calculate current maximum used field lengths */
    while ((row = q->GetRow()) != NULL)
    {
        for(i=0; i<numfields; ++i)
        {
            if(row[i])	/* null for undefined text type */
            {
                int l=(int)strlen(row[i]);
                if(l>maxlengths[i])
                    maxlengths[i]=l;
            }
        }
    }

    for(i=0; i<numfields; ++i)
    {
        unsigned int flags=q->GetFieldFlags(i);
        kGUIDbTableDefRowObj *robj=new kGUIDbTableDefRowObj(this,q->GetFieldName(i),q->GetFieldType(i),q->GetFieldLength(i),maxlengths[i],(flags&PRI_KEY_FLAG)==PRI_KEY_FLAG,(flags&MULTIPLE_KEY_FLAG)==MULTIPLE_KEY_FLAG);
        m_table.AddRow(robj);
    }
    /* automatically calculate */
    m_table.CalculateColWidths();

    delete q;
    delete maxlengths;

    m_table.SetAllowAddNewRow(true);
    m_table.SetEventHandler(this,CALLBACKNAME(WindowEvent));

    AddObject(&m_table);
    kGUI::AddWindow(this);
    kGUI::SetMouseCursor(MOUSECURSOR_DEFAULT);
}
コード例 #28
0
ファイル: babelglue.cpp プロジェクト: neolu/gpsturbo
bool BabelGlue::Call(bool build,kGUIBusy *busy)
{
	int i;
	bool rc;
	kGUIMsgBoxReq *box;
	kGUIString line;
	kGUIString *s;

//todo, if realtime tracking is on then turn it off!

	if(build)
		BuildParms();

	//trap errors!
#if defined(LINUX) || defined(MACINTOSH)
	kGUI::FileDelete("gpsbabel.err");
#if 0
	m_strings.GetEntryPtr(m_argc++)->SetString("2>gpsbabel.err");
#endif
#endif

	m_output.Clear();

	/* pass parms to GPSBabel */

	for(i=0;i<m_argc;++i)
	{
		if(i)
			line.Append(" ");

		/* if parm has space in it then enclose in quotes */
		s=m_strings.GetEntryPtr(i);
		if(strstr(s->GetString()," "))
		{
			line.Append("\"");
			line.Append(s);
			line.Append("\"");
		}
		else
			line.Append(s);
	}
	m_busy=busy;
	if(build)
		m_ct.SetUpdateCallback(this,CALLBACKNAME(OutputChanged));

	//DebugPrint(line.GetString());

	rc=m_ct.Start(line.GetString(),CALLTHREAD_READ);
	m_output.SetString(m_ct.GetString());
	m_output.Trim();
#if defined(LINUX) || defined(MACINTOSH)
	//errors are also redirected to gpsbabel.err so append these to output if found
	{
		unsigned long fs;
		const char *file;

		file=(const char *)kGUI::LoadFile("gpsbabel.err",&fs);
		if(file)
		{
			m_output.Append(file,fs);
			m_output.Trim();
			delete []file;
			kGUI::FileDelete("gpsbabel.err");
		}
	}
#endif

	if(build)
		m_ct.SetUpdateCallback(0,0);
	if(busy)
		delete busy;

	if(m_asyncactive==false)
	{
		if(m_output.GetLen() && build)
		{
			box=new kGUIMsgBoxReq(MSGBOX_OK,false,m_output.GetString());
			return(false);
		}
	}
	return(true);	/* ok */
}
コード例 #29
0
ファイル: routes.cpp プロジェクト: neolu/gpsturbo
/* init routes gui items */
void RoutesPage::Init(kGUIContainerObj *obj)
{
	unsigned int i;
	int y;
	kGUIText *t;
	int bw=obj->GetChildZoneW();
	//int bh=obj->GetChildZoneH();

	/* route table */
	m_editcontrols.SetSize(bw,20);

	m_pntup.SetFontSize(BUTTONFONTSIZE);
	m_pntup.SetString(gpx->GetString(STRING_UP));
	m_pntup.Contain();
	m_pntup.SetEventHandler(this,CALLBACKNAME(ClickWpntUp));
	m_editcontrols.AddObject(&m_pntup);

	m_pntdown.SetFontSize(BUTTONFONTSIZE);
	m_pntdown.SetString(gpx->GetString(STRING_DOWN));
	m_pntdown.Contain();
	m_pntdown.SetEventHandler(this,CALLBACKNAME(ClickWpntDown));
	m_editcontrols.AddObject(&m_pntdown);

	m_autoorder.SetFontSize(BUTTONFONTSIZE);
	m_autoorder.SetString(gpx->GetString(STRING_AUTOORDER));
	m_autoorder.Contain();
	m_autoorder.SetEventHandler(this,CALLBACKNAME(ClickAutoOrder));
	m_editcontrols.AddObject(&m_autoorder);

	m_editroutelist.SetFontSize(BUTTONFONTSIZE);
	m_editroutelist.SetSize(300,20);
	m_editroutelist.SetNumEntries(1);				/* list of routes */
	m_editroutelist.SetEntry(0,gpx->GetString(STRING_NEWROUTE),0);
	m_editroutelist.SetEventHandler(this,CALLBACKNAME(LoadEvent));
	m_editcontrols.AddObject(&m_editroutelist);

	m_save.SetFontSize(BUTTONFONTSIZE);
	m_save.SetString(gpx->GetString(STRING_SAVEROUTE));
	m_save.Contain();
	m_save.SetEventHandler(this,CALLBACKNAME(ClickSave));
	m_editcontrols.AddObject(&m_save);

	m_undo.SetFontSize(BUTTONFONTSIZE);
	m_undo.SetString(gpx->GetString(STRING_UNDOCHANGES));
	m_undo.Contain();
	m_undo.SetEventHandler(this,CALLBACKNAME(ClickUndo));
	m_editcontrols.AddObject(&m_undo);

	m_delete.SetFontSize(BUTTONFONTSIZE);
	m_delete.SetString(gpx->GetString(STRING_DELETEROUTE));
	m_delete.Contain();
	m_delete.SetEventHandler(this,CALLBACKNAME(ClickDelete));
	m_editcontrols.AddObject(&m_delete);

	m_rename.SetFontSize(BUTTONFONTSIZE);
	m_rename.SetString(gpx->GetString(STRING_RENAMEROUTE));
	m_rename.Contain();
	m_rename.SetEventHandler(this,CALLBACKNAME(ClickRename));
	m_editcontrols.AddObject(&m_rename);

	m_copy.SetFontSize(BUTTONFONTSIZE);
	m_copy.SetString(gpx->GetString(STRING_COPYROUTE));
	m_copy.Contain();
	m_copy.SetString("Copy Route");
	m_copy.SetEventHandler(this,CALLBACKNAME(ClickCopy));
	m_editcontrols.AddObject(&m_copy);

	m_delete.SetEnabled(false);
	m_rename.SetEnabled(false);
	m_copy.SetEnabled(false);

	m_editcontrols.NextLine();

	m_drawcaption.SetPos(0,0);
	m_drawcaption.SetFontSize(SMALLCAPTIONFONTSIZE);
	m_drawcaption.SetFontID(SMALLCAPTIONFONT);
	m_drawcaption.SetString("Draw ");
	m_draw.SetPos(0,15);
	m_draw.SetEventHandler(this,CALLBACKNAME(ChangedEvent));
	m_editcontrols.AddObjects(2,&m_drawcaption,&m_draw);

	m_colorcaption.SetPos(0,0);
	m_colorcaption.SetFontSize(SMALLCAPTIONFONTSIZE);
	m_colorcaption.SetFontID(SMALLCAPTIONFONT);
	m_colorcaption.SetString(" color");

	m_color.SetPos(0,15);
	m_color.SetSize(275,20);
	GPX::InitColorCombo(&m_color);
	m_color.SetSelection("Red");
	m_color.SetEventHandler(this,CALLBACKNAME(ChangedEvent));
	m_editcontrols.AddObjects(2,&m_colorcaption,&m_color);

	m_editcontrols.NextLine();

	/* display info for , not editable */
	m_numcaption.SetPos(0,0);
	m_numcaption.SetFontSize(SMALLCAPTIONFONTSIZE);
	m_numcaption.SetFontID(SMALLCAPTIONFONT);
	m_numcaption.SetString("Total  Points");

	m_num.SetPos(0,15);
	m_num.SetSize(80,20);
	m_num.SetLocked(true);
	m_num.SetHint("Number of points on the route.");
	m_editcontrols.AddObjects(2,&m_numcaption,&m_num);

	m_distcaption.SetPos(0,0);
	m_distcaption.SetFontSize(SMALLCAPTIONFONTSIZE);
	m_distcaption.SetFontID(SMALLCAPTIONFONT);
	m_distcaption.SetString("Total Route Distance");

	m_dist.SetPos(0,15);
	m_dist.SetSize(150,20);
	m_dist.SetLocked(true);
	m_dist.SetHint("Distance covered an the route.");
	m_editcontrols.AddObjects(2,&m_distcaption,&m_dist);

	obj->AddObject(&m_editcontrols);
	y=m_editcontrols.GetZoneH();
	m_routewptable.SetPos(0,y);
	m_routewptable.SetSize(bw,obj->GetChildZoneH()-y);
	m_routewptable.SetNumCols(GPXCOL_NUMCOLUMNS);
	for(i=0;i<GPXCOL_NUMCOLUMNS;++i)
	{
		t=m_routewptable.GetColHeaderTextPtr(i);
		t->SetFontID(1);	/* bold */

		m_routewptable.SetColTitle(i,wpcolnames[i]);
		m_routewptable.SetColHint(i,wpcoldesc[i]);
		m_routewptable.SetColWidth(i,wpcolwidths[i]);
	}

//	m_routewptable.SetColHeaderCallBack(gpx,CALLBACKCLASSNAME(GPX,ColClick));
	m_routewptable.SetEventHandler(this,CALLBACKNAME(TableEvent));

	obj->AddObject(&m_routewptable);
}
コード例 #30
0
ファイル: drawsettings.cpp プロジェクト: neolu/gpsturbo
void GPX::InitSettings(void)
{
	unsigned int i;
	int bw=m_tabs.GetChildZoneW();
	int bh=m_tabs.GetChildZoneH();

	m_drawsettingcontrols.SetPos(0,0);
	m_drawsettingcontrols.SetSize(bw,0);
	m_drawsettingcontrols.SetMaxHeight(9999);

	m_labelup.SetFontSize(BUTTONFONTSIZE);
	m_labelup.SetString(gpx->GetString(STRING_UP));
	m_labelup.Contain();
	m_labelup.SetEventHandler(this,CALLBACKNAME(LabelUp));
	m_drawsettingcontrols.AddObject(&m_labelup);

	m_labeldown.SetFontSize(BUTTONFONTSIZE);
	m_labeldown.SetString(gpx->GetString(STRING_DOWN));
	m_labeldown.Contain();
	m_labeldown.SetEventHandler(this,CALLBACKNAME(LabelDown));
	m_drawsettingcontrols.AddObject(&m_labeldown);
	m_drawsettingcontrols.NextLine();

	/* labels table */
	m_labelcolourtable.SetSize(625,215);
	m_labelcolourtable.SetNumCols(WPRENDER_NUMCOLUMNS);
	for(i=0;i<WPRENDER_NUMCOLUMNS;++i)
	{
		m_labelcolourtable.SetColTitle(i,wprnames[i]);
		m_labelcolourtable.SetColWidth(i,wprwidths[i]);
	}
	m_labelcolourtable.SetAllowAddNewRow(true);
	m_labelcolourtable.SetEventHandler(this,CALLBACKNAME(WPTableEvent));
	m_drawsettingcontrols.AddObject(&m_labelcolourtable);
	m_drawsettingcontrols.NextLine();

	/* convert map button */
	m_mapconvert.SetFontSize(BUTTONFONTSIZE);
	m_mapconvert.SetString(gpx->GetString(STRING_CONVERTMAP));
	m_mapconvert.Contain();
	m_mapconvert.SetEventHandler(this,CALLBACKNAME(MapConvert));
	m_drawsettingcontrols.AddObject(&m_mapconvert);
	m_drawsettingcontrols.NextLine();

	/* map path table */
	m_mapdirstable.SetSize(625,100);
	m_mapdirstable.SetNumCols(2);
	m_mapdirstable.SetColTitle(0,"Map Path");
	m_mapdirstable.SetColWidth(0,520);
	m_mapdirstable.SetColTitle(1,"Browse");
	m_mapdirstable.SetColWidth(1,50);

	m_mapdirstable.SetAllowAddNewRow(true);
	m_mapdirstable.SetEventHandler(this,CALLBACKNAME(NewMapPathEntry));
	m_drawsettingcontrols.AddObject(&m_mapdirstable);
	m_drawsettingcontrols.NextLine();

	m_molabelup.SetFontSize(BUTTONFONTSIZE);
	m_molabelup.SetString(gpx->GetString(STRING_UP));
	m_molabelup.Contain();
	m_molabelup.SetEventHandler(this,CALLBACKNAME(MapOverlayLabelUp));
	m_drawsettingcontrols.AddObject(&m_molabelup);

	m_molabeldown.SetFontSize(BUTTONFONTSIZE);
	m_molabeldown.SetString(gpx->GetString(STRING_DOWN));
	m_molabeldown.Contain();
	m_molabeldown.SetEventHandler(this,CALLBACKNAME(MapOverlayLabelDown));
	m_drawsettingcontrols.AddObject(&m_molabeldown);
	m_drawsettingcontrols.NextLine();

	/* map overlay table */
	m_mapoverlaystable.SetSize(625,100);
	m_mapoverlaystable.SetNumCols(4);
	m_mapoverlaystable.SetColTitle(0,"Enable");
	m_mapoverlaystable.SetColWidth(0,40);
	m_mapoverlaystable.SetColTitle(1,"Opacity");
	m_mapoverlaystable.SetColWidth(1,60);
	m_mapoverlaystable.SetColTitle(2,"Map Overlay");
	m_mapoverlaystable.SetColWidth(2,420);
	m_mapoverlaystable.SetColTitle(3,"Browse");
	m_mapoverlaystable.SetColWidth(3,50);

	m_mapoverlaystable.SetAllowAddNewRow(true);
	m_mapoverlaystable.SetEventHandler(this,CALLBACKNAME(NewMapOverlayEntry));
	//leave out until I get it working
	m_drawsettingcontrols.AddObject(&m_mapoverlaystable);
	m_drawsettingcontrols.NextLine();

	m_language.SetNumEntries(m_locstrings.GetNumLanguages());
	for(i=0;i<m_locstrings.GetNumLanguages();++i)
		m_language.SetEntry(i,kGUI::GetString(KGUISTRING_ENGLISH+i),i);
	m_language.SetSize(200,25);
	m_language.SetSelection(kGUI::GetLanguage());

	m_languagelabel.SetString(kGUI::GetString(KGUISTRING_LANGUAGE));
//	m_language.SetSize(200,25);
//	m_languagelabel.Contain();
	m_drawsettingcontrols.AddObject(&m_language);
	m_drawsettingcontrols.AddObject(&m_languagelabel);
	m_drawsettingcontrols.NextLine();

	m_usebrowser.SetPos(10,0);
	m_usebrowserlabel.SetPos(30,0);
	m_usebrowserlabel.SetString("Use Built-In Browser");
	m_drawsettingcontrols.AddObjects(2,&m_usebrowser,&m_usebrowserlabel);
	m_drawsettingcontrols.NextLine();

	m_maxdownloads.SetString("8");
	m_maxdownloads.SetPos(10,0);
	m_maxdownloads.SetSize(40,20);
	m_maxdownloadslabel.SetPos(50,0);
	m_maxdownloadslabel.SetString("Maximum Concurrent Internet Downloads");
	m_drawsettingcontrols.AddObjects(2,&m_maxdownloads,&m_maxdownloadslabel);
	m_drawsettingcontrols.NextLine();

	m_tablefontsize.SetString("12");
	m_tablefontsize.SetPos(10,0);
	m_tablefontsize.SetSize(40,20);
	m_tablefontsize.SetEventHandler(this,CALLBACKNAME(TableFontSizeChangedEvent));
	m_tablefontsizelabel.SetPos(50,0);
	m_tablefontsizelabel.SetString("Font Size for Waypoint Tables");
	m_drawsettingcontrols.AddObjects(2,&m_tablefontsize,&m_tablefontsizelabel);
	m_drawsettingcontrols.NextLine();

	m_labelfontsize.SetString("12");
	m_labelfontsize.SetPos(10,0);
	m_labelfontsize.SetSize(40,20);
	m_labelfontsize.SetEventHandler(this,CALLBACKNAME(LabelFontSizeChangedEvent));
	m_labelfontsizelabel.SetPos(50,0);
	m_labelfontsizelabel.SetString("Font Size for Waypoint Labels on Map");
	m_drawsettingcontrols.AddObjects(2,&m_labelfontsize,&m_labelfontsizelabel);

	GPX::InitAlphaCombo(&m_labelalpha);
	m_labelalpha.SetSelection(70);
	m_labelalpha.SetEventHandler(this,CALLBACKNAME(MapDirtyEvent));
	m_drawsettingcontrols.AddObject(&m_labelalpha);
	m_drawsettingcontrols.NextLine();

	m_shownumticks.SetString("0");
	m_shownumticks.SetPos(10,0);
	m_shownumticks.SetSize(40,20);
	m_shownumticks.SetEventHandler(this,CALLBACKNAME(LabelFontSizeChangedEvent));
	m_shownumtickslabel.SetPos(50,0);
	m_shownumtickslabel.SetString("Number of User Ticks to show beside Label on Map");
	m_drawsettingcontrols.AddObjects(2,&m_shownumticks,&m_shownumtickslabel);
	m_drawsettingcontrols.NextLine();

	m_wptnamelabel.SetPos(10,0);
	m_wptnamelabel.SetString("Waypoint name to use on Map");
	m_wptname.SetPos(200,0);
	m_wptname.SetSize(400,20);
	m_wptname.SetEventHandler(this,CALLBACKNAME(LabelNamesChangedEvent));
	m_drawsettingcontrols.AddObjects(2,&m_wptname,&m_wptnamelabel);
	m_drawsettingcontrols.NextLine();

	m_showchildren.SetPos(10,0);
	m_showchildren.SetEventHandler(this,CALLBACKNAME(BSPDirtyEvent));
	m_showchildrenlabel.SetPos(30,0);
	m_showchildrenlabel.SetString("Show Labels for Additional Waypoints on Map");
	m_drawsettingcontrols.AddObjects(2,&m_showchildren,&m_showchildrenlabel);
	m_drawsettingcontrols.NextLine();

	m_movelabels.SetPos(10,0);
	m_movelabels.SetSelected(true);	/* default to selected */
	m_movelabels.SetEventHandler(this,CALLBACKNAME(BSPDirtyEvent));
	m_movelabelslabel.SetPos(30,0);
	m_movelabelslabel.SetString("Move Overlapping Labels");
	m_drawsettingcontrols.AddObjects(2,&m_movelabels,&m_movelabelslabel);
	m_drawsettingcontrols.NextLine();

	m_movelabelsmax.SetPos(10,0);
	m_movelabelsmax.SetSize(40,20);
	m_movelabelsmax.SetString("128");
	m_movelabelsmax.SetEventHandler(this,CALLBACKNAME(BSPDirtyEvent));
	m_movelabelsmaxlabel.SetPos(50,0);
	m_movelabelsmaxlabel.SetString("Move Overlapping Labels, Maximum number of pixels");
	m_drawsettingcontrols.AddObjects(2,&m_movelabelsmax,&m_movelabelsmaxlabel);
	m_drawsettingcontrols.NextLine();

	m_labelzoomsize.SetString("10");
	m_labelzoomsize.SetPos(10,0);
	m_labelzoomsize.SetSize(40,20);
	m_labelzoomsizelabel.SetPos(50,0);
	m_labelzoomsizelabel.SetString("Zoom level to start drawing labels at");
	m_drawsettingcontrols.AddObjects(2,&m_labelzoomsize,&m_labelzoomsizelabel);
	m_drawsettingcontrols.NextLine();

	/* distance units on map */
	m_disttype.SetPos(10,0);
	m_disttype.SetSize(100,20);
	InitDistCombo(&m_disttype);
	m_disttype.SetEventHandler(this,CALLBACKNAME(ReCalcDistsEvent));

	m_distcaption.SetPos(150,0);
	m_distcaption.SetString("Distance units");
	m_drawsettingcontrols.AddObjects(2,&m_distcaption,&m_disttype);
	m_drawsettingcontrols.NextLine();

	m_drawsettingsarea.SetPos(0,0);
	m_drawsettingsarea.SetMaxWidth(m_drawsettingcontrols.GetZoneW());
	m_drawsettingsarea.SetMaxHeight(m_drawsettingcontrols.GetZoneH());
	m_drawsettingsarea.SetSize(bw,bh);
	printf("bw=%d,bh=%d,maxw=%d,maxh=%d\n",bw,bh,m_drawsettingcontrols.GetZoneW(),m_drawsettingcontrols.GetZoneH());
	fflush(stdout);
	m_drawsettingsarea.AddObject(&m_drawsettingcontrols);
	m_tabs.AddObject(&m_drawsettingsarea);
}