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); }
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; }
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); }
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)); }
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); }
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); } }
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); }
kGUIMenuObj::~kGUIMenuObj() { if(m_track==true) { kGUI::DelUpdateTask(this,CALLBACKNAME(Track)); m_track=false; } }
kGUIDbTablesListRowObj::kGUIDbTablesListRowObj(kGUIDb *dbobj) { SetRowHeight(20); m_objptrs[0]=&m_text; m_dbobj=dbobj; m_text.SetEventHandler(this,& CALLBACKNAME(NameEvent)); }
/* 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)); }
void GPX::MapConvert(kGUIEvent *event) { if(event->GetEvent()==EVENT_PRESSED) { kGUIFileReq *req; req=new kGUIFileReq(FILEREQ_OPEN,m_defpath.GetString(),".osm",this,CALLBACKNAME(DoMapConvert)); } }
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?"); } }
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()); } }
void RoutesPage::ClickCopy(kGUIEvent *event) { if(event->GetEvent()==EVENT_PRESSED) { kGUIInputBoxReq *box; box=new kGUIInputBoxReq(this,CALLBACKNAME(ClickCopy2),"Copied Route Name?"); } }
void kGUIDbTablesListWindowObj::NewTable(kGUIEvent *event) { if(event->GetEvent()==EVENT_PRESSED) { kGUIInputBoxReq *gn; gn=new kGUIInputBoxReq(this,CALLBACKNAME(NewTable2),"New Table Name?"); } }
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"); } }
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"); } }
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; }
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()); } }
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 }
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); }
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()); } }
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); }
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)); }
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(); } }
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; } }
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); }
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 */ }
/* 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); }
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); }