int main(int argc, char* argv[]) { PG_Application app(argv[0]); app.LoadTheme("default"); if (!app.InitScreen(500, 300, 16, 0)) return -1; PG_Widget widget(0, PG_Rect(0, 0, 500, 300)); PG_DropDown d(&widget, PG_Rect(20, 40, 200, 30)); d.AddItem("test"); d.AddItem("test2"); // d.DeleteAll(); d.RemoveAll(); d.AddItem("test"); d.AddItem("test2"); d.AddItem("test3"); widget.Show(); app.Run(); return 0; }
int main(int argc, char* argv[]) { PG_Application app(argv[0]); app.LoadTheme("default"); app.InitScreen(640, 480, 16, SDL_SWSURFACE); PG_Button myButton(NULL,PG_Rect(260, 100, 120, 50),"Exit!"); myButton.sigClick.connect( SigC::slot(exit_handler), (PG_Pointer)&app); myButton.Show(); PG_WidgetList list(NULL,PG_Rect(10,10,150,150)); list.EnableScrollBar(true, PG_ScrollBar::VERTICAL); list.SetTransparency(0); list.Show(); PG_Button myButtonHide(NULL,PG_Rect(260, 0, 120, 50),"Hide!"); myButtonHide.sigClick.connect( SigC::slot(hide_handler), (PG_Pointer)&list); myButtonHide.Show(); PG_Button myButtonShow(NULL,PG_Rect(260, 50, 120, 50),"Show!"); myButtonShow.sigClick.connect( SigC::slot(show_handler), (PG_Pointer)&list); myButtonShow.Show(); PG_Button myButtonAdd(NULL,PG_Rect(260, 150, 120, 50),"Add!"); myButtonAdd.sigClick.connect( SigC::slot(add_handler), (PG_Pointer)&list); myButtonAdd.Show(); app.Run(); return 0; }
bool handleBigFatButton(PG_Button* b) { PG_Window wnd(NULL, PG_Rect(200,200,350,100), "Message"); PG_Label l(&wnd, PG_Rect(5,40,340,25), "You pressed the 'Big Fat Button'"); l.SetAlignment(PG_TA_CENTER); wnd.Show(true); wnd.RunModal(); return true; }
GUI_ResultsMenu::GUI_ResultsMenu(): GUI_BaseMenu(GUI_RESULTS, PG_Rect(RM_PX,RM_PY,RM_VX,RM_VY)) { int px, py; lResultsMenu = new PG_Label(this, PG_Rect(1,4,RM_VX-2,25), "RESULTS", "GUI_Label"); lLabel1 = new PG_Label(this, PG_Rect(1,30,RM_VX-2,20), "Press SPACE to continue", "GUI_Label"); px = 0; py = 59; lNameTitle = new PG_Label(this, PG_Rect(px, py, RM_VX/2 + 20, 20), "NAME", "GUI_ResultTitle"); lFragsTitle = new PG_Label(this, PG_Rect(px + 20 + RM_VX/2, py, 60, 20), "FRAGS", "GUI_ResultTitle"); lPointsTitle = new PG_Label(this, PG_Rect(px + 20+60 + RM_VX/2, py, RM_VX/2-60 - 20, 20), "POINTS", "GUI_ResultTitle"); lResultsMenu->SetFont(MainFont); px = 0; py = 59+19; for (int i=0; i<RM_MAX_NAMES; i++) { lName[i] = new PG_Label(this, PG_Rect(px, py + i*19, RM_VX/2 + 20, 20), "", "GUI_ResultLine"); lName[i]->SetAlignment(PG_TA_LEFT); lFrags[i] = new PG_Label(this, PG_Rect(px + 20 + RM_VX/2, py + i*19, 60, 20), "", "GUI_ResultLine"); lFrags[i]->SetAlignment(PG_TA_LEFT); lPoints[i] = new PG_Label(this, PG_Rect(px + 20 + 60 + RM_VX/2, py + i*19, RM_VX/2-60 - 20, 20), "", "GUI_ResultLine"); lPoints[i]->SetAlignment(PG_TA_LEFT); } Default(); LoadThemeStyle("GUI_Results"); }
GUI_SkinCtrl::GUI_SkinCtrl(PG_Widget* parent, const PG_Rect& r) : PG_Widget(parent, r, true) { bNext = new PG_Button(this, 2, PG_Rect(17, 33, 16, 16)); bPrev = new PG_Button(this, 1, PG_Rect(1, 33, 16, 16)); SkinPic = new GUI_SkinPic(this, PG_Rect(1, 1, 32, 32)); c = GUI_Gray64; drawbackground = true; bPrev->LoadThemeStyle("GUI_PrevSkinButton"); bNext->LoadThemeStyle("GUI_NextSkinButton"); }
GUI_OKDialog1::GUI_OKDialog1(char* title, char* line1, char* line2) : GUI_BaseMenu(GUI_OKDIALOG1, PG_Rect(OKD1_PX,OKD1_PY,OKD1_VX,OKD1_VY)){ OKDialog1 = new PG_Label(this, PG_Rect(1,4,OKD1_VX-2,25), title, "GUI_Label"); lPrompt1 = new PG_Label(this, PG_Rect(1,35, OKD1_VX-2,20), line1, "GUI_Label"); bOK = new GUI_ButtonSmall(this, 1, PG_Rect(105,65,150,25), "OK"); Default(); OKDialog1->SetFont(MainFont); lPrompt1->SetAlignment(PG_TA_CENTER); LoadThemeStyle("GUI_Board"); }
int main(int argc, char* argv[]) { char theme[20]; strcpy(theme, "simple"); // initial flags for screensurface Uint32 flags = SDL_SWSURFACE|SDL_HWPALETTE; int bpp = 16; // construct the application object PG_Application app; if(!app.LoadTheme(theme)) { printf("Unable to load theme \"%s\"", theme); return -1; } if(!app.InitScreen(640, 480, bpp, flags)){ printf("Resolution not supported\n"); exit(-1); } PG_ColorSelector colorsel1(NULL, PG_Rect(10,10,300,150)); colorsel1.Show(); PG_Gradient g; g.colors[0].r = 255; g.colors[0].g = 0; g.colors[0].b = 0; g.colors[1].r = 0; g.colors[1].g = 255; g.colors[1].b = 0; g.colors[2].r = 0; g.colors[2].g = 0; g.colors[2].b = 255; g.colors[3].r = 255; g.colors[3].g = 255; g.colors[3].b = 255; PG_ColorSelector colorsel2(NULL, PG_Rect(10,170,300,150)); colorsel2.SetColorGradient(g); colorsel2.Show(); app.SetEmergencyQuit(true); app.Run(); return EXIT_SUCCESS; }
int main( int argc, char **argv ) { // create custom factory. key is "unsigned long" typedef PG_FactoryHolder<unsigned long> MyFactory; PG_Application app(argv[0]); app.LoadTheme( "default" ); app.InitScreen( 640, 480, 0 ); app.SetEmergencyQuit(true); // register classes (default factory, key "std::string") PG_Factory::RegisterClass<PG_ThemeWidget>("themewidget"); PG_Factory::RegisterClass<PG_Button>("button"); PG_Factory::RegisterClass<PG_Window>("window"); PG_Factory::RegisterClass<PG_Label>("label"); // register classes (custom factory) MyFactory::RegisterClass<PG_Label>(1); // create PG_ThemeWidget object PG_Widget* w = PG_Factory::CreateObject("themewidget"); w->MoveWidget(PG_Rect(10,10,300,200)); w->Show(); // create PG_Button object PG_Widget* b = PG_Factory::CreateObject("button", w); b->MoveWidget(PG_Rect(100,100,150,30)); b->SetText("Factory"); b->Show(); // create PG_Window object PG_Widget* wnd = PG_Factory::CreateObject("window"); wnd->MoveWidget(PG_Rect(100,100,200,300)); wnd->SetText("Window"); // create PG_Label object (custom factory) PG_Widget* l = MyFactory::CreateObject(1, wnd); l->MoveWidget(PG_Rect(50,50,100,20)); l->SetText("Label"); wnd->Show(); app.Run(); return 0; }
int main(int argc, char* argv[]) { putenv("SDL_VIDEO_CENTERED=\"\""); PG_Application app(argv[0]); if (!app.LoadTheme("default") || !app.InitScreen(800, 600, 32, SDL_SWSURFACE | SDL_NOFRAME)) { std::cout << "error, aborting" << std::endl; return EXIT_FAILURE; } PG_Window window(NULL, PG_Rect(0, 0, 800, 600), "Infinite Loop Application", PG_Window::DEFAULT); CentralWidget centralWidget(&window, PG_Rect(200, 100, 400, 400)); centralWidget.SetBorderSize(1); centralWidget.Show(false); window.Show(false); SDL_WarpMouse(centralWidget.my_xpos + 20, centralWidget.my_ypos + 20); window.RunModal(); return EXIT_SUCCESS; }
void GUI_Input::eventBlit(SDL_Surface* surface, const PG_Rect& src, const PG_Rect& dst) { if (waiting) { textcolor = GUI_InputActive; } else { textcolor = GUI_InputInactive; } PG_StaticFrame::eventBlit(surface, src, dst); DrawText(); DrawBorder(PG_Rect(0,0,my_width,my_height), 1, false); }
int main(int argc,char *argv[]) { // init application, pretty usual PG_Application app; app.SetEmergencyQuit(true); app.LoadTheme("default"); app.InitScreen(800,600,32,SDL_SWSURFACE); // init cairo, more interesting cr = cairo_create(); char* image = (char*)PG_Application::GetScreen()->pixels; int width = PG_Application::GetScreenWidth(); int height = PG_Application::GetScreenHeight(); int stride = PG_Application::GetScreen()->pitch; cairo_set_target_image(cr, image, CAIRO_FORMAT_ARGB32, width, height, stride); // connect PG_Button::sigBlit to cairoBlitButton PG_Button::sigBlit.connect(slot(cairoBlitButton)); PG_Button btn1(NULL, PG_Rect(300,400,200,50), "Button 1"); btn1.Show(); CMyWindow win1(NULL, PG_Rect(200,200,360,290), "CAIRO sample", PG_Window::DEFAULT); win1.Show(); CMyWindow win2(NULL, PG_Rect(50,50,200,350), "CAIRO sample", PG_Window::DEFAULT); win2.Show(); CMyWindow win3(NULL, PG_Rect(100,80,400,200), "CAIRO sample", PG_Window::DEFAULT); win3.Show(); app.Run(); return 0; }
int main( int argc, char **argv ) { PG_Application app(argv[0]); app.LoadTheme( "default" ); app.InitScreen( 640, 480 ); PG_DropDown *dd1, *dd2; dd1 = new PG_DropDown(NULL, PG_Rect( 10, 10, 100, 20 )); dd2 = new PG_DropDown(NULL, PG_Rect( 120, 10,100, 20 )); for( int i = 0; i < 10; i++ ) { dd1->AddItem( "poop" ); dd2->AddItem( "yeah" ); } dd1->Show(); dd2->Show(); app.Run(); return 0; }
int main( int argc, char **argv ) { PG_Application app(argv[0]); app.LoadTheme( "default" ); app.InitScreen( 640, 480, 0 ); app.SetEmergencyQuit(true); PG_ArrayWidget* a = new PG_ArrayWidget(NULL, PG_Rect(50,50,150,250)); a->Show(); app.Run(); delete a; return 0; }
int main(int argc,char *argv[]) { PG_Application app(argv[0]); app.SetEmergencyQuit(true); app.LoadTheme("simple"); app.InitScreen(800,600,0,SDL_SWSURFACE); MyWindow* window = new MyWindow( NULL,PG_Rect(200,200,350,300)); new PG_Label( window, PG_Rect(20, 30,300,30), "not overlapping the button" ); new PG_Label( window, PG_Rect(20,100,300,30), "behind button" ); PG_Button* button = new PG_Button( window, PG_Rect(60,70,250,100), "Button" ); button->SetTransparency(40,40,40); new PG_Label( window, PG_Rect(20,130,300,30), "in front of button" ); new PG_Label( window, PG_Rect(20,180,300,30), "not overlapping the button" ); PG_CheckButton* c = new PG_CheckButton( window, PG_Rect( 20, 220, 300, 30 ), "UpdateOverlappingSiblings" ); c->SetPressed(); c->sigClick.connect( SigC::slot( *window, &MyWindow::click )); window->Show(); app.Run(); }
int main(int argc, char* argv[]) { // every ParaGUI application need an application-object PG_Application app(argv[0]); // let us escape with "ESC" app.SetEmergencyQuit(true); // every application needs a theme (the look & feel of the widgets) //app.LoadTheme("default"); app.LoadTheme("simple"); // we must initialize the screen where we want to draw on // 640 - screen width // 480 - screen height // 0 - use screen bitdepth // SDL_SWSURFACE - PG_ option to generate surface in system memory app.InitScreen(800, 600, 0, SDL_SWSURFACE); // ok - now we have a nice 640x480x16 window on the screen :) PG_Rect rect(0, 0, 80, 30); PG_Button myButton( NULL, // an optional parent widget for our button - NULL for no parent rect, // the screen position where the button should appear "Quit" // some textlabel for the button ); // this defines our callback handler for the message MSG_BUTTONCLICK, // we pass a pointer to the app object as userdata PG_MenuBar menubar(NULL, PG_Rect(100, 0, 400, 30)); PG_PopupMenu popmenu(NULL, 425, 140, "File"); popmenu.addMenuItem("Nail", 99, SigC::slot(handle_menu_click)). addMenuItem("Quit", ID_APP_EXIT, SigC::slot(handle_menu_click), &app); menubar.Add("File", &popmenu); menubar.Show(); myButton.sigClick.connect( SigC::slot(exit_handler), (PG_Pointer)&app); // now we have to make the button visible myButton.Show(); // Every ParaGUI application is event driven, so we need a loop where // we process all events (like mouse handling, keystrokes,...) // usually this is done with PG_Application::Run() PG_Rect sc_rect(50, 50, 100, 300); PG_ScrollBar myscroll(NULL, sc_rect, PG_ScrollBar::VERTICAL); myscroll.Show(); PG_Rect sc_rect2(200, 200, 300, 100); PG_ScrollBar myscroll2(NULL, sc_rect2, PG_ScrollBar::HORIZONTAL); myscroll2.SetRange(0, 100); myscroll2.SetPageSize(10); myscroll2.SetLineSize(5); myscroll2.Show(); // Attempt to get animation PlayField anim_test( // still no parent widget NULL, // a static function to create rects PG_Rect(260,120,120,50) ); anim_test.AddTimer(400); anim_test.Show(); PlayField2 anim_test2( NULL, PG_Rect(260, 300, 120, 100) ); anim_test2.AddTimer(40); anim_test2.AddTimer(20); anim_test2.Show(); app.Run(); // this function will only exit when the application was closed return 0; }
CentralWidget::CentralWidget(PG_Widget *parent, const PG_Rect &rect) : PG_ThemeWidget(parent, rect) { innerWidget = new PG_ThemeWidget(this, PG_Rect(rect.w / 2 - 40, rect.h / 2 - 10, 80, 20)); innerWidget->SetBorderSize(1); innerWidget->Show(false); }
PG_ArrayWidget(PG_Widget* parent, const PG_Rect& r) : PG_ThemeWidget(parent, r) { for(int i=0; i<50; i++) { lines[i] = new PG_Label(this, PG_Rect(0,i*25,150,25), "line"); } }
GUI_CreditsMenu::GUI_CreditsMenu() : GUI_BaseMenu(GUI_CREDITS, PG_Rect(CM_PX,CM_PY,CM_VX,CM_VY)) { mBack1 = new GUI_Bitmap(this, PG_Rect(1, 1, credits->w, credits->h), credits), CreditsMenu = new PG_Label(mBack1, PG_Rect(1,4,CM_VX-2,25), "Credits", "GUI_Label"); lLine[0] = new PG_Label(mBack1, PG_Rect(CM_G1_PX,CM_G1_PY+35, CM_G1_VX-2,20), "Code by Antonin Hildebrand aka Woid", "GUI_LabelL"); lLine[1] = new PG_Label(mBack1, PG_Rect(CM_G1_PX,CM_G1_PY+55, CM_G1_VX-2,20), "Graphics by Petr Stastny aka Raist", "GUI_LabelL"); lLine[2] = new PG_Label(mBack1, PG_Rect(CM_G1_PX,CM_G1_PY+75, CM_G1_VX-2,20), "Music by Ondrej Broukal aka GameOver", "GUI_LabelL"); lLine[3] = new PG_Label(mBack1, PG_Rect(CM_G1X_PX,CM_G1_PY+95, CM_G1_VX-50,20), "Petr Stastny aka Raist", "GUI_LabelL"); lLine[4] = new PG_Label(mBack1, PG_Rect(CM_G1X_PX,CM_G1_PY+115, CM_G1_VX-50,20), "Pavel Mirejovsky aka Dusty", "GUI_LabelL"); lLine[6] = new PG_Label(mBack1, PG_Rect(CM_G2_PX,CM_G2_PY+155, CM_G2_VX-2,20), "SDL library by Sam Latinga", "GUI_LabelL"); lLine[7] = new PG_Label(mBack1, PG_Rect(CM_G2_PX,CM_G2_PY+175, CM_G2_VX-2,20), "SeeR scripting engine", "GUI_LabelL"); lLine[5] = new PG_Label(mBack1, PG_Rect(CM_G2_PX,CM_G2_PY+195, CM_G2_VX-2,20), "by Przemek Podsiadly aka Theur", "GUI_LabelL"); lLine[8] = new PG_Label(mBack1, PG_Rect(CM_G2_PX,CM_G2_PY+215, CM_G2_VX-2,20), "BASS sound system by Ian Luck", "GUI_LabelL"); lLine[9] = new PG_Label(mBack1, PG_Rect(CM_G2_PX,CM_G2_PY+235, CM_G2_VX-2,20), "Mappy by Robin Burrows", "GUI_LabelL"); lLine[10] = new PG_Label(mBack1, PG_Rect(CM_G2_PX,CM_G2_PY+255, CM_G2_VX-2,20), "ParaGUI by Alexander Pipelka", "GUI_LabelL"); lLine[11] = new PG_Label(mBack1, PG_Rect(CM_G2_PX,CM_G2_PY+275, CM_G2_VX-2,20), "ImageMagick library by ImageMagick Studio", "GUI_LabelL"); lLine[12] = new PG_Label(mBack1, PG_Rect(CM_G2_PX,CM_G2_PY+295, CM_G2_VX-2,20), "SDL: net, console, ttf, mixer and image libs", "GUI_LabelL"); lLine[13] = new PG_Label(mBack1, PG_Rect(CM_G2_PX,CM_G2_PY+315, CM_G2_VX-2,20), "zlib, libpng, UPX packer", "GUI_LabelL"); lLine[14] = new PG_Label(mBack1, PG_Rect(CM_G1_PX,CM_G1_PY+135, CM_G1_VX-2,20), "Linux & BeOS port by Alex Pipelka aka Braindead", "GUI_LabelL"); lLine[15] = new PG_Label(mBack1, PG_Rect(4,235, CM_VX-2,20), "Thanks to SLiK, Mem, Lada, Tessien, Farey, Kerim, Garett Banuk, Nula, ...", "GUI_Label"); lLine[17] = new PG_Label(mBack1, PG_Rect(4,315, CM_VX-2,25), "visit PW2 site at", "GUI_Label"); lLine[16] = new PG_Label(mBack1, PG_Rect(CM_G1_PX,CM_G1_PY+175, CM_G1_VX-2,20), "Iain Syme author of the orignal PacWars", "GUI_LabelL"); lLine[18] = new PG_Label(mBack1, PG_Rect(4,345, CM_VX-2,25), PW_WEBADDRESS, "GUI_Label"); bOK = new GUI_ButtonSmall(this, 1, PG_Rect(155,390,150,25), "COOL"); Default(); CreditsMenu->SetFont(MainFont); lLine[17]->SetFont(MainFont); lLine[18]->SetFont(MainFont); }
CMyWindow::CMyWindow(PG_Widget *parent,const PG_Rect& r,char *text, WindowFlags flags,const std::string& style) : PG_Window(parent,r,text,flags,style) { mywidget = new CMyWidget(this, PG_Rect(5, 30, r.w-10, r.h-35)); SetDirtyUpdate(false); SetTransparency(100); }
int main(int argc, char *argv[]) { app.SetEmergencyQuit(true); app.LoadTheme("default"); int i; int rgb_size[3]; int w = 640; int h = 480; int bpp=16; Uint32 video_flags; int value; if( SDL_Init( SDL_INIT_VIDEO ) < 0 ) { fprintf(stderr,"Couldn't initialize SDL: %s\n",SDL_GetError()); exit( 1 ); } /* Set the flags we want to use for setting the video mode */ video_flags = SDL_OPENGLBLIT; for ( i=1; argv[i]; ++i ) { if ( strcmp(argv[i], "-fullscreen") == 0 ) { video_flags |= SDL_FULLSCREEN; } } /* Initialize the display */ switch (bpp) { case 8: rgb_size[0] = 2; rgb_size[1] = 3; rgb_size[2] = 3; break; case 15: case 16: rgb_size[0] = 5; rgb_size[1] = 6; rgb_size[2] = 5; break; default: rgb_size[0] = 8; rgb_size[1] = 8; rgb_size[2] = 8; break; } SDL_GL_SetAttribute( SDL_GL_RED_SIZE, rgb_size[0] ); SDL_GL_SetAttribute( SDL_GL_GREEN_SIZE, rgb_size[1] ); SDL_GL_SetAttribute( SDL_GL_BLUE_SIZE, rgb_size[2] ); SDL_GL_SetAttribute( SDL_GL_DEPTH_SIZE, 16 ); SDL_GL_SetAttribute( SDL_GL_DOUBLEBUFFER, 1 ); if (!app.InitScreen(640, 480, 0, video_flags)) { fprintf(stderr, "Couldn't set GL mode: %s\n", SDL_GetError()); exit(1); } app.EnableBackground(); SDL_WM_SetCaption( "MadIVS", "madivs" ); GLWidget gl_view1(NULL, PG_Rect(100,100,200,200)); new PG_Label(&gl_view1, PG_Rect(0,0,90,20), "GL View 1"); // now we have to make the button visible gl_view1.Show(); PG_Button* btn1 = new PG_Button(NULL, 1, PG_Rect(30,30,100,50), "Quit"); btn1->Show(); PG_Rect rs(0,0, PG_Application::GetScreenWidth(), PG_Application::GetScreenHeight()); PG_Widget::UpdateRect(rs); SDL_UpdateRects(SDL_GetVideoSurface(), 1, &rs); int done=0; while( !done ) { GLenum gl_error; char* pg_error; SDL_Event event; gl_view1.Update(); glRotatef(1, 1.0, 1.0, 1.0); SDL_GL_SwapBuffers( ); /* Check for error conditions. */ gl_error = glGetError( ); if( gl_error != GL_NO_ERROR ) { fprintf( stderr, "testgl: OpenGL error: %d\n", gl_error ); } pg_error = SDL_GetError( ); if( pg_error[0] != '\0' ) { fprintf(stderr, "testgl: SDL error '%s'\n", pg_error); SDL_ClearError(); } /* Check if there's a pending event. */ /* if ( SDL_PollEvent( &event ) ) { HandleEvent(&event, &app); }*/ } return(0); }
bool add_handler(PG_Pointer clientdata) { PG_WidgetList* list = (PG_WidgetList*) clientdata; new PG_Label(list, PG_Rect(0,0,200,100), "Blubber Bla Bla"); std::cerr << "Add" << std::endl; return true; }
GUI_Help1Menu::GUI_Help1Menu(): GUI_BaseMenu(GUI_HELP1, PG_Rect(HM1_PX,HM1_PY,HM1_VX,HM1_VY)), Board1(NULL, PG_Rect(HM1_PX,HM1_PY,HM1_VX,HM1_VY)), mBack1(NULL, PG_Rect(HM1_PX+1, HM1_PY+1, help1->w, help1->h), help1), Help1Menu(NULL, PG_Rect(HM1_PX+1,HM1_PY+4,HM1_VX-2,25), "Weapons & Bonuses", "GUI_Label"), lLine1a(NULL, PG_Rect(HM1_G1_PX,HM1_G1_PY, HM1_G1_VX-2, 20), "SMALL PISTOL", "GUI_LabelL"), lLine1b(NULL, PG_Rect(HM1_G1_PX,HM1_G1_PY+HM1_LY1, HM1_G1_VX-2, 20), "fires small slow projectiles", "GUI_LabelL"), lLine1c(NULL, PG_Rect(HM1_G1_PX,HM1_G1_PY+2*HM1_LY1, HM1_G1_VX-2, 20), "bounces with shield and some kind of walls", "GUI_LabelL"), lLine2a(NULL, PG_Rect(HM1_G2_PX,HM1_G2_PY, HM1_G2_VX-2, 20), "BECHEROMET", "GUI_LabelL"), lLine2b(NULL, PG_Rect(HM1_G2_PX,HM1_G2_PY+HM1_LY1, HM1_G2_VX-2, 20), "fires high piercing shots in clusters", "GUI_LabelL"), lLine2c(NULL, PG_Rect(HM1_G2_PX,HM1_G2_PY+2*HM1_LY1, HM1_G2_VX-2, 20), "loaded by becherovka bottles", "GUI_LabelL"), lLine3a(NULL, PG_Rect(HM1_G3_PX,HM1_G3_PY, HM1_G3_VX-2, 20), "RAILGUN", "GUI_LabelL"), lLine3b(NULL, PG_Rect(HM1_G3_PX,HM1_G3_PY+HM1_LY1, HM1_G3_VX-2, 20), "after small delay for charge fires long fireline", "GUI_LabelL"), lLine3c(NULL, PG_Rect(HM1_G3_PX,HM1_G3_PY+2*HM1_LY1, HM1_G3_VX-2, 20), "works on basis of pressed alcohol gas", "GUI_LabelL"), lLine4a(NULL, PG_Rect(HM1_G4_PX,HM1_G4_PY, HM1_G4_VX-2, 20), "RAPID BOMB", "GUI_LabelL"), lLine4b(NULL, PG_Rect(HM1_G4_PX,HM1_G4_PY+HM1_LY1, HM1_G4_VX-2, 20), "droped bomb blows up after a period of time", "GUI_LabelL"), lLine4c(NULL, PG_Rect(HM1_G4_PX,HM1_G4_PY+2*HM1_LY1, HM1_G4_VX-2, 20), "chemical modification of rapid drink", "GUI_LabelL"), lLine5a(NULL, PG_Rect(HM1_G5_PX,HM1_G5_PY, HM1_G5_VX-2, 20), "BETON GRENADE", "GUI_LabelL"), lLine5b(NULL, PG_Rect(HM1_G5_PX,HM1_G5_PY+HM1_LY1, HM1_G5_VX-2, 20), "after throwed detonates when stroked", "GUI_LabelL"), lLine5c(NULL, PG_Rect(HM1_G5_PX,HM1_G5_PY+2*HM1_LY1, HM1_G5_VX-2, 20), "deadly modification of beton mixture", "GUI_LabelL"), lI1a(NULL, PG_Rect(HM1_I1_PX,HM1_I1_PY, HM1_I1_VX-2, 20), "DIAMOND", "GUI_LabelL"), lI1b(NULL, PG_Rect(HM1_I1_PX,HM1_I1_PY+HM1_LY2, HM1_I1_VX-2, 20), "80 points", "GUI_LabelL"), lI2a(NULL, PG_Rect(HM1_I2_PX,HM1_I2_PY, HM1_I2_VX-2, 20), "DRINK", "GUI_LabelL"), lI2b(NULL, PG_Rect(HM1_I2_PX,HM1_I2_PY+HM1_LY2, HM1_I2_VX-2, 20), "20 points", "GUI_LabelL"), lI3a(NULL, PG_Rect(HM1_I3_PX,HM1_I3_PY, HM1_I3_VX-2, 20), "GOLD", "GUI_LabelL"), lI3b(NULL, PG_Rect(HM1_I3_PX,HM1_I3_PY+HM1_LY2, HM1_I3_VX-2, 20), "6 points", "GUI_LabelL"), lI4a(NULL, PG_Rect(HM1_I4_PX,HM1_I4_PY, HM1_I4_VX-2, 20), "GOLD", "GUI_LabelL"), lI4b(NULL, PG_Rect(HM1_I4_PX,HM1_I4_PY+HM1_LY2, HM1_I4_VX-2, 20), "5 points", "GUI_LabelL"), lI5a(NULL, PG_Rect(HM1_I5_PX,HM1_I5_PY, HM1_I5_VX-2, 20), "COCTAIL", "GUI_LabelL"), lI5b(NULL, PG_Rect(HM1_I5_PX,HM1_I5_PY+HM1_LY2, HM1_I5_VX-2, 20), "11 points", "GUI_LabelL"), lI6a(NULL, PG_Rect(HM1_I6_PX,HM1_I6_PY, HM1_I6_VX-2, 20), "COCTAIL", "GUI_LabelL"), lI6b(NULL, PG_Rect(HM1_I6_PX,HM1_I6_PY+HM1_LY2, HM1_I6_VX-2, 20), "13 points", "GUI_LabelL"), //bPrev(NULL, 2, PG_Rect(HM1_PX+5,HM1_PY+330,70,20), "PREV"), bReturn(NULL, 1, PG_Rect(HM1_PX+(HM1_VX-100)/2,HM1_PY+330,100,20), "RETURN"), bNext(NULL, 3, PG_Rect(HM1_PX+HM1_VX-5-70,HM1_PY+330,70,20), "NEXT") { Default(); Help1Menu.SetFont(MainFont); AddChild(&Board1); AddChild(&mBack1); AddChild(&Help1Menu); AddChild(&lLine1a); AddChild(&lLine1b); AddChild(&lLine1c); AddChild(&lLine2a); AddChild(&lLine2b); AddChild(&lLine2c); AddChild(&lLine3a); AddChild(&lLine3b); AddChild(&lLine3c); AddChild(&lLine4a); AddChild(&lLine4b); AddChild(&lLine4c); AddChild(&lLine5a); AddChild(&lLine5b); AddChild(&lLine5c); AddChild(&lI1a); AddChild(&lI1b); AddChild(&lI2a); AddChild(&lI2b); AddChild(&lI3a); AddChild(&lI3b); AddChild(&lI4a); AddChild(&lI4b); AddChild(&lI5a); AddChild(&lI5b); AddChild(&lI6a); AddChild(&lI6b); AddChild(&bReturn); AddChild(&bNext); }
GUI_ClientMenu::GUI_ClientMenu() : GUI_BaseMenu(GUI_CLIENT, PG_Rect(CMS_PX,CMS_PY,CMS_VX,CMS_VY)) { ClientMenu = new PG_Label(this, PG_Rect(1,4,CMS_VX-2,25), "CLIENT OPTIONS", "GUI_Label"); lEffect = new PG_Label(this, PG_Rect(1,30,CMS_VX-2,20), "This settings will affect the client side of the game.", "GUI_Label"); lClientName = new PG_Label(this, PG_Rect(1,65, 119,20), "Station name:", "GUI_Label"); eClientName = new GUI_TextEdit(this, PG_Rect(120,65,215,20)); lClientDesc = new PG_Label(this, PG_Rect(1,90, 119,20), "Station finger:", "GUI_Label"); eClientDesc = new GUI_TextEdit(this, PG_Rect(120,90,215,20)); cDelTmps = new GUI_CheckBox(this, PG_Rect(25,115,310,CB_SIZEY), "delete temporary files after transmission", false, GUI_Gray64); cDRqs = new GUI_CheckBox(this, PG_Rect(25,140,310,CB_SIZEY), "allow download requests", false, GUI_Gray64); cURqs = new GUI_CheckBox(this, PG_Rect(25,165,310,CB_SIZEY), "allow upload requests", false, GUI_Gray64); bSet = new GUI_ButtonSmall(this, 1, PG_Rect(25,190,150, 25), "APPLY"); bCancel = new GUI_ButtonSmall(this, 2, PG_Rect(25+150+10,190,150,25), "BACK"); Default(); ClientMenu->SetFont(MainFont); lClientName->SetAlignment(PG_TA_RIGHT); lClientDesc->SetAlignment(PG_TA_RIGHT); LoadThemeStyle("GUI_Board"); }
GUI_Help2Menu::GUI_Help2Menu(): GUI_BaseMenu(GUI_HELP2, PG_Rect(HM2_PX,HM2_PY,HM2_VX,HM2_VY)), Board1(NULL, PG_Rect(HM2_PX,HM2_PY,HM2_VX,HM2_VY)), mBack1(NULL, PG_Rect(HM2_PX+1, HM2_PY+1, help2->w, help2->h), help2), Help2Menu(NULL, PG_Rect(HM2_PX+1,HM2_PY+4,HM2_VX-2,25), "Items & Ammo", "GUI_Label"), lI1a(NULL, PG_Rect(HM2_I1_PX,HM2_I1_PY, HM2_I1_VX-2, 20), "SPEED", "GUI_LabelL"), lI1b(NULL, PG_Rect(HM2_I1_PX,HM2_I1_PY+HM2_LY1, HM2_I1_VX-2, 20), "faster moving", "GUI_LabelL"), lI2a(NULL, PG_Rect(HM2_I2_PX,HM2_I2_PY, HM2_I2_VX-2, 20), "POWER", "GUI_LabelL"), lI2b(NULL, PG_Rect(HM2_I2_PX,HM2_I2_PY+HM2_LY1, HM2_I2_VX-2, 20), "full bomb power", "GUI_LabelL"), lI3a(NULL, PG_Rect(HM2_I3_PX,HM2_I3_PY, HM2_I3_VX-2, 20), "SHIELD", "GUI_LabelL"), lI3b(NULL, PG_Rect(HM2_I3_PX,HM2_I3_PY+HM2_LY1, HM2_I3_VX-2, 20), "add shields", "GUI_LabelL"), lI4a(NULL, PG_Rect(HM2_I4_PX,HM2_I4_PY, HM2_I4_VX-2, 20), "INVISIBILITY", "GUI_LabelL"), lI4b(NULL, PG_Rect(HM2_I4_PX,HM2_I4_PY+HM2_LY1, HM2_I4_VX-2, 20), "", "GUI_LabelL"), lI5a(NULL, PG_Rect(HM2_I5_PX,HM2_I5_PY, HM2_I5_VX-2, 20), "PUNCH", "GUI_LabelL"), lI5b(NULL, PG_Rect(HM2_I5_PX,HM2_I5_PY+HM2_LY1, HM2_I5_VX-2, 20), "punching bombs", "GUI_LabelL"), lI6a(NULL, PG_Rect(HM2_I6_PX,HM2_I6_PY, HM2_I6_VX-2, 20), "WARP", "GUI_LabelL"), lI6b(NULL, PG_Rect(HM2_I6_PX,HM2_I6_PY+HM2_LY1, HM2_I6_VX-2, 20), "add warps", "GUI_LabelL"), lI7a(NULL, PG_Rect(HM2_I7_PX,HM2_I7_PY, HM2_I7_VX-2, 20), "GLASSES", "GUI_LabelL"), lI7b(NULL, PG_Rect(HM2_I7_PX,HM2_I7_PY+HM2_LY1, HM2_I7_VX-2, 20), "detecting invisibles", "GUI_LabelL"), lJ1a(NULL, PG_Rect(HM2_J1_PX,HM2_J1_PY, HM2_J1_VX-2, 20), "BECHEROMET", "GUI_LabelL"), lJ1b(NULL, PG_Rect(HM2_J1_PX,HM2_J1_PY+HM2_LY2, HM2_J1_VX-2, 20), "enable weapon", "GUI_LabelL"), lJ2a(NULL, PG_Rect(HM2_J2_PX,HM2_J2_PY, HM2_J2_VX-2, 20), "RAILGUN", "GUI_LabelL"), lJ2b(NULL, PG_Rect(HM2_J2_PX,HM2_J2_PY+HM2_LY2, HM2_J2_VX-2, 20), "enable weapon", "GUI_LabelL"), lJ3a(NULL, PG_Rect(HM2_J3_PX,HM2_J3_PY, HM2_J3_VX-2, 20), "BOMB", "GUI_LabelL"), lJ3b(NULL, PG_Rect(HM2_J3_PX,HM2_J3_PY+HM2_LY2, HM2_J3_VX-2, 20), "enable weapon", "GUI_LabelL"), lJ4a(NULL, PG_Rect(HM2_J4_PX,HM2_J4_PY, HM2_J4_VX-2, 20), "GRENADE", "GUI_LabelL"), lJ4b(NULL, PG_Rect(HM2_J4_PX,HM2_J4_PY+HM2_LY2, HM2_J4_VX-2, 20), "enable weapon", "GUI_LabelL"), lJ5a(NULL, PG_Rect(HM2_J5_PX,HM2_J5_PY, HM2_J5_VX-2, 20), "AMMO", "GUI_LabelL"), lJ5b(NULL, PG_Rect(HM2_J5_PX,HM2_J5_PY+HM2_LY2, HM2_J5_VX-2, 20), "becheromet", "GUI_LabelL"), lJ6a(NULL, PG_Rect(HM2_J6_PX,HM2_J6_PY, HM2_J6_VX-2, 20), "AMMO", "GUI_LabelL"), lJ6b(NULL, PG_Rect(HM2_J6_PX,HM2_J6_PY+HM2_LY2, HM2_J6_VX-2, 20), "railgun", "GUI_LabelL"), lJ7a(NULL, PG_Rect(HM2_J7_PX,HM2_J7_PY, HM2_J7_VX-2, 20), "AMMO", "GUI_LabelL"), lJ7b(NULL, PG_Rect(HM2_J7_PX,HM2_J7_PY+HM2_LY2, HM2_J7_VX-2, 20), "bombs", "GUI_LabelL"), lK1a(NULL, PG_Rect(HM2_K1_PX,HM2_K1_PY, HM2_K1_VX-2, 20), "AMMO", "GUI_LabelL"), lK1b(NULL, PG_Rect(HM2_K1_PX,HM2_K1_PY+HM2_LY3, HM2_K1_VX-2, 20), "grenades", "GUI_LabelL"), lK2a(NULL, PG_Rect(HM2_K2_PX,HM2_K2_PY, HM2_K2_VX-2, 20), "TURTLE", "GUI_LabelL"), lK2b(NULL, PG_Rect(HM2_K2_PX,HM2_K2_PY+HM2_LY3, HM2_K2_VX-2, 20), "slower moving", "GUI_LabelL"), lK3a(NULL, PG_Rect(HM2_K3_PX,HM2_K3_PY, HM2_K3_VX-2, 20), "GLUE", "GUI_LabelL"), lK3b(NULL, PG_Rect(HM2_K3_PX,HM2_K3_PY+HM2_LY3, HM2_K3_VX-2, 20), "not able moving", "GUI_LabelL"), lK4a(NULL, PG_Rect(HM2_K4_PX,HM2_K4_PY, HM2_K4_VX-2, 20), "REVERSE", "GUI_LabelL"), lK4b(NULL, PG_Rect(HM2_K4_PX,HM2_K4_PY+HM2_LY3, HM2_K4_VX-2, 20), "reverse controls", "GUI_LabelL"), lK5a(NULL, PG_Rect(HM2_K5_PX,HM2_K5_PY, HM2_K5_VX-2, 20), "LOST", "GUI_LabelL"), lK5b(NULL, PG_Rect(HM2_K5_PX,HM2_K5_PY+HM2_LY3, HM2_K5_VX-2, 20), "disable weapons", "GUI_LabelL"), lK6a(NULL, PG_Rect(HM2_K6_PX,HM2_K6_PY, HM2_K6_VX-2, 20), "BERSERK", "GUI_LabelL"), lK6b(NULL, PG_Rect(HM2_K6_PX,HM2_K6_PY+HM2_LY3, HM2_K6_VX-2, 20), "kill by touch", "GUI_LabelL"), lK7a(NULL, PG_Rect(HM2_K7_PX,HM2_K7_PY, HM2_K7_VX-2, 20), " ", "GUI_LabelL"), lK7b(NULL, PG_Rect(HM2_K7_PX,HM2_K7_PY+HM2_LY3, HM2_K7_VX-2, 20), " ", "GUI_LabelL"), bPrev(NULL, 2, PG_Rect(HM2_PX+5,HM2_PY+365,70,20), "PREV"), bReturn(NULL, 1, PG_Rect(HM2_PX+(HM2_VX-100)/2,HM2_PY+365,100,20), "RETURN") //bNext(NULL, 3, PG_Rect(HM2_PX+HM2_VX-5-70,HM2_PY+365,70,20), "NEXT") { Default(); Help2Menu.SetFont(MainFont); AddChild(&Board1); AddChild(&mBack1); AddChild(&Help2Menu); AddChild(&lI1a); AddChild(&lI1b); AddChild(&lI2a); AddChild(&lI2b); AddChild(&lI3a); AddChild(&lI3b); AddChild(&lI4a); AddChild(&lI4b); AddChild(&lI5a); AddChild(&lI5b); AddChild(&lI6a); AddChild(&lI6b); AddChild(&lI7a); AddChild(&lI7b); AddChild(&lJ1a); AddChild(&lJ1b); AddChild(&lJ2a); AddChild(&lJ2b); AddChild(&lJ3a); AddChild(&lJ3b); AddChild(&lJ4a); AddChild(&lJ4b); AddChild(&lJ5a); AddChild(&lJ5b); AddChild(&lJ6a); AddChild(&lJ6b); AddChild(&lJ7a); AddChild(&lJ7b); AddChild(&lK1a); AddChild(&lK1b); AddChild(&lK2a); AddChild(&lK2b); AddChild(&lK3a); AddChild(&lK3b); AddChild(&lK4a); AddChild(&lK4b); AddChild(&lK5a); AddChild(&lK5b); AddChild(&lK6a); AddChild(&lK6b); AddChild(&lK7a); AddChild(&lK7b); AddChild(&bReturn); AddChild(&bPrev); }
int main( int argc, char **argv ) { PG_Application app; app.LoadTheme( "default" ); app.InitScreen( 640, 480, 0 ); app.SetEmergencyQuit(true); PG_Label l( NULL, PG_Rect(10,50,250,25), NULL ); l.Show(); PG_TabBar bar( NULL, PG_Rect(10, 10, 300, 33) ); bar.sigTabSelect.connect(slot(handleTab), &l); bar.Show(); bar.AddTab("Tab1"); bar.AddTab("Tab2"); bar.AddTab("Tab3"); bar.AddTab("MoreTab1"); bar.AddTab("MoreTab2"); bar.AddTab("MoreTab3"); bar.AddTab("EvenLongerTab1"); bar.AddTab("Tab4"); PG_NoteBook notebook(NULL, PG_Rect(50, 100, 300, 200)); notebook.sigPageSelect.connect(slot(handlePageSelect)); PG_Button b(NULL, 1, PG_Rect(0,0,10,10), "Big fat button"); b.sigButtonClick.connect(slot(handleBigFatButton)); notebook.AddPage("button", &b, slot(handlePageButton)); PG_Widget* custom = notebook.CreatePage("custom", slot(handlePageCustom)); custom->SetID(2); PG_Label label(custom, PG_Rect(5,5,100,25), "My Page"); PG_CheckButton check(custom, -1, PG_Rect(5,35,150,25), "Check me"); PG_ListBox listpage(NULL, PG_Rect(0,0,300,100)); listpage.AddItem(new PG_ListBoxItem(25, "Item1")); listpage.AddItem(new PG_ListBoxItem(25, "Item2")); listpage.AddItem(new PG_ListBoxItem(25, "Item3")); listpage.AddItem(new PG_ListBoxItem(25, "Item4")); listpage.AddItem(new PG_ListBoxItem(25, "Item5")); listpage.AddItem(new PG_ListBoxItem(25, "Item6")); listpage.AddItem(new PG_ListBoxItem(25, "Item7")); listpage.AddItem(new PG_ListBoxItem(25, "Item8")); listpage.AddItem(new PG_ListBoxItem(25, "Item9")); listpage.AddItem(new PG_ListBoxItem(25, "Item10")); listpage.SetID(3); notebook.AddPage("list", &listpage); PG_NoteBook subnotebook(NULL, PG_Rect(0,0,100,100)); PG_Widget* complex = subnotebook.CreatePage("custom2"); PG_Button b2(complex, -1, PG_Rect(10,10,100,25), "Button"); subnotebook.AddPage("button2", new PG_Button(NULL, -1, PG_Rect(0,0,10,10), "Not so big button")); notebook.AddPage("complex", &subnotebook); notebook.Show(); app.Run(); return 0; }
PG_ListBoxBaseItem::PG_ListBoxBaseItem(PG_Widget* parent, Uint16 height, void* userdata) : PG_Label(parent, PG_Rect(0,0,0,height)) { my_userdata = userdata; my_selected = false; my_hover = false; //my_itemheight = height; if (parent != NULL) { SetIndent(GetParent()->GetIndent()); SetAlignment(GetParent()->GetAlignment()); } }