GtkWidget * create_URL( void ) { GtkWidget * vbox1; GtkWidget * hbox1; GtkWidget * hbuttonbox1; GtkWidget * Ok; GtkWidget * Cancel; GtkAccelGroup * accel_group; accel_group=gtk_accel_group_new(); URL=gtk_window_new( GTK_WINDOW_TOPLEVEL ); gtk_widget_set_name( URL,"URL" ); gtk_object_set_data( GTK_OBJECT( URL ),"URL",URL ); gtk_widget_set_usize( URL,384,70 ); GTK_WIDGET_SET_FLAGS( URL,GTK_CAN_DEFAULT ); gtk_window_set_title( GTK_WINDOW( URL ),MSGTR_Network ); gtk_window_set_position( GTK_WINDOW( URL ),GTK_WIN_POS_CENTER ); gtk_window_set_policy( GTK_WINDOW( URL ),TRUE,TRUE,FALSE ); gtk_window_set_wmclass( GTK_WINDOW( URL ),"Network","MPlayer" ); gtk_widget_realize( URL ); gtkAddIcon( URL ); vbox1=AddVBox( AddDialogFrame( URL ),0 ); hbox1=AddHBox( vbox1,1 ); AddLabel( "URL: ",hbox1 ); URLCombo=AddComboBox( hbox1 ); /* gtk_combo_new(); gtk_widget_set_name( URLCombo,"URLCombo" ); gtk_widget_show( URLCombo ); gtk_box_pack_start( GTK_BOX( hbox1 ),URLCombo,TRUE,TRUE,0 ); */ URLEntry=GTK_COMBO( URLCombo )->entry; gtk_widget_set_name( URLEntry,"URLEntry" ); gtk_widget_show( URLEntry ); AddHSeparator( vbox1 ); hbuttonbox1=AddHButtonBox( vbox1 ); gtk_button_box_set_layout( GTK_BUTTON_BOX( hbuttonbox1 ),GTK_BUTTONBOX_END ); gtk_button_box_set_spacing( GTK_BUTTON_BOX( hbuttonbox1 ),10 ); Ok=AddButton( MSGTR_Ok,hbuttonbox1 ); Cancel=AddButton( MSGTR_Cancel,hbuttonbox1 ); gtk_widget_add_accelerator( Ok,"clicked",accel_group,GDK_Return,0,GTK_ACCEL_VISIBLE ); gtk_widget_add_accelerator( Cancel,"clicked",accel_group,GDK_Escape,0,GTK_ACCEL_VISIBLE ); gtk_signal_connect( GTK_OBJECT( URL ),"destroy",GTK_SIGNAL_FUNC( WidgetDestroy ),&URL ); gtk_signal_connect( GTK_OBJECT( Ok ),"clicked",GTK_SIGNAL_FUNC( on_Button_pressed ),(void *)1 ); gtk_signal_connect( GTK_OBJECT( Cancel ),"clicked",GTK_SIGNAL_FUNC( on_Button_pressed ),NULL ); gtk_widget_grab_focus( URLEntry ); gtk_window_add_accel_group( GTK_WINDOW( URL ),accel_group ); return URL; }
iwMusicPlayer::iwMusicPlayer() : IngameWindow(CGI_MUSICPLAYER, (unsigned short) - 1, (unsigned short) - 1, 430, 330, _("Music player"), LOADER.GetImageN("resource", 41)), changed(false) { AddList(0, 20, 30, 330, 200, TC_GREEN1, NormalFont); AddText(1, 20, 240, _("Playlist:"), COLOR_YELLOW, 0, NormalFont); AddComboBox(2, 20, 260, 330, 22, TC_GREEN1, NormalFont, 200); // Playlistbuttons const unsigned short button_distance = 10; const unsigned short button_width = (330 - button_distance) / 2; ctrlButton* b1 = AddTextButton(3, 20, 290, button_width, 22, TC_GREEN2, _("Add"), NormalFont); AddTextButton(4, b1->GetX(false) + button_width + button_distance, 290, button_width, 22, TC_GREEN2, _("Remove"), NormalFont); //AddTextButton(5,b1->GetX(false),320,button_width,22,TC_GREEN2,_("Save"),NormalFont); //AddTextButton(6,b2->GetX(false),320,button_width,22,TC_GREEN2,_("Load"),NormalFont); // Buttons für die Musikstücke AddImageButton(7, 370, 30, 40, 40, TC_GREY, LOADER.GetImageN("io", 138), _("Add track")); AddImageButton(8, 370, 80, 40, 40, TC_GREY, LOADER.GetImageN("io_new", 2), _("Add directory of tracks")); AddImageButton(9, 370, 130, 40, 40, TC_RED1, LOADER.GetImageN("io", 220), _("Remove track")); AddImageButton(10, 370, 180, 40, 15, TC_GREY, LOADER.GetImageN("io", 33), _("Upwards")); AddImageButton(11, 370, 195, 40, 15, TC_GREY, LOADER.GetImageN("io", 34), _("Downwards")); AddDeepening(12, 370, 220, 40, 20, TC_GREY, "1", NormalFont, COLOR_YELLOW); AddImageButton(13, 370, 240, 20, 20, TC_RED1, LOADER.GetImageN("io", 139), _("Less repeats")); AddImageButton(14, 390, 240, 20, 20, TC_GREY, LOADER.GetImageN("io", 138), _("More repeats")); AddImageButton(15, 370, 270, 40, 40, TC_GREY, LOADER.GetImageN("io", 107), _("Playback in this order")); //225 // Mit Werten füllen MUSICPLAYER.GetPlaylist().FillMusicPlayer(this); UpdatePlaylistCombo(SETTINGS.sound.playlist); }
CComboBox* CBaseDlg::AddComboParam(CString sCaption, CString sItem[], int nCount, CRect rect, UINT nID, CString& strCaption, int maxChars /*= INT_MAX*/) { if (rect.Height() > 40) { AddGroupBox(sCaption, rect); rect.DeflateRect(10, 20, 10, 10); } CComboBox *pCtrl = AddComboBox(sItem, nCount, rect, nID, strCaption, maxChars); return pCtrl; }
//--------------------------------------------------------------------- __fastcall TBookmarkFolderDialog::TBookmarkFolderDialog(TStrings * Folders) : TCustomDialog(HELP_LOCATION_PROFILE_MOVE) { Caption = LoadStr(MOVE_BOOKMARK_CAPTION); NameCombo = new TComboBox(this); NameCombo->AutoComplete = false; AddComboBox(NameCombo, CreateLabel(LoadStr(MOVE_BOOKMARK_PROMPT))); NameCombo->Items = Folders; }
iwTrade::iwTrade(const nobBaseWarehouse& wh, const GameWorldViewer& gwv, GameCommandFactory& gcFactory) : IngameWindow(wh.CreateGUIID(), IngameWindow::posAtMouse, Extent(400, 194), _("Trade"), LOADER.GetImageN("resource", 41)), wh(wh), gwv(gwv), gcFactory(gcFactory), possibleSrcWarehouses(gwv.GetPlayer().GetWarehousesForTrading(wh)) { // Get title of the player SetTitle((boost::format(_("Trade with %s")) % gwv.GetWorld().GetPlayer(wh.GetPlayer()).name).str()); // Gebäudebild und dessen Schatten AddImage(0, DrawPoint(100, 144), LOADER.GetNationImage(wh.GetNation(), 250 + 5 * wh.GetBuildingType())); const unsigned left_column = 200; AddComboBox(4, DrawPoint(left_column, 84), Extent(160, 18), TC_GREY, NormalFont, 90); // Ware/Figure names AddText(1, DrawPoint(left_column, 30), "Deal in:", COLOR_YELLOW, FontStyle::LEFT, NormalFont); ctrlComboBox* box = this->AddComboBox(2, DrawPoint(left_column, 44), Extent(160, 18), TC_GREY, NormalFont, 200); // Ware or figure? box->AddString(_("Wares")); box->AddString(_("Settlers")); AddText(3, DrawPoint(left_column, 70), "Type:", COLOR_YELLOW, FontStyle::LEFT, NormalFont); // Create possible wares, figures for(unsigned i = 0; i < NUM_WARE_TYPES; ++i) { // Only add one shield type if(GoodType(i) != ConvertShields(GoodType(i))) continue; // Don't add empty water if(i == GD_WATEREMPTY) continue; wares.push_back(GoodType(i)); } for(unsigned i = 0; i < NUM_JOB_TYPES; ++i) { // Can't trade boat carriers if(i == JOB_BOATCARRIER) continue; jobs.push_back(Job(i)); } AddImage(5, DrawPoint(left_column + 20, 130), static_cast<ITexture*>(nullptr), _("Ware you like to trade")); AddEdit(6, DrawPoint(left_column + 34, 120), Extent(39, 20), TC_GREY, NormalFont)->SetNumberOnly(true); AddText(7, DrawPoint(left_column + 75, 125), "/ 20", COLOR_YELLOW, FontStyle::LEFT, NormalFont); AddTextButton(8, DrawPoint(left_column, 150), Extent(150, 22), TC_GREEN2, _("Send"), NormalFont); // Choose wares at first box->SetSelection(0); Msg_ComboSelectItem(2, 0); }
/** * Konstruktor von @p iwSettings. * * @author NastX */ iwSettings::iwSettings(dskGameInterface* gameDesktop) : IngameWindow(CGI_SETTINGS, 0xFFFF, 0xFFFF, 370, 172, _("Settings"), LOADER.GetImageN("resource", 41)), gameDesktop(gameDesktop) { AddText( 46, 15, 40, _("Fullscreen resolution:"), COLOR_YELLOW, 0, NormalFont); AddText( 47, 15, 85, _("Mode:"), COLOR_YELLOW, 0, NormalFont); AddCheckBox(4, 200, 124, 150, 26, TC_GREY, _("Statistics Scale"), NormalFont, false); GetCtrl<ctrlCheck>(4)->SetCheck(SETTINGS.ingame.scale_statistics); // "Vollbild" ctrlOptionGroup* optiongroup = AddOptionGroup(10, ctrlOptionGroup::CHECK, scale); optiongroup = AddOptionGroup(3, ctrlOptionGroup::CHECK, scale); optiongroup->AddTextButton(1, 200, 70, 150, 22, TC_GREY, _("Fullscreen"), NormalFont); optiongroup->AddTextButton(2, 200, 95, 150, 22, TC_GREY, _("Windowed"), NormalFont); // "Vollbild" setzen optiongroup = GetCtrl<ctrlOptionGroup>(3); optiongroup->SetSelection( (SETTINGS.video.fullscreen ? 1 : 2) ); VIDEODRIVER.ListVideoModes(video_modes); // "Auflösung" AddComboBox(0, 200, 35, 150, 22, TC_GREY, NormalFont, 110); // Und zu der Combobox hinzufügen for(unsigned i = 0; i < video_modes.size(); ++i) { // >=800x600, alles andere macht keinen Sinn if(video_modes[i].width >= 800 && video_modes[i].height >= 600) { char str[64]; sprintf(str, "%ux%u", video_modes[i].width, video_modes[i].height); GetCtrl<ctrlComboBox>(0)->AddString(str); // Ist das die aktuelle Auflösung? Dann selektieren if(video_modes[i].width == SETTINGS.video.fullscreen_width && video_modes[i].height == SETTINGS.video.fullscreen_height) GetCtrl<ctrlComboBox>(0)->SetSelection(i); } else { video_modes.erase(video_modes.begin() + i); --i; } } }
iwMapDebug::iwMapDebug(GameWorldViewer& gwv): IngameWindow(CGI_MAP_DEBUG, 0xFFFF, 0xFFFF, 300, 200, _("Map Debug"), LOADER.GetImageN("resource", 41)), gwv(gwv), printer(new DebugPrinter(gwv)) { gwv.GetView()->SetDebugNodePrinter(printer); ctrlCheck* cbShowCoords = AddCheckBox(0, 15, 30, 250, 20, TC_GREY, _("Show coordinates"), NormalFont); cbShowCoords->SetCheck(true); ctrlComboBox* data = AddComboBox(1, 15, 60, 250, 20, TC_GREY, NormalFont, 100); data->AddString(_("Nothing")); data->AddString(_("Reserved")); data->AddString(_("Altitude")); data->AddString(_("Resources")); data->AddString(_("Sea Id")); data->SetSelection(1); printer->showCoords = cbShowCoords->GetCheck(); printer->showDataIdx = data->GetSelection(); }
iwSave::iwSave() : iwSaveLoad(40, _("Save game!")) { AddEdit(1, 20, 390, 510, 22, TC_GREEN2, NormalFont); AddImageButton(2, 540, 386, 40, 40, TC_GREEN2, LOADER.GetImageN("io", 47)); // Autospeicherzeug AddText(3, 20, 350, _("Auto-Save every:"), 0xFFFFFF00, 0, NormalFont); ctrlComboBox* combo = AddComboBox(4, 270, 345, 130, 22, TC_GREEN2, NormalFont, 100); /// Combobox füllen combo->AddString(_("Disabled")); // deaktiviert // Last entry is only for debugging const unsigned numIntervalls = SETTINGS.global.debugMode ? AUTO_SAVE_INTERVALS_COUNT : AUTO_SAVE_INTERVALS_COUNT - 1; // Die Intervalle for(unsigned i = 0; i < numIntervalls; ++i) { char str[64]; sprintf(str, "%u GF", AUTO_SAVE_INTERVALS[i]); combo->AddString(str); } // Richtigen Eintrag auswählen bool found = false; for(unsigned i = 0; i < numIntervalls; ++i) { if(SETTINGS.interface.autosave_interval == AUTO_SAVE_INTERVALS[i]) { combo->SetSelection(i + 1); found = true; break; } } // Ungültig oder 0 --> Deaktiviert auswählen if(!found) combo->SetSelection(0); // Tabelle ausfüllen beim Start RefreshTable(); }
iwSuggestPact::iwSuggestPact(const PactType pt, const GamePlayer& player, GameCommandFactory& gcFactory): IngameWindow(CGI_SUGGESTPACT, (unsigned short) - 1, (unsigned short) - 1, 320, 215, _(PACT_TITLES[pt]), LOADER.GetImageN("resource", 41)), pt(pt), player(player), gcFactory(gcFactory) { glArchivItem_Bitmap* image; switch(pt) { case TREATY_OF_ALLIANCE: image = LOADER.GetImageN("io", 61); break; case NON_AGGRESSION_PACT: image = LOADER.GetImageN("io", 100); break; default: image = NULL; } // Bild als Orientierung, welchen Vertrag wir gerade bearbeiten if(image) this->AddImage(0, 55, 100, image); AddText(1, 100, 30, _("Contract type:"), COLOR_YELLOW, 0, NormalFont); AddText(2, 100, 45, _(PACT_NAMES[pt]), COLOR_GREEN, 0, NormalFont); AddText(3, 100, 70, _("To player:"), COLOR_YELLOW, 0, NormalFont); AddText(4, 100, 85, player.name, player.color, 0, NormalFont); AddText(5, 100, 110, _("Duration:"), COLOR_YELLOW, 0, NormalFont); ctrlComboBox* combo = AddComboBox(6, 100, 125, 190, 22, TC_GREEN2, NormalFont, 100); // Zeiten zur Combobox hinzufügen for(unsigned i = 0; i < DURATION_COUNT; ++i) { char str[256]; sprintf(str, "%s (%s)", DURATION_NAMES[i], GAMECLIENT.FormatGFTime(DURATIONS[i]).c_str()); combo->AddString(str); } // Erstes Item in der Combobox vorerst auswählen combo->SetSelection(0); // Option "ewig" noch hinzufügen combo->AddString(_("Eternal")); AddTextButton(7, 110, 170, 100, 22, TC_GREEN2, _("Confirm"), NormalFont); }
iwSave::iwSave() : iwSaveLoad(40, _("Save game!")) { AddEdit(1, DrawPoint(20, 390), Extent(510, 22), TC_GREEN2, NormalFont); AddImageButton(2, DrawPoint(540, 386), Extent(40, 40), TC_GREEN2, LOADER.GetImageN("io", 47)); // Autospeicherzeug AddText(3, DrawPoint(20, 350), _("Auto-Save every:"), 0xFFFFFF00, FontStyle{}, NormalFont); ctrlComboBox* combo = AddComboBox(4, DrawPoint(270, 345), Extent(130, 22), TC_GREEN2, NormalFont, 100); /// Combobox füllen combo->AddString(_("Disabled")); // deaktiviert // Last entry is only for debugging const unsigned numIntervalls = SETTINGS.global.debugMode ? NUM_AUTO_SAVE_INTERVALS : NUM_AUTO_SAVE_INTERVALS - 1; // Die Intervalle for(unsigned i = 0; i < numIntervalls; ++i) combo->AddString(helpers::toString(AUTO_SAVE_INTERVALS[i]) + " GF"); // Richtigen Eintrag auswählen bool found = false; for(unsigned i = 0; i < numIntervalls; ++i) { if(SETTINGS.interface.autosave_interval == AUTO_SAVE_INTERVALS[i]) { combo->SetSelection(i + 1); found = true; break; } } // Ungültig oder 0 --> Deaktiviert auswählen if(!found) combo->SetSelection(0); // Tabelle ausfüllen beim Start RefreshTable(); }
iwBuildOrder::iwBuildOrder() : IngameWindow(CGI_BUILDORDER, (unsigned short) - 1, (unsigned short) - 1, 320, 300, _("Building sequence"), LOADER.GetImageN("io", 5)), settings_changed(false) { ctrlList* list = AddList(0, 15, 60, 150, 220, TC_GREY, NormalFont); // Liste füllen BuildOrders buildOrders = GAMECLIENT.visual_settings.build_order; for(unsigned char i = 0; i < buildOrders.size(); ++i) list->AddString(_(BUILDING_NAMES[buildOrders[i]])); //-V807 // Nach ganz oben AddImageButton(1, 250, 194, 48, 20, TC_GREY, LOADER.GetImageN("io", 215), _("Top")); // Hoch AddImageButton(2, 250, 216, 48, 20, TC_GREY, LOADER.GetImageN("io", 33), _("Up")); // Runter AddImageButton(3, 250, 238, 48, 20, TC_GREY, LOADER.GetImageN("io", 34), _("Down")); // Nach ganz unten AddImageButton(4, 250, 260, 48, 20, TC_GREY, LOADER.GetImageN("io", 216), _("Bottom")); // Bild der Auswahl AddImage(5, 240, 150, LOADER.GetNationImage(GAMECLIENT.GetLocalPlayer().nation, 250 + buildOrders[0] * 5)); ctrlComboBox* combo = AddComboBox(6, 15, 30, 290, 20, TC_GREY, NormalFont, 100); combo->AddString(_("Sequence of given order")); // "Reihenfolge der Auftraggebung" combo->AddString(_("After the following order")); // "Nach folgender Reihenfolge" // Eintrag in Combobox auswählen combo->SetSelection(GAMECLIENT.visual_settings.order_type); // Standard AddImageButton(10, 200, 250, 48, 30, TC_GREY, LOADER.GetImageN("io", 191), _("Default")); // Absendetimer, in 2s-Abschnitten wird jeweils das ganze als Netzwerknachricht ggf. abgeschickt AddTimer(11, 2000); list->SetSelection(0); }
iwBuildOrder::iwBuildOrder(const GameWorldViewer& gwv) : IngameWindow(CGI_BUILDORDER, IngameWindow::posLastOrCenter, Extent(320, 300), _("Building sequence"), LOADER.GetImageN("io", 5)), gwv(gwv), settings_changed(false) { ctrlList* list = AddList(0, DrawPoint(15, 60), Extent(150, 220), TC_GREY, NormalFont); // Liste füllen BuildOrders buildOrders = GAMECLIENT.visual_settings.build_order; for(auto& buildOrder : buildOrders) list->AddString(_(BUILDING_NAMES[buildOrder])); //-V807 // Nach ganz oben AddImageButton(1, DrawPoint(250, 194), Extent(48, 20), TC_GREY, LOADER.GetImageN("io", 215), _("Top")); // Hoch AddImageButton(2, DrawPoint(250, 216), Extent(48, 20), TC_GREY, LOADER.GetImageN("io", 33), _("Up")); // Runter AddImageButton(3, DrawPoint(250, 238), Extent(48, 20), TC_GREY, LOADER.GetImageN("io", 34), _("Down")); // Nach ganz unten AddImageButton(4, DrawPoint(250, 260), Extent(48, 20), TC_GREY, LOADER.GetImageN("io", 216), _("Bottom")); // Bild der Auswahl AddImage(5, DrawPoint(240, 150), LOADER.GetNationImage(gwv.GetPlayer().nation, 250 + buildOrders[0] * 5)); ctrlComboBox* combo = AddComboBox(6, DrawPoint(15, 30), Extent(290, 20), TC_GREY, NormalFont, 100); combo->AddString(_("Sequence of given order")); // "Reihenfolge der Auftraggebung" combo->AddString(_("After the following order")); // "Nach folgender Reihenfolge" // Eintrag in Combobox auswählen combo->SetSelection(GAMECLIENT.visual_settings.useCustomBuildOrder ? 1 : 0); // Standard AddImageButton(10, DrawPoint(200, 250), Extent(48, 30), TC_GREY, LOADER.GetImageN("io", 191), _("Default")); // Absendetimer, in 2s-Abschnitten wird jeweils das ganze als Netzwerknachricht ggf. abgeschickt AddTimer(11, 2000); list->SetSelection(0); }
//--------------------------------------------------------------------- __fastcall TBookmarkNameDialog::TBookmarkNameDialog(TStrings * PeerBookmarks, bool AllowShared) : TCustomDialog(HELP_LOCATION_PROFILE_ADD) { Caption = LoadStr(ADD_BOOKMARK_CAPTION); NameCombo = new TComboBox(this); NameCombo->AutoComplete = false; NameCombo->DropDownCount = Max(NameCombo->DropDownCount, 16); AddComboBox(NameCombo, CreateLabel(LoadStr(ADD_BOOKMARK_PROMPT))); NameCombo->Items = PeerBookmarks; if (AllowShared) { SharedCheck = new TCheckBox(this); SharedCheck->Caption = LoadStr(ADD_BOOKMARK_SHARED); AddButtonControl(SharedCheck); } else { SharedCheck = NULL; } }
iwSuggestPact::iwSuggestPact(const PactType pt, const GamePlayer& player, GameCommandFactory& gcFactory) : IngameWindow(CGI_SUGGESTPACT, IngameWindow::posLastOrCenter, Extent(320, 215), _(PACT_TITLES[pt]), LOADER.GetImageN("resource", 41)), pt(pt), player(player), gcFactory(gcFactory) { glArchivItem_Bitmap* image; switch(pt) { case TREATY_OF_ALLIANCE: image = LOADER.GetImageN("io", 61); break; case NON_AGGRESSION_PACT: image = LOADER.GetImageN("io", 100); break; default: image = nullptr; } // Bild als Orientierung, welchen Vertrag wir gerade bearbeiten if(image) this->AddImage(0, DrawPoint(55, 100), image); AddText(1, DrawPoint(100, 30), _("Contract type:"), COLOR_YELLOW, FontStyle{}, NormalFont); AddText(2, DrawPoint(100, 45), _(PACT_NAMES[pt]), COLOR_GREEN, FontStyle{}, NormalFont); AddText(3, DrawPoint(100, 70), _("To player:"), COLOR_YELLOW, FontStyle{}, NormalFont); AddText(4, DrawPoint(100, 85), player.name, player.color, FontStyle{}, NormalFont); AddText(5, DrawPoint(100, 110), _("Duration:"), COLOR_YELLOW, FontStyle{}, NormalFont); ctrlComboBox* combo = AddComboBox(6, DrawPoint(100, 125), Extent(190, 22), TC_GREEN2, NormalFont, 100); // Zeiten zur Combobox hinzufügen for(unsigned i = 0; i < NUM_DURATIONS; ++i) { combo->AddString(helpers::format("%s (%s)", DURATION_NAMES[i], GAMECLIENT.FormatGFTime(DURATIONS[i]))); } // Erstes Item in der Combobox vorerst auswählen combo->SetSelection(0); // Option "ewig" noch hinzufügen combo->AddString(_("Eternal")); AddTextButton(7, DrawPoint(110, 170), Extent(100, 22), TC_GREEN2, _("Confirm"), NormalFont); }
void LayoutStream::ActiveItemChanged(const QModelIndex& index) { Clear(); const QAbstractItemModel* sender = ((QItemSelectionModel*)QObject::sender())->model(); if (sender->data(index, DffModel::UserRole_Type) != DffModel::IDX_COMMAND) return; current_index = index; dff_model = (QAbstractItemModel*)sender; // TODO: not const-correct... u32 cmd_start = sender->data(index, DffModel::UserRole_CmdStart).toUInt(); cur_fifo_data.clear(); cur_fifo_data.append(sender->data(index, DffModel::UserRole_FifoData).toByteArray()); // TODO: Only retrieve this on dataChanged()... u8* fifo_data = (u8*)cur_fifo_data.data(); if (fifo_data[cmd_start] == GX_LOAD_BP_REG) { u32& cmddata = (*(u32*)&fifo_data[cmd_start+1]); edit_offset = cmd_start+1; edit_size = sizeof(u32); #define GET(type, name) type& name = *(type*)&cmddata if (fifo_data[cmd_start+1] == BPMEM_GENMODE) // 0x00 { GET(GenMode, mode); AddLabel(tr("Gen mode")).endl(); AddLabel(tr("numtexgens: ")).AddSpinBox(mode.numtexgens).endl(); AddLabel(tr("numcolchans: ")).AddSpinBox(mode.numcolchans).endl(); AddCheckBox(mode.ms_en, tr("Enable multisampling")).endl(); AddLabel(tr("numtexstages: ")).AddSpinBox(mode.numtexstages).endl(); AddLabel(tr("Culling: ")).AddComboBox(mode.cullmode, {tr("Disabled"), tr("Cull front facing"), tr("Cull back facing"), tr("Cull everything") }).endl(); AddLabel(tr("numindstages: ")).AddSpinBox(mode.numindstages).endl(); AddCheckBox(mode.zfreeze, tr("Enable zfreeze")).endl(); } else if (fifo_data[cmd_start+1] == BPMEM_SCISSORTL) // 0x20 { GET(X12Y12, coord); AddLabel(tr("Scissor rectangle")).endl(); AddLabel(tr("Left coordinate:")).AddSpinBox(coord.x).endl(); AddLabel(tr("Top coordinate:")).AddSpinBox(coord.y).endl(); } else if (fifo_data[cmd_start+1] == BPMEM_SCISSORBR) // 0x21 { GET(X12Y12, coord); AddLabel(tr("Scissor rectangle")).endl(); AddLabel(tr("Right coordinate:")).AddSpinBox(coord.x).endl(); AddLabel(tr("Bottom coordinate:")).AddSpinBox(coord.y).endl(); } else if (fifo_data[cmd_start+1] == BPMEM_ZMODE) // 0x40 { ZMode& zmode = *(ZMode*)&cmddata; AddLabel(tr("BPMEM_ZMODE")).endl(); AddCheckBox(zmode.testenable, tr("Enable depth testing")).endl(); AddLabel(tr("Depth test function: ")).AddComboBox(zmode.func, {tr("Never"), tr("Less"), tr("Equal"), tr("Less or equal"), tr("Greater"), tr("Not equal"), tr("Greater or equal"), tr("Always")}).endl(); AddCheckBox(zmode.updateenable, tr("Enable depth writing")).endl(); } else if (fifo_data[cmd_start+1] == BPMEM_BLENDMODE) // 0x41 { BlendMode& mode = *(BlendMode*)&cmddata; QStringList dstfactors = { tr("Zero"), tr("One"), tr("SRCCOL"), tr("1-SRCCOL"), tr("SRCALP"), tr("1-SRCALP"), tr("DSTALP"), tr("1-DSTALP") }; QStringList srcfactors = { tr("Zero"), tr("One"), tr("DSTCOL"), tr("1-DSTCOL"), tr("SRCALP"), tr("1-SRCALP"), tr("DSTALP"), tr("1-DSTALP") }; QStringList logicmodes = { "0", "s & d", "s & ~d", "s", "~s & d", "d", "s ^ d", "s | d", "~(s | d)", "~(s ^ d)", "~d", "s | ~d", "~s", "~s | d", "~(s & d)", "1" }; AddLabel(tr("BPMEM_BLENDMODE")).endl(); AddCheckBox(mode.blendenable, tr("Enable blending")).endl(); AddComboBox(mode.dstfactor, dstfactors).endl(); AddComboBox(mode.srcfactor, srcfactors).endl(); AddCheckBox(mode.subtract, tr("Subtract")).endl(); AddCheckBox(mode.logicopenable, tr("Enable logical operations")).endl(); AddLabel(tr("Logic operation: ")).AddComboBox(mode.logicmode, logicmodes).endl(); AddCheckBox(mode.colorupdate, tr("Enable color writing")).endl(); AddCheckBox(mode.alphaupdate, tr("Enable alpha writing")).endl(); AddCheckBox(mode.dither, tr("Enable dithering")).endl(); } else if (fifo_data[cmd_start+1] == BPMEM_ZCOMPARE) // 0x43 { GET(PE_CONTROL, ctrl); AddLabel(tr("Pixel Engine control")).endl(); AddLabel(tr("EFB pixel format: ")).AddComboBox(ctrl.pixel_format, {"RGB8 Z24", "RGBA6 Z24", "RGB565 Z16", "Z24", "Y8", "U8", "V8", "YUV420"}).endl(); AddLabel(tr("EFB depth format: ")).AddComboBox(ctrl.zformat, {tr("Linear"), tr("Near"), tr("Mid"), tr("Far"), tr("Inverse near"), tr("Inverse mid"), tr("Inverse far")}).endl(); AddCheckBox(ctrl.early_ztest, tr("Early depth test")).endl(); } else if (fifo_data[cmd_start+1] == BPMEM_TRIGGER_EFB_COPY) // 0x52 { UPE_Copy& copy = *(UPE_Copy*)&cmddata; AddLabel(tr("BPMEM_TRIGGER_EFB_COPY")).endl(); AddLabel(tr("Clamping: ")).AddCheckBox(copy.clamp0, tr("Top")).AddCheckBox(copy.clamp1, tr("Bottom")).endl(); AddLabel(tr("Convert from RGB to YUV: ")).AddCheckBox(copy.yuv).endl(); AddLabel(tr("Target pixel format: ")).AddComboBox(copy.target_pixel_format, {"Z4/I4/R4", "Z8/I8/R8", "IA4/RA4", "Z16/IA8/RA8", "RGB565", "RGB5A3", "Z24X8/RGBA8", "A8", "Z8/I8/R8", "Z8M/G8", "Z8L/B8"", Z16Rev/RG8", "Z16L/GB8", "", "", "" }).endl(); AddLabel(tr("Gamma correction: ")).AddComboBox(copy.gamma, {"1.0","1.7","2.2","Inv." }).endl(); AddLabel(tr("Downscale: ")).AddCheckBox(copy.half_scale).endl(); AddLabel(tr("Vertical scaling: ")).AddCheckBox(copy.scale_invert).endl(); AddLabel(tr("Clear: ")).AddCheckBox(copy.clear).endl(); AddLabel(tr("Copy to XFB: ")).AddCheckBox(copy.frame_to_field).endl(); AddLabel(tr("Copy as intensity: ")).AddCheckBox(copy.intensity_fmt).endl(); AddLabel(tr("Automatic color conversion: ")).AddCheckBox(copy.auto_conv).endl(); } else if (fifo_data[cmd_start+1] >= BPMEM_TEV_COLOR_ENV && fifo_data[cmd_start+1] <= BPMEM_TEV_ALPHA_ENV + 2*15) // 0xC0 - 0xDF { int stage = (fifo_data[cmd_start+1] - BPMEM_TEV_COLOR_ENV) / 2; QStringList bias_values = { tr("0"), tr("+0.5"), tr("-0.5"), tr("Use compare function") }; QStringList shift_values = { "1.0", "2.0", "4.0", "0.5" }; QStringList outputs = { "PREV", "REG0", "REG1", "REG2"}; QStringList operations = { tr("Add"), tr("Subtract")}; QStringList compare_functions = {"Greater", "Equal"}; if ((fifo_data[cmd_start+1] & 1) == 0) { GET(TevStageCombiner::ColorCombiner, comb); QStringList inputs = { tr("PREV color"), tr("PREV alpha"), tr("REG0 color"), tr("REG0 alpha"), tr("REG1 color"), tr("REG1 alpha"), tr("REG2 color"), tr("REG2 alpha"), tr("Texture color"), tr("Texture alpha"), tr("Rasterized color"), tr("Rasterized alpha"), tr("1"), tr("0.5"), tr("Konst color"), tr("0") }; AddLabel(tr("Color combiner for Tev stage %1").arg(stage)).endl(); AddLabel(tr("Input A: ")).AddComboBox(comb.a, inputs).endl(); AddLabel(tr("Input B: ")).AddComboBox(comb.b, inputs).endl(); AddLabel(tr("Input C: ")).AddComboBox(comb.c, inputs).endl(); AddLabel(tr("Input D: ")).AddComboBox(comb.d, inputs).endl(); AddLabel(tr("Bias: ")).AddComboBox(comb.bias, bias_values).endl(); AddLabel(tr("Operation: ")).AddComboBox(comb.op, operations).endl(); AddCheckBox(comb.clamp, tr("Clamp")).endl(); AddLabel(tr("Scale: ")).AddComboBox(comb.shift, shift_values).endl(); AddLabel(tr("Destination: ")).AddComboBox(comb.dest, outputs).endl(); // TODO: Changing these does not update the upper ones!! AddLabel(tr("Compare operation: ")).AddComboBox(comb.op, compare_functions).endl(); AddLabel(tr("Compared components: ")).AddComboBox(comb.shift, {"R", "GR", "BGR", "RGB per-channel"}).endl(); } else { GET(TevStageCombiner::AlphaCombiner, comb); QStringList inputs = { tr("PREV"), tr("REG0"), tr("REG1"), tr("REG2"), tr("Texture"), tr("Rasterizer"), tr("Konst"), tr("0") }; AddLabel(tr("Alpha combiner for Tev stage %1").arg(stage)).endl(); AddLabel(tr("Input A: ")).AddComboBox(comb.a, inputs).endl(); AddLabel(tr("Input B: ")).AddComboBox(comb.b, inputs).endl(); AddLabel(tr("Input C: ")).AddComboBox(comb.c, inputs).endl(); AddLabel(tr("Input D: ")).AddComboBox(comb.d, inputs).endl(); AddLabel(tr("Bias: ")).AddComboBox(comb.bias, bias_values).endl(); AddLabel(tr("Operation: ")).AddComboBox(comb.op, operations).endl(); AddCheckBox(comb.clamp, tr("Clamp")).endl(); AddLabel(tr("Scale: ")).AddComboBox(comb.shift, shift_values).endl(); AddLabel(tr("Destination: ")).AddComboBox(comb.dest, outputs).endl(); // TODO: Changing these does not update the upper ones!! AddLabel(tr("Compare operation: ")).AddComboBox(comb.op, compare_functions).endl(); AddLabel(tr("Compared components: ")).AddComboBox(comb.shift, {"R", "GR", "BGR", "A"}).endl(); AddLabel(tr("Rasterized input swap: ")).AddSpinBox(comb.rswap).endl(); AddLabel(tr("Texture input swap: ")).AddSpinBox(comb.tswap).endl(); } } else if (fifo_data[cmd_start+1] == BPMEM_FOGRANGE) // 0xE8 { GET(FogRangeParams::RangeBase, range); AddLabel(tr("Fog range adjustment")).endl(); AddCheckBox(range.Enabled, tr("Enable")).endl(); AddLabel(tr("Center: ")).AddSpinBox(range.Center).endl(); } else if (fifo_data[cmd_start+1] >= BPMEM_FOGRANGE + 1 && fifo_data[cmd_start+1] <= BPMEM_FOGRANGE + 5) // 0xE9 - 0xED { GET(FogRangeKElement, range); AddLabel(tr("Fog range adjustment factor group %1").arg(fifo_data[cmd_start+1]-BPMEM_FOGRANGE)).endl(); AddLabel(tr("Factor HI: ")).AddSpinBox(range.HI).endl(); AddLabel(tr("Factor LO: ")).AddSpinBox(range.LO).endl(); } else if (fifo_data[cmd_start+1] == BPMEM_FOGPARAM0) // 0xEE { GET(FogParam0, fog); AddLabel(tr("Fog parameter A")).endl(); AddLabel(tr("Mantissa: ")).AddSpinBox(fog.mantissa).endl(); AddLabel(tr("Exponent: ")).AddSpinBox(fog.exponent).endl(); AddLabel(tr("Sign: ")).AddComboBox(fog.sign, {tr("Positive"), tr("Negative")}).endl(); // TODO: _additionally_ add an input field for directly entering the floating point value! } else if (fifo_data[cmd_start+1] == BPMEM_FOGBMAGNITUDE) // 0xEF { AddLabel(tr("Fog parameter B")).endl(); // TODO! } else if (fifo_data[cmd_start+1] == BPMEM_FOGBEXPONENT) // 0xF0 { AddLabel(tr("Fog parameter B")).endl(); // TODO! } else if (fifo_data[cmd_start+1] == BPMEM_FOGPARAM3) // 0xF1 { GET(FogParam3, fog); AddLabel(tr("Fog configuration and fog parameter C")).endl(); AddLabel(tr("Mantissa: ")).AddSpinBox(fog.c_mant).endl(); AddLabel(tr("Exponent: ")).AddSpinBox(fog.c_exp).endl(); AddLabel(tr("Sign: ")).AddComboBox(fog.c_sign, {tr("Positive"), tr("Negative")}).endl(); AddLabel(tr("Projection mode: ")).AddComboBox(fog.c_sign, {tr("Perspective"), tr("Orthographic")}).endl(); AddLabel(tr("Fog mode: ")).AddComboBox(fog.c_sign, {tr("Disabled"), tr("Unknown"), tr("Linear"), tr("Unknown"), tr("Exponential"), tr("Exponential squared"), tr("Inverse exponential"), tr("Inverse exponential squared")}).endl(); } else if (fifo_data[cmd_start+1] == BPMEM_FOGCOLOR) // 0xF2 { GET(FogParams::FogColor, color); AddLabel(tr("Fog color")).endl(); AddLabel(tr("Red:")).AddSpinBox(color.r).endl(); AddLabel(tr("Green:")).AddSpinBox(color.g).endl(); AddLabel(tr("Blue:")).AddSpinBox(color.b).endl(); } else if (fifo_data[cmd_start+1] == BPMEM_ALPHACOMPARE) // 0xF3 { GET(AlphaTest, test); QStringList comp_funcs = { tr("Never"), tr("Less"), tr("Equal"), tr("Less or equal"), tr("Greater"), tr("Not equal"), tr("Greater or equal"), tr("Always"), }; QStringList alpha_ops = { tr("and"), tr("or"), tr("xor"), tr("equal"), }; AddLabel(tr("Alpha test")).endl(); AddLabel(tr("First reference value: ")).AddSpinBox(test.ref0).endl(); AddLabel(tr("First comparison function: ")).AddComboBox(test.comp0, comp_funcs).endl(); AddLabel(tr("Second reference value: ")).AddSpinBox(test.ref1).endl(); AddLabel(tr("Second comparison function: ")).AddComboBox(test.comp1, comp_funcs).endl(); AddLabel(tr("Combining function: ")).AddComboBox(test.logic, alpha_ops).endl(); } } }
dskHostGame::dskHostGame(const ServerType serverType) : Desktop(LOADER.GetImageN("setup015", 0)), hasCountdown_(false), serverType(serverType), wasActivated(false) { if(!GAMECLIENT.GetLuaFilePath().empty()) { lua.reset(new LuaInterfaceSettings()); if(!lua->LoadScript(GAMECLIENT.GetLuaFilePath())) { WINDOWMANAGER.Show(new iwMsgbox(_("Error"), _("Lua script was found but failed to load. Map might not work as expected!"), this, MSB_OK, MSB_EXCLAMATIONRED, 1)); lua.reset(); } else if(!lua->EventSettingsInit(serverType == ServerType::LOCAL, GAMECLIENT.IsSavegame())) { RTTR_Assert(GAMECLIENT.IsHost()); // This should be done first for the host so others won't even see the script LOG.lprintf("Lua was disabled by the script itself\n"); lua.reset(); // Double check... if(GAMECLIENT.IsHost()) GAMESERVER.RemoveLuaScript(); } } const bool readonlySettings = !GAMECLIENT.IsHost() || GAMECLIENT.IsSavegame() || (lua && !lua->IsChangeAllowed("general")); allowAddonChange = GAMECLIENT.IsHost() && !GAMECLIENT.IsSavegame() && (!lua || lua->IsChangeAllowed("addonsAll") || lua->IsChangeAllowed("addonsSome")); // Kartenname AddText(0, 400, 5, GAMECLIENT.GetGameName(), COLOR_YELLOW, glArchivItem_Font::DF_CENTER, LargeFont); // "Spielername" AddText(10, 95, 40, _("Player Name"), COLOR_YELLOW, glArchivItem_Font::DF_CENTER, NormalFont); // "Einstufung" AddText(11, 205, 40, _("Classification"), COLOR_YELLOW, glArchivItem_Font::DF_CENTER, NormalFont); // "Volk" AddText(12, 285, 40, _("Race"), COLOR_YELLOW, glArchivItem_Font::DF_CENTER, NormalFont); // "Farbe" AddText(13, 355, 40, _("Color"), COLOR_YELLOW, glArchivItem_Font::DF_CENTER, NormalFont); // "Team" AddText(14, 405, 40, _("Team"), COLOR_YELLOW, glArchivItem_Font::DF_CENTER, NormalFont); if (!IsSinglePlayer()) { // "Bereit" AddText(15, 465, 40, _("Ready?"), COLOR_YELLOW, glArchivItem_Font::DF_CENTER, NormalFont); // "Ping" AddText(16, 515, 40, _("Ping"), COLOR_YELLOW, glArchivItem_Font::DF_CENTER, NormalFont); } // "Swap" if(GAMECLIENT.IsHost() && !GAMECLIENT.IsSavegame()) AddText(24, 10, 40, _("Swap"), COLOR_YELLOW, glArchivItem_Font::DF_CENTER, NormalFont); // "Verschieben" (nur bei Savegames!) if(GAMECLIENT.IsSavegame()) AddText(17, 645, 40, _("Past player"), COLOR_YELLOW, glArchivItem_Font::DF_CENTER, NormalFont); if (!IsSinglePlayer()) { // Chatfenster AddChatCtrl(1, 20, 320, 360, 218, TC_GREY, NormalFont); // Edit für Chatfenster AddEdit(4, 20, 540, 360, 22, TC_GREY, NormalFont); } // "Spiel starten" AddTextButton(2, 600, 560, 180, 22, TC_GREEN2, (GAMECLIENT.IsHost() ? _("Start game") : _("Ready")), NormalFont); // "Zurück" AddTextButton(3, 400, 560, 180, 22, TC_RED1, _("Return"), NormalFont); // "Teams sperren" AddCheckBox(20, 400, 460, 180, 26, TC_GREY, _("Lock teams:"), NormalFont, readonlySettings); // "Gemeinsame Team-Sicht" AddCheckBox(19, 600, 460, 180, 26, TC_GREY, _("Shared team view"), NormalFont, readonlySettings); // "Random Start Locations" AddCheckBox(23, 600, 430, 180, 26, TC_GREY, _("Random start locations"), NormalFont, readonlySettings); // "Enhancements" AddText(21, 400, 499, _("Addons:"), COLOR_YELLOW, 0, NormalFont); AddTextButton(22, 600, 495, 180, 22, TC_GREEN2, allowAddonChange ? _("Change Settings...") : _("View Settings..."), NormalFont); ctrlComboBox* combo; // umgedrehte Reihenfolge, damit die Listen nicht dahinter sind // "Aufklärung" AddText(30, 400, 405, _("Exploration:"), COLOR_YELLOW, 0, NormalFont); combo = AddComboBox(40, 600, 400, 180, 20, TC_GREY, NormalFont, 100, readonlySettings); combo->AddString(_("Off (all visible)")); combo->AddString(_("Classic (Settlers 2)")); combo->AddString(_("Fog of War")); combo->AddString(_("FoW - all explored")); // "Waren zu Beginn" AddText(31, 400, 375, _("Goods at start:"), COLOR_YELLOW, 0, NormalFont); combo = AddComboBox(41, 600, 370, 180, 20, TC_GREY, NormalFont, 100, readonlySettings); combo->AddString(_("Very Low")); combo->AddString(_("Low")); combo->AddString(_("Normal")); combo->AddString(_("A lot")); // "Spielziel" AddText(32, 400, 345, _("Goals:"), COLOR_YELLOW, 0, NormalFont); combo = AddComboBox(42, 600, 340, 180, 20, TC_GREY, NormalFont, 100, readonlySettings); combo->AddString(_("None")); // Kein Spielziel combo->AddString(_("Conquer 3/4 of map")); // Besitz 3/4 des Landes combo->AddString(_("Total domination")); // Alleinherrschaft // Lobby game? if(LOBBYCLIENT.LoggedIn()) { // Then add tournament modes as possible "objectives" for(unsigned i = 0; i < TOURNAMENT_MODES_COUNT; ++i) { char str[512]; sprintf (str, _("Tournament: %u minutes"), TOURNAMENT_MODES_DURATION[i]); combo->AddString(str); } } // "Geschwindigkeit" AddText(33, 400, 315, _("Speed:"), COLOR_YELLOW, 0, NormalFont); combo = AddComboBox(43, 600, 310, 180, 20, TC_GREY, NormalFont, 100, !GAMECLIENT.IsHost()); combo->AddString(_("Very slow")); // Sehr Langsam combo->AddString(_("Slow")); // Langsam combo->AddString(_("Normal")); // Normal combo->AddString(_("Fast")); // Schnell combo->AddString(_("Very fast")); // Sehr Schnell // Karte laden, um Kartenvorschau anzuzeigen if(GAMECLIENT.GetMapType() == MAPTYPE_OLDMAP) { // Map laden libsiedler2::ArchivInfo mapArchiv; // Karteninformationen laden if(libsiedler2::loader::LoadMAP(GAMECLIENT.GetMapPath(), mapArchiv) == 0) { glArchivItem_Map* map = static_cast<glArchivItem_Map*>(mapArchiv.get(0)); ctrlPreviewMinimap* preview = AddPreviewMinimap(70, 560, 40, 220, 220, map); // Titel der Karte, Y-Position relativ je nach Höhe der Minimap festlegen, daher nochmals danach // verschieben, da diese Position sonst skaliert wird! ctrlText* text = AddText(71, 670, 0, _("Map: ") + GAMECLIENT.GetMapTitle(), COLOR_YELLOW, glArchivItem_Font::DF_CENTER, NormalFont); text->Move(text->GetX(false), preview->GetY(false) + preview->GetBottom() + 10); } } if (IsSinglePlayer() && !GAMECLIENT.IsSavegame()) { // Setze initial auf KI for (unsigned char i = 0; i < GAMECLIENT.GetPlayerCount(); i++) { if (!GAMECLIENT.GetPlayer(i).is_host) GAMESERVER.TogglePlayerState(i); } } // Alle Spielercontrols erstellen for(unsigned char i = GAMECLIENT.GetPlayerCount(); i; --i) UpdatePlayerRow(i - 1); //swap buttons erstellen if(GAMECLIENT.IsHost() && !GAMECLIENT.IsSavegame() && (!lua || lua->IsChangeAllowed("swapping"))) { for(unsigned char i = GAMECLIENT.GetPlayerCount(); i; --i) AddTextButton(80 + i, 5, 80 + (i - 1) * 30, 10, 22, TC_RED1, _("-"), NormalFont);; } // GGS aktualisieren, zum ersten Mal GAMECLIENT.LoadGGS(); this->CI_GGSChanged(GAMECLIENT.GetGGS()); LOBBYCLIENT.SetInterface(this); if(serverType == ServerType::LOBBY && LOBBYCLIENT.LoggedIn()) { LOBBYCLIENT.SendServerJoinRequest(); LOBBYCLIENT.SendRankingInfoRequest(GAMECLIENT.GetPlayer(GAMECLIENT.GetPlayerID()).name); for(unsigned char i = 0; i < GAMECLIENT.GetPlayerCount(); ++i) { GameClientPlayer& player = GAMECLIENT.GetPlayer(i); if(player.ps == PS_OCCUPIED) LOBBYCLIENT.SendRankingInfoRequest(player.name); } } GAMECLIENT.SetInterface(this); }
GtkWidget * create_EquConfig( void ) { GtkWidget * vbox1; GtkWidget * table1; GtkWidget * hbuttonbox1; GtkAccelGroup * accel_group; accel_group=gtk_accel_group_new(); EquConfig=gtk_window_new( GTK_WINDOW_TOPLEVEL ); gtk_widget_set_name( EquConfig,"EquConfig" ); gtk_object_set_data( GTK_OBJECT( EquConfig ),"EquConfig",EquConfig ); gtk_widget_set_usize( EquConfig,350,260 ); GTK_WIDGET_SET_FLAGS( EquConfig,GTK_CAN_DEFAULT ); gtk_window_set_title( GTK_WINDOW( EquConfig ),MSGTR_ConfigureEqualizer ); gtk_window_set_position( GTK_WINDOW( EquConfig ),GTK_WIN_POS_CENTER ); // gtk_window_set_modal( GTK_WINDOW( EquConfig ),TRUE ); gtk_window_set_policy( GTK_WINDOW( EquConfig ),FALSE,FALSE,FALSE ); gtk_window_set_wmclass( GTK_WINDOW( EquConfig ),"EquConfig","MPlayer" ); gtk_widget_realize( EquConfig ); gtkAddIcon( EquConfig ); vbox1=AddVBox( AddDialogFrame( EquConfig ),0 ); table1=gtk_table_new( 6,2,FALSE ); gtk_widget_set_name( table1,"table1" ); gtk_widget_show( table1 ); gtk_box_pack_start( GTK_BOX( vbox1 ),table1,TRUE,TRUE,0 ); gtk_table_set_row_spacings( GTK_TABLE( table1 ),4 ); gtk_table_set_col_spacings( GTK_TABLE( table1 ),4 ); gtk_table_attach( GTK_TABLE( table1 ), AddLabel( MSGTR_EQU_Channel1,NULL ), 0,1,0,1,(GtkAttachOptions)( GTK_FILL ),(GtkAttachOptions)( 0 ),0,0 ); gtk_table_attach( GTK_TABLE( table1 ), AddLabel( MSGTR_EQU_Channel2,NULL ), 0,1,1,2,(GtkAttachOptions)( GTK_FILL ),(GtkAttachOptions)( 0 ),0,0 ); gtk_table_attach( GTK_TABLE( table1 ), AddLabel( MSGTR_EQU_Channel3,NULL ), 0,1,2,3,(GtkAttachOptions)( GTK_FILL ),(GtkAttachOptions)( 0 ),0,0 ); gtk_table_attach( GTK_TABLE( table1 ), AddLabel( MSGTR_EQU_Channel4,NULL ), 0,1,3,4,(GtkAttachOptions)( GTK_FILL ),(GtkAttachOptions)( 0 ),0,0 ); gtk_table_attach( GTK_TABLE( table1 ), AddLabel( MSGTR_EQU_Channel5,NULL ), 0,1,4,5,(GtkAttachOptions)( GTK_FILL ),(GtkAttachOptions)( 0 ),0,0 ); gtk_table_attach( GTK_TABLE( table1 ), AddLabel( MSGTR_EQU_Channel6,NULL ), 0,1,5,6,(GtkAttachOptions)( GTK_FILL ),(GtkAttachOptions)( 0 ),0,0 ); CBChannel1=AddComboBox( NULL ); gtk_table_attach( GTK_TABLE( table1 ),CBChannel1,1,2,0,1,(GtkAttachOptions)( GTK_EXPAND | GTK_FILL ),(GtkAttachOptions)( 0 ),0,0 ); CEChannel1=GTK_COMBO( CBChannel1 )->entry; gtk_widget_set_name( CEChannel1,"CEChannel1" ); gtk_widget_show( CEChannel1 ); CBChannel2=AddComboBox( NULL ); gtk_table_attach( GTK_TABLE( table1 ),CBChannel2,1,2,1,2,(GtkAttachOptions)( GTK_EXPAND | GTK_FILL ),(GtkAttachOptions)( 0 ),0,0 ); CEChannel2=GTK_COMBO( CBChannel2 )->entry; gtk_widget_set_name( CEChannel2,"CEChannel2" ); gtk_widget_show( CEChannel2 ); CBChannel3=AddComboBox( NULL ); gtk_table_attach( GTK_TABLE( table1 ),CBChannel3,1,2,2,3,(GtkAttachOptions)( GTK_EXPAND | GTK_FILL ),(GtkAttachOptions)( 0 ),0,0 ); CEChannel3=GTK_COMBO( CBChannel3 )->entry; gtk_widget_set_name( CEChannel3,"CEChannel3" ); gtk_widget_show( CEChannel3 ); CBChannel4=AddComboBox( NULL ); gtk_table_attach( GTK_TABLE( table1 ),CBChannel4,1,2,3,4,(GtkAttachOptions)( GTK_EXPAND | GTK_FILL ),(GtkAttachOptions)( 0 ),0,0 ); CEChannel4=GTK_COMBO( CBChannel4 )->entry; gtk_widget_set_name( CEChannel4,"CEChannel4" ); gtk_widget_show( CEChannel4 ); CBChannel5=AddComboBox( NULL ); gtk_table_attach( GTK_TABLE( table1 ),CBChannel5,1,2,4,5,(GtkAttachOptions)( GTK_EXPAND | GTK_FILL ),(GtkAttachOptions)( 0 ),0,0 ); CEChannel5=GTK_COMBO( CBChannel5 )->entry; gtk_widget_set_name( CEChannel5,"CEChannel5" ); gtk_widget_show( CEChannel5 ); CBChannel6=AddComboBox( NULL ); gtk_table_attach( GTK_TABLE( table1 ),CBChannel6,1,2,5,6,(GtkAttachOptions)( GTK_EXPAND | GTK_FILL ),(GtkAttachOptions)( 0 ),0,0 ); CEChannel6=GTK_COMBO( CBChannel6 )->entry; gtk_widget_set_name( CEChannel6,"CEChannel6" ); gtk_widget_show( CEChannel6 ); AddHSeparator( vbox1 ); hbuttonbox1=AddHButtonBox( vbox1 ); gtk_button_box_set_layout( GTK_BUTTON_BOX( hbuttonbox1 ),GTK_BUTTONBOX_END ); gtk_button_box_set_spacing( GTK_BUTTON_BOX( hbuttonbox1 ),10 ); ecOk=AddButton( MSGTR_Ok,hbuttonbox1 ); ecCancel=AddButton( MSGTR_Cancel,hbuttonbox1 ); gtk_widget_add_accelerator( ecOk,"clicked",accel_group,GDK_Return,0,GTK_ACCEL_VISIBLE ); gtk_widget_add_accelerator( ecCancel,"clicked",accel_group,GDK_Escape,0,GTK_ACCEL_VISIBLE ); gtk_signal_connect( GTK_OBJECT( EquConfig ),"destroy",GTK_SIGNAL_FUNC( WidgetDestroy ),&EquConfig ); gtk_signal_connect( GTK_OBJECT( ecOk ),"clicked",GTK_SIGNAL_FUNC( ecButtonReleased ),(void *)1 ); gtk_signal_connect( GTK_OBJECT( ecCancel ),"clicked",GTK_SIGNAL_FUNC( ecButtonReleased ),(void *)0 ); gtk_window_add_accel_group( GTK_WINDOW( EquConfig ),accel_group ); return EquConfig; }
/** * Konstruktor von @p iwAIDebug. * * @author jh */ iwAIDebug::iwAIDebug(GameWorldViewer * const gwv) : IngameWindow(CGI_OPTIONSWINDOW, 0xFFFF, 0xFFFF, 300, 515, _("AI Debug"), LOADER.GetImageN("resource", 41)), gwv(gwv) { // Nur Host hat Zugriff auf die Daten über die KI-Spieler if (!GameClient::inst().IsHost()) { Close(); return; } // Erstmal die AIs einsammeln for (unsigned i=0; i<GameClient::inst().GetPlayerCount(); ++i) { AIPlayerJH *ai = dynamic_cast<AIPlayerJH *>(GameServer::inst().GetAIPlayer(i)); if (ai) ais.push_back(ai); } // Wenn keine KI-Spieler, schließen if (ais.size() == 0) { Close(); return; } ctrlComboBox *players = AddComboBox(0, 15, 30, 250, 20, TC_GREY, NormalFont, 100); for (std::vector<AIPlayerJH *>::iterator it = ais.begin(); it != ais.end(); it++) { players->AddString(_((*it)->GetPlayerName())); } selection = 0; players->SetSelection(selection); ctrlComboBox *overlays = AddComboBox(1, 15, 60, 250, 20, TC_GREY, NormalFont, 100); overlays->AddString("None"); overlays->AddString("BuildingQuality"); overlays->AddString("Reachability"); overlays->AddString("Farmed"); overlays->AddString("Wood"); overlays->AddString("Stones"); overlays->AddString("Gold"); overlays->AddString("Ironore"); overlays->AddString("Coal"); overlays->AddString("Granite"); overlays->AddString("Plantspace"); overlays->AddString("Borderland"); overlays->AddString("Fish"); overlay = 0; overlays->SetSelection(overlay); //jobs = AddList(1, 15, 60, 120, 220, TC_GREY, NormalFont); text = AddText(2, 15, 120, "", COLOR_YELLOW, glArchivItem_Font::DF_LEFT|glArchivItem_Font::DF_TOP, LOADER.GetFontN("resource", 0)); //for(unsigned char i = 0; i < 31; ++i) // list->AddString(_(BUILDING_NAMES[GAMECLIENT.visual_settings.build_order[i]])); //list->SetSelection(0); }
void PaletteSubDialog::PaletteLayout() { if(m_rowArea != NULL){ GetInt32(m_rowArea, m_rows); } if(m_layoutArea != NULL){ GetInt32(m_layoutArea, m_layout); } if(m_labelCheckArea != NULL){ GetBool(m_labelCheckArea,m_showLabel); } if(m_searchText != NULL){ GetString(m_searchText, m_searchString); } if(m_showControls && !m_controlsShown){ LayoutFlushGroup(1); GroupBegin(51, BFV_SCALEFIT, 1, 0, String(), 0); m_nameArea = AddEditText(IDC_NAME, BFH_SCALEFIT); SetString(IDC_NAME, m_palette.m_name); GroupBegin(123,BFH_SCALEFIT,0,1,String(),0); String rowText("Rows"); if(m_layout == 1){ rowText = String("Columns"); } AddStaticText(9, BFH_LEFT, 0, 0, rowText, 0); m_rowArea = AddEditNumberArrows(IDC_ROWS, BFH_RIGHT); GroupEnd(); SetInt32(m_rowArea, m_rows,1,99); m_layoutArea = AddComboBox(IDC_LAYOUT_DIRECTION,BFH_LEFT); AddChild(m_layoutArea, 0, String("Horizontal")); AddChild(m_layoutArea, 1, String("Vertical")); SetInt32(m_layoutArea, m_layout); m_labelCheckArea = AddCheckbox(IDC_LABELCHECKBOX,BFH_LEFT,0,0,String("Show Labels")); SetBool(m_labelCheckArea, m_showLabel); AddStaticText(IDC_FILTERLABEL, BFH_CENTER, 0, 0, String("Filter:"), 0); m_searchText = AddEditText(IDC_SEARCHTEXT, BFH_SCALEFIT); SetString(m_searchText, m_searchString); m_controlsShown = TRUE; GroupBegin(142,BFV_SCALEFIT,1,0,String(),0); GroupBorderNoTitle(BORDER_THIN_IN); AddButton(IDC_CREATEMATERIAL, BFH_CENTER, 0, 0, String("Create Materials")); m_linkColor = AddCheckbox(IDC_LINKMATERIALS,BFH_LEFT,0,0,String("Link colors")); GroupEnd(); AddButton(IDC_HIDE, BFH_CENTER, 0, 0, String("Hide Controls")); GroupEnd(); GroupBegin(3,BFV_SCALEFIT,1,0,String(),0); m_actionPopup = AddPopupButton(3,BFH_LEFT); m_trashArea = AddUserArea(4, BFH_CENTER); AttachUserArea(m_trash, m_trashArea); GroupEnd(); LayoutChanged(1); } if(!m_showControls && m_controlsShown){ LayoutFlushGroup(1); GroupBegin(3,BFV_SCALEFIT,1,0,String(),0); m_actionPopup = AddPopupButton(3,BFH_LEFT); m_trashArea = AddUserArea(4, BFH_CENTER); AttachUserArea(m_trash, m_trashArea); GroupEnd(); LayoutChanged(1); m_rowArea = NULL; m_layoutArea = NULL; m_labelCheckArea = NULL; m_searchText = NULL; m_controlsShown = FALSE; } LayoutFlushGroup(6); LayoutPalette(); LayoutChanged(6); }