def __init__(self, scopeList): self.scopeList = scopeList glass.GlassContainer.__init__(self) self.setOpaque(False) self.buffer = MessageBuffer(self.scopeList) for i in range(10): self.buffer.addRow(" ") self.buffer.setEditable(False) self.buffer.showTime(True) self.buffer.addListener(self) self.scroll = glass.GlassScrollArea(self.buffer) self.scroll.setScrollPolicy(glass.GlassScrollArea.SHOW_NEVER, glass.GlassScrollArea.SHOW_ALWAYS) self.scroll.setAutoscroll(True) self.add(self.scroll) self.buffer.parentScroll = self.scroll self.input = glass.GlassTextField() self.input.setForegroundColor(white) self.input.setBackgroundColor(glass.Color(0, 0, 0, 128)) self.add(self.input) self.input.addKeyListener(self) self.bShowInput = False
def show_demoselect(): w = glass.GUI_GetWidget('mainmenu:Demos'); if w != None: w.setVisible(True) return window = glass.GlassWindow('Demos'); window.setTitleVisible(0); window.setSizePct(.7, .4); window.centerWindow(); demos = File_ListFiles("/demos/", "*.demo", 0); demoList = glass.GlassListBox(); demoList.setSizePct(200,200); for f in demos: demoList.addItem(f[7:]); demoScroll = glass.GlassScrollArea(demoList); window.add(demoScroll); demoScroll.setPositionPct(.01, .03); demoScroll.setSizePct(.5, .9); demoScroll.setId('list'); demoPlay = glass.GlassButton("Play Demo"); demoPlay.setClickAction('thelist = glass.GUI_GetWidgetTyped("mainmenu:Demos:list", glass.GlassScrollArea).getContent(glass.GlassListBox);demo=thelist.getItem(thelist.getSelected());Demo_Play(demo[:demo.rfind(".")]);'); window.add(demoPlay); demoPlay.setPositionPct(.6, .85); demoClose = glass.GlassButton("Close"); demoClose.setClickAction("glass.GUI_GetWidget('mainmenu:Demos').setVisible(False);"); window.add(demoClose); demoClose.setPositionPct(.8, .85); glass.GUI_ScreenAddWidget("mainmenu", window);
def __init__(self, team, side, w, h): DefaultContainer.__init__(self) #self.setBackgroundColor(glass.Color(0,0,0,128)); self.team = team self.setSize(w, h) self.side = side #Is it on the left or right? self.rowPlayerDict = {} # {row: player} self.kills = DefaultLabel("^icon ../../gui/game/images/kills^^g999") #str(self.team.getKills())); #self.kills.setWidth(int(self.getWidth()*0.15)); self.add(self.kills) self.description = DefaultLabel("") self.add(self.description) if self.team.getRace() == "human": self.description.setCaption("The Legion of Man") else: self.description.setCaption("The Beast Horde") self.scrollTeamsArrow = glass.ImageButton() self.scrollTeamsArrow.setClickAction("spechud.lobby.switchTeams('" + self.side + "')") self.add(self.scrollTeamsArrow) self.comm = DefaultLabel("Comm: ^rNO COMMANDER") self.listContainer = DefaultContainer() self.listContainer.setBackgroundColor(glass.Color(0, 0, 0, 128)) self.add(self.listContainer) self.listContainer.setSizePct(0.8, 0.9) self.list = DefaultTableList() self.list.padding = 5 self.list.setSelectionColor(glass.Color(70, 40, 40)) self.listContainer.add(self.list, 0, 0) self.enlist = DefaultButton("Enlist now!") self.enlist.setClickAction("CL_RequestTeam(" + str(team.teamId) + ");CL_RequestLoadout();") self.enlist.setHeight(self.list.getRowHeight()) self.enlist.setWidth(self.listContainer.getWidth()) self.scroll = glass.GlassScrollArea(self.list) self.scroll.setBackgroundColor(transparency) self.scroll.setSize(self.listContainer.getWidth(), self.listContainer.getHeight()) self.scroll.setHorizontalScrollPolicy(glass.GlassScrollArea.SHOW_NEVER) self.listContainer.add(self.scroll, 0, 0) # build and position everything: self.build() self.changeSide(self.side)
def build_controls(self,topTC): #these heights are broken again tabHolder = glass.GlassTabbedContainer(); tabHolder.setForegroundColor(white); tabHolder.setSize(topTC.getWidth(),topTC.getTabArea().height); tabs = []; names = ("Player","Commander","Spectator"); for i in range(3): table = GlassTablePlus(); table.horizontalJustification = glass.Graphics.LEFT; table.setFrame(0); self.createControls(table, getBindActions(i), i); table.adjustSizeTo(); scrollArea = glass.GlassScrollArea(table); scrollArea.setSize(table.getWidth(),table.getHeight()); internalHeight = tabHolder.getTabArea().height; bar = scrollArea.getScrollbarWidth(); scrollArea.setWidth(min( scrollArea.getWidth() + bar , tabHolder.getWidth() )); scrollArea.setHeight(min( scrollArea.getHeight() + bar , internalHeight )); tabHolder.addTab(names[i], scrollArea); table = GlassTablePlus(); table.horizontalJustification = glass.Graphics.LEFT; table.setFrame(0); resets = [ glass.GlassButton("Player"), glass.GlassButton("Commander"), glass.GlassButton("Spectator")]; for i, button in enumerate(resets): button.setClickAction("defaultBindProfile("+str(i)+");"); table.addRow("Reset to defaults: ", *resets); table.adjustSizeTo(); scrollArea = glass.GlassScrollArea(table); scrollArea.setSize(table.getWidth(),table.getHeight()); scrollArea.setWidth(min( scrollArea.getWidth() + bar , tabHolder.getWidth() )); scrollArea.setHeight(min( scrollArea.getHeight() + bar , internalHeight )); tabHolder.addTab("Other", scrollArea); return tabHolder;
def build_sound(self): table = GlassTablePlus(); table.setFrame(0); table.horizontalJustification = glass.Graphics.LEFT; MasterVolume = glass.GlassSlider(); MasterVolume.linkCvar( "sound_mastervolume" ); MasterVolume.setScaleEnd(1.0); MasterVolume.setScaleStart(0); table.addRow("Master Volume", MasterVolume); MusicVolume = glass.GlassSlider(); MusicVolume.linkCvar( "sound_musicvolume" ); MusicVolume.setScaleEnd(1.0); MusicVolume.setScaleStart(0); table.addRow("Music Volume", MusicVolume); SoundVolume = glass.GlassSlider(); SoundVolume.linkCvar( "sound_sfxVolume" ); SoundVolume.setScaleEnd(1.0); SoundVolume.setScaleStart(0); TestSoundButton = glass.GlassButton("Test"); TestSoundButton.setClickAction("Sound_PlaySound('/sound/human/player/male/good_game_1.ogg');"); table.addRow("Sound Effect Volume", SoundVolume,TestSoundButton); #TODO play this sound when the slider loses focus, ie when the car is released softwareMode = glass.GlassCheckbox(); softwareMode.linkCvar("sound_softwareMode"); table.addRow("Software Mode", softwareMode); mixrate = glass.GlassDropMenu(); mixrate.linkCvar("sound_mixrate"); mixrate.addOption("22050", "22050") mixrate.addOption("44100", "44100") mixrate.addOption("48000", "48000") table.addRow("Sampling Rate", mixrate); channels = glass.GlassSpinner(); channels.linkCvar("sound_numChannels"); channels.setStep(32); channels.setWidth(50); table.addRow("Sound Channels", channels); VoIPVolume = glass.GlassSlider(); VoIPVolume.linkCvar( "sound_voipvolume" ); VoIPVolume.setScaleEnd(1.0); VoIPVolume.setScaleStart(0); table.addRow("Voice Volume", VoIPVolume); table.adjustSizeTo(); tableHolder = glass.GlassScrollArea(table); tableHolder.setSize(table.getWidth(), table.getHeight()); return tableHolder;
def __init__(self): glass.GlassContainer.__init__(self) gblBuddyManager.addList(self) self.setSizePct(self.WIDTH_PROPORTION, self.HEIGHT_PROPORTION) self.toggle = glass.GlassButton("0") #either add in a custom button background here, including the buddy logo #or just bodge it with ^icon^ #wtf was I thinking, GlassButton accepts an icon param self.toggle.setY(self.getHeight() - self.toggle.getHeight()) self.toggle.addMouseListener(self) self.add(self.toggle) self.window = glass.GlassWindow() self.window.setCaption("Buddies") self.window.setAlpha(0) self.window.setVisible(False) self.window.setMovable(0) self.window.setSize(self.getWidth(), self.getHeight() - self.toggle.getHeight()) self.window.setPosition(0, 0) self.add(self.window) ca = self.window.getChildrenArea() self.new = glass.ImageButton() self.new.setImage("/gui/standard/icons/plus.s2g") self.new.setX(ca.width - self.PADDING - self.new.getWidth()) self.new.addMouseListener(self) self.window.add(self.new) self.input = glass.GlassTextField("Add new...") self.input.setX(self.PADDING) self.input.setWidth(self.new.getX() - self.PADDING - self.input.getX()) self.input.addMouseListener(self) self.window.add(self.input) y2 = max(self.new.getHeight(), self.input.getHeight()) y1 = ca.height - y2 self.new.setY(y1 + (y2 - self.new.getHeight()) // 2) self.input.setY(y1 + (y2 - self.input.getHeight()) // 2) self.listbox = glass.GlassListBox() self.listbox.setBackgroundColor(transparency) self.scroll = glass.GlassScrollArea(self.listbox) self.scroll.setSize(ca.width, y1 - self.PADDING) self.window.add(self.scroll) self.listbox.setWidth(ca.width - self.scroll.getScrollbarWidth())
def __init__(self): glass.GlassContainer.__init__(self) self.setBackgroundColor(transparency) #self.setSizePct(0.45, 0.2); #self.centerWindow(); #self.setVisible(0); #self.setAlpha(128); self.itemsContainer = glass.GlassContainer() self.itemsContainer.setSize(300, 150) self.scrollArea = glass.GlassScrollArea(self.itemsContainer) self.scrollArea.setScrollPolicy(glass.GlassScrollArea.SHOW_AUTO, glass.GlassScrollArea.SHOW_NEVER) self.add(self.scrollArea) self.items = []
def __init__(self): glass.GlassWindow.__init__(self); self.setCaption("Research Queue"); self.setBackgroundColor(black); self.setSizePct(0.45, 0.2); self.centerWindow(); self.setVisible(False); self.setAlpha(128); self.setTitleVisible(0); self.itemsContainer = glass.GlassContainer(); self.itemsContainer.setSize(300,150); self.scrollArea = glass.GlassScrollArea(self.itemsContainer); self.scrollArea.setScrollPolicy( glass.GlassScrollArea.SHOW_AUTO , glass.GlassScrollArea.SHOW_NEVER ); self.add(self.scrollArea); self.scrollArea.setSizePct(1,.85); self.items = [];
def __init__(self): ChatBox.__init__(self, [ "msg_public", "msg_team", "msg_private", "msg_squad", "msg_clan", "msg_server", "_HCBinternal" ]) self.buffer.setFadeTop(True) #history messages self.historyBuffer = MessageBuffer([ "msg_public", "msg_team", "msg_private", "msg_squad", "msg_clan", "msg_server", "_HCBinternal" ]) self.historyBuffer.setEditable(False) scroll = glass.GlassScrollArea(self.historyBuffer) scroll.setScrollPolicy(glass.GlassScrollArea.SHOW_NEVER, glass.GlassScrollArea.SHOW_ALWAYS) scroll.setAutoscroll(True) self.add(scroll) self.historyBuffer.parentScroll = scroll scroll.setVisible(False) for i in range(40): self.historyBuffer.addRow(" ") self.scroll.setVerticalScrollPolicy(glass.GlassScrollArea.SHOW_NEVER) self.input.setVisible(False) self.inputType = glass.GlassLabel("(squad)") self.inputType.setAlignment(glass.Graphics.RIGHT) self.add(self.inputType) self.history = RingBuffer(16) self.historyIndex = 0 self.chatType = "all" self.replyTarget = "" self.oldHeight = 0 self.typing = False self.fade = ActionSequence(savage.WaitAction(5000), savage.CheckAction(self.typing, False), FadeOutAction(self)) self.showHistory(False)
def build_network(self): table = GlassTablePlus(); table.setFrame(0); table.horizontalJustification = glass.Graphics.LEFT; preset = glass.GlassDropMenu(); preset.addOption("Dial-up","dialup"); preset.addOption("ISDN","isdn"); preset.addOption("DSL/Cable","dslcable"); preset.addOption("LAN","lan"); preset.addSelectionListener(self); table.addRow( "Presets:", preset); bandwidth = glass.GlassSpinner(); bandwidth.linkCvar("netBPS"); bandwidth.setStep(200); bandwidth.setWidth(50); table.addRow("Bandwidth", bandwidth); netfps = glass.GlassSpinner(); netfps.linkCvar("netFrames"); netfps.setStep(1); table.addRow("Updates per second:", netfps); maxPacketSize = glass.GlassSpinner(); maxPacketSize.linkCvar("maxPacketSize"); maxPacketSize.setStep(20); table.addRow("Max. Packet Size:", maxPacketSize); lagcompensation = glass.GlassDropMenu(); lagcompensation.linkCvar("cl_lerpshift"); lagcompensation.addOption("Off","0"); lagcompensation.addOption("Low", "0.1"); #TODO test these values lagcompensation.addOption("Medium", "0.2"); lagcompensation.addOption("High", "0.4"); table.addRow("Lag Compensation", lagcompensation); table.adjustSizeTo(); tableHolder = glass.GlassScrollArea(table); tableHolder.setSize(table.getWidth(), table.getHeight()); return tableHolder;
def __init__(self): DefaultWindow.__init__(self) self.setFrameStyle("TrimmedEight") self.setMovable(True) self.setSize(500, 300) self.setVisible(False) self.players = [] self.setBackgroundColor(windowBackground) # top bar: top = DefaultContainer() top.setSize(self.getWidth(), 35) top.setBackgroundColor(windowTop) self.add(top) title = DefaultLabel("Player Roster") title.setForegroundColor(tangoYellow) title.setFont(fontSizeLarge) top.add(title, "center", "center") self.list = DefaultTable() self.list.setFrame(False) self.clearList() # self.add(self.list,0,0) self.scroll = glass.GlassScrollArea(self.list) self.scroll.setSize(self.getWidth() - 5, self.getHeight() - 10) self.scroll.setBackgroundColor(transparency) self.add(self.scroll, 0, 42) self.build() gblEventHandler.addGameListener(self)
def __init__(self, name, scopeList, isConference=False): glass.GlassContainer.__init__(self) self.setOpaque(False) self.jid = name self.isConference = isConference self.scopeList = scopeList self.buffer = MessageBuffer(self.scopeList) self.buffer.setEditable(False) self.buffer.showTime(True) self.scroll = glass.GlassScrollArea(self.buffer) self.scroll.setScrollPolicy(glass.GlassScrollArea.SHOW_NEVER, glass.GlassScrollArea.SHOW_ALWAYS) self.scroll.setAutoscroll(False) self.add(self.scroll) self.buffer.parentScroll = self.scroll # extending the input box to make it look a bit better: self.inputContainer = DefaultContainer() self.inputContainer.setBackgroundColor(glass.Color(23, 14, 13)) self.add(self.inputContainer) self.div = DefaultContainer() self.div.setBackgroundColor(glass.Color(30, 26, 25)) self.inputContainer.add(self.div) self.input = glass.GlassTextField() self.input.setForegroundColor(white) self.input.setBackgroundColor(glass.Color(0, 0, 0, 128)) self.inputContainer.add(self.input) self.input.addKeyListener(self) self.bShowInput = False gblXMPPHandler.addListener(self)
def __init__(self): DefaultWindow.__init__(self); self.setFrameStyle("TrimmedEight"); self.setBackgroundColor(windowBackground); self.lastClickTime = 0; self.lastClickSelect = -1; self.activeList = None; self.setSize(200, 500); self.widgets = {}; # {"group": grouplist} # The dict that keeps trac of the contacts self.contacts = {}; # {group: {'jid': name, "status": status }} top = DefaultContainer(); self.add(top, 0, 0); top.setSize(self.getWidth(), 35); top.setBackgroundColor(windowTop); title = DefaultLabel("Buddy List"); title.setForegroundColor(tangoYellowDark); title.setFont(fontSizeLarge); top.add(title, "center", "center"); # Init the group tabs self.rosterGroup = glass.GlassTabbedContainer(); self.rosterGroup.setWidth(self.getWidth() - 5); self.scroll = glass.GlassScrollArea(self.rosterGroup); self.scroll.setSize(self.getWidth() - 5, self.getHeight() - 60); self.scroll.setBackgroundColor(transparency); self.scroll.setHorizontalScrollPolicy(glass.GlassScrollArea.SHOW_NEVER); self.add(self.scroll, 0, 35); #self.buildList(); # control bar self.diff = inputLineHeight + 2 self.controlBar = DefaultContainer(); self.controlBar.setBackgroundColor(glass.Color(0,0,0,128)); self.controlBar.setSize(self.getWidth(), inputLineHeight + 35); self.add(self.controlBar, 0, self.getHeight() - self.controlBar.getHeight() + self.diff); self.addFriend = DefaultButton(" + "); self.addFriend.setSize(20, 20); self.addFriend.addActionListener(self); self.deleteFriend = DefaultImageButton(); self.deleteFriend.setImage("icons/logout.png"); self.deleteFriend.setSize(20, 20); self.deleteFriend.setCaption("delete"); self.deleteFriend.addActionListener(self); self.deleteOverlay = DefaultContainer(); self.deleteOverlay.setBackgroundColor(glass.Color(0,0,0,200)); self.deleteOverlay.setSize(20,20); self.stats = DefaultImageButton(); #stats.setClickAction("mainmenu.showModule('stats')"); TODO self.stats.setImage("icons/stats.png"); self.stats.setSize(20, 20); self.stats.setCaption("stats"); self.stats.addActionListener(self); self.statsOverlay = DefaultContainer(); self.statsOverlay.setBackgroundColor(glass.Color(0,0,0,200)); self.statsOverlay.setSize(20,20); self.match = DefaultImageButton(); #stats.setClickAction("mainmenu.showModule('stats')"); TODO self.match.setImage("icons/lobby.png"); self.match.setSize(20, 20); self.match.setCaption("match"); self.match.addActionListener(self); self.matchOverlay = DefaultContainer(); self.matchOverlay.setBackgroundColor(glass.Color(0,0,0,200)); self.matchOverlay.setSize(20,20); self.controlBar.add(self.addFriend, 5, 5); self.controlBar.add(self.deleteFriend, 30, 5); self.controlBar.add(self.stats, 55, 5); self.controlBar.add(self.match, 80, 5); self.controlBar.add(self.deleteOverlay, 30, 5); self.controlBar.add(self.statsOverlay, 55, 5); self.controlBar.add(self.matchOverlay, 80, 5); self.enterName = DefaultTextBox(); self.enterName.setFont(fontSizeSmall); self.controlBar.add(self.enterName, 5, 30 ); self.enterName.setSize(162, inputLineHeight); self.invite = DefaultButton(" Add"); self.invite.setFont(fontSizeSmall); self.controlBar.add(self.invite); self.invite.setSize(inputLineHeight, inputLineHeight); self.invite.setPosition(self.getWidth() - self.invite.getWidth() - 12, self.enterName.getY()); self.invite.addActionListener(self); self.connectingOverlay = DefaultContainer(); self.add(self.connectingOverlay, 0, 0); self.connectingOverlay.setSize(self.getWidth(), self.getHeight()); self.connectingOverlay.setBackgroundColor(glass.Color(0,0,0,200)); self.loginOverlayLabel = DefaultLabel(""); self.connectingOverlay.add(self.loginOverlayLabel, "center", "center"); gblXMPPHandler.addListener(self);
def build_config(self): table = GlassTablePlus(); table.setFrame(0); table.horizontalJustification = glass.Graphics.LEFT; self.nickname = glass.GlassTextField( cvar_get("name") ); self.nickname.setSize(150, 25); table.addRow( "Nickname", self.nickname ); blockLeap = glass.GlassCheckbox(); blockLeap.linkCvar("cl_blockLeapSwitch"); table.addRow("Block / Leap Switch", blockLeap); chatFilter = glass.GlassCheckbox(); chatFilter.linkCvar("cl_filter_filter"); table.addRow( "Chat Filter", chatFilter ); chatTimestamp = glass.GlassDropMenu(); chatTimestamp.linkCvar("gui_chatTimestamp"); chatTimestamp.addOption("Off","0"); chatTimestamp.addOption("Game Time","1"); chatTimestamp.addOption("Local Time","2"); table.addRow("Chat Timestamp", chatTimestamp); showFPS = glass.GlassDropMenu(); showFPS.linkCvar("cl_showfps"); showFPS.addOption("Off","0"); showFPS.addOption("Instant","1"); showFPS.addOption("Average","2"); showFPS.addOption("Both","3"); table.addRow("Show FPS", showFPS); showServerFPS = glass.GlassCheckbox(); showServerFPS.linkCvar("cl_showfpsserver"); table.addRow("Show Server FPS",showServerFPS); showPing = glass.GlassCheckbox(); showPing.linkCvar("cl_showping"); table.addRow("Show Ping", showPing); showTeamStatus = glass.GlassCheckbox(); showTeamStatus.linkCvar("gui_showteamstatus"); table.addRow("Show Team Status",showTeamStatus); autoRecordDemos = glass.GlassCheckbox(); autoRecordDemos.linkCvar("cl_autoRecordDemo"); table.addRow("Auto-Record Demos",autoRecordDemos); showSquadMates = glass.GlassCheckbox(); showSquadMates.linkCvar("cl_show_squad"); table.addRow("Show Squad Mates",showSquadMates); #not sure if this is the right var #there's also cl_show_squad_comm cameraView = glass.GlassDropMenu(); cameraView.linkCvar("cl_cameraPosLerp"); cameraView.addOption("Smoothed","6"); cameraView.addOption("Snappy","9999"); table.addRow("Camera Snap",cameraView); cameraSmoothing = glass.GlassDropMenu(); cameraSmoothing.linkCvar("cl_cameraAngleLerp"); cameraSmoothing.addOption("Snap","9999"); cameraSmoothing.addOption("Quick","50"); cameraSmoothing.addOption("Smooth","35"); cameraSmoothing.addOption("Very Smooth","15"); cameraSmoothing.addOption("Demo Spectate","5"); #based on two things: XR GUI and that I like 15 myself :P #with that said, people like to tweak this var a lot, perhaps it ought to be a slider table.addRow("Camera Smoothing",cameraSmoothing); minimapAlpha = glass.GlassSlider(); minimapAlpha.linkCvar("cl_minimap_brightness"); table.addRow("Minimap Alpha", minimapAlpha); #TODO toggle third person camera when using a ranged weapon? #Crosshair colors here? #Commander Tweaks for the Options tableHolder = glass.GlassScrollArea(table); tableHolder.setSize(table.getWidth(), table.getHeight()); return tableHolder;
def __init__(self): DefaultContainer.__init__(self); self.mucParticipants = {}; self.currentRoom = "help"; self.lastClickTime = 0; self.lastClickSelect = -1; # muc stuff: self.left = DefaultWindow(); self.left.setFrameStyle("TrimmedEight"); self.add(self.left, 0, 50); self.left.setSize(155, 300); self.left.setBackgroundColor(windowBackground); self.list = DefaultTableList(); self.list.setSelectionColor(transparency); self.list.addMouseListener(self); self.scroll = glass.GlassScrollArea(self.list); self.scroll.setBackgroundColor(transparency); self.scroll.setHorizontalScrollPolicy(glass.GlassScrollArea.SHOW_NEVER); self.left.add(self.scroll); self.scroll.setPosition(5, 5); self.scroll.setSize(self.left.getWidth() - 19, self.left.getHeight() - 40); self.enterName = DefaultTextBox(); self.enterName.setFont(fontSizeSmall); self.left.add(self.enterName); self.enterName.setSize(120, inputLineHeight); self.enterName.setPosition(5, self.left.getHeight() - inputLineHeight - 8); self.invite = DefaultButton(" + "); self.invite.setFont(fontSizeSmall); self.left.add(self.invite); self.invite.setSize(inputLineHeight, inputLineHeight); self.invite.setPosition(self.left.getWidth() - self.invite.getWidth() - 12, self.enterName.getY()); self.invite.addActionListener(self); # Window part: self.window = DefaultWindow(); self.window.setFrameStyle("TrimmedEight"); self.window.setBackgroundColor(windowBackground); self.setSize(650, 400); self.window.setSize(450, 400); self.add(self.window, 145, 0); top = DefaultContainer(); self.window.add(top, 0, 0); top.setSize(self.window.getWidth(), 35); top.setBackgroundColor(windowTop); title = DefaultLabel("Chatbox"); title.setForegroundColor(tangoYellowDark); title.setFont(fontSizeLarge); top.add(title, "center", "center"); # Alright, TabbedArea is being a dick when it comes to sizes, have to pass them to __init__: self.chatBox = TabbedChatBox(self.window.getWidth(), self.window.getHeight() - top.getHeight()); self.chatBox.setVisible(True); self.window.add(self.chatBox, 0, top.getHeight() ); self.chatBox.resize(); self.chatBox.addSelectionListener(self); gblXMPPHandler.addListener(self);
def create(self): self.setBackgroundColor(glass.Color(24, 14, 14)); self.restartRequired = False; bgImage = DefaultImage(); bgImage.setImage("bar_red_shadow.png"); bgImage.setSize(self.getWidth(), 40); self.add(bgImage, 0, 40); header = DefaultContainer(); header.setSize(self.getWidth(), 70); header.setBackgroundColor(glass.Color(85, 21, 11)); header.setOpaque(True); self.add(header); title = DefaultImage(); title.setImage("txt_options.png"); header.add(title, "center", 10); content = glass.GlassTabbedArea(); # this is just for the padding contentContainer = DefaultContainer(); contentContainer.setSize(self.getWidth(), self.getHeight() - 72); self.add(contentContainer, 0, 40); content.setSize(contentContainer.getWidth() - 25, contentContainer.getHeight() - 45); note = DefaultLabel("Note: options are saved instantly"); note.setFont(fontSizeSmall); note.setForegroundColor(tangoGrey3); self.add(note, 5, 5, "right", "bottom"); interfaceForm = self.createInterfaceForm(content); self.interfaceContainer = glass.GlassScrollArea(interfaceForm); self.interfaceContainer.setHorizontalScrollPolicy( glass.GlassScrollArea.SHOW_NEVER ); content.addTab("INTERFACE", self.interfaceContainer); self.restartWarning = DefaultContainer(); self.restartWarning.setSize(self.getWidth(), 50); self.restartWarning.setVisible(False); self.restartWarning.setBackgroundColor(glass.Color(85, 21, 11)); self.restartWarning.setOpaque(True); restartWarningLabel = DefaultLabel("RESTART REQUIRED"); self.restartWarning.add(restartWarningLabel, "center"); hr = DefaultImage(); hr.setImage("divider.png"); self.restartWarning.add(hr, 0, restartWarningLabel.getHeight() + 3); restartMessage = DefaultLabel("Some changes won\'t take affect until you restart. Would you like to restart now?"); restartMessage.setFont(fontSizeSmall); self.restartWarning.add(restartMessage, 15, 27); restart = DefaultButton("RESTART"); restart.setClickAction("shutdown(1)"); self.restartWarning.add(restart, 30, 10, "right"); self.gfxForm = self.createGfxForm(content); self.gfxContainer = glass.GlassScrollArea(self.gfxForm); self.gfxContainer.setHorizontalScrollPolicy( glass.GlassScrollArea.SHOW_NEVER ); self.gfxForm.setWidth(self.gfxForm.getWidth() - self.gfxContainer.getScrollbarWidth()); content.addTab("GRAPHICS", self.gfxContainer); soundForm = self.createSoundForm(content); self.soundContainer = glass.GlassScrollArea(soundForm); self.soundContainer.setHorizontalScrollPolicy( glass.GlassScrollArea.SHOW_NEVER ); content.addTab("SOUND", self.soundContainer); controlForm = self.createControlForm(content); self.controlContainer = glass.GlassScrollArea(controlForm); self.controlContainer.setHorizontalScrollPolicy( glass.GlassScrollArea.SHOW_NEVER ); controlForm.setWidth(controlForm.getWidth() - self.controlContainer.getScrollbarWidth()); content.addTab("CONTROLS", self.controlContainer); contentContainer.add(content, 15, 0); contentContainer.add(self.restartWarning, 0, 32); self.binder = Binder(); mainmenu.add(self.binder);
def build_graphics(self): table = GlassTablePlus(); table.setFrame(0); table.horizontalJustification = glass.Graphics.LEFT; videoResolution = glass.GlassDropMenu(); videoResolution.linkCvar("vid_mode"); videoResolution.addSelectionListener(reshandler); i=1; mode = cvar_get("vid_mode"+str(i)); while len(mode) > 0: videoResolution.addOption(mode, mode); i += 1; mode = cvar_get("vid_mode"+str(i)); table.addRow( "Video Resolution" , videoResolution ); fullscreen = glass.GlassCheckbox(); fullscreen.linkCvar("vid_fullscreen"); fullscreen.addSelectionListener(reshandler); table.addRow( "Full Screen", fullscreen ); fov = glass.GlassDropMenu(); fov.linkCvar("cl_fov"); fov.addOption("4:3", "90"); fov.addOption("16:9", "110"); fov.addOption("16:10", "100"); table.addRow( "Frame", fov); gamma = glass.GlassSlider(); gamma.linkCvar( "vid_gamma" ); gamma.setScaleEnd(2.5); gamma.setScaleStart(0.5); table.addRow( "Brightness" , gamma ); showArmor = glass.GlassCheckbox(); showArmor.linkCvar( "cl_showLevelArmor"); table.addRow( "Show Armor" , showArmor ); showImpacts = glass.GlassCheckbox(); showImpacts.linkCvar("cl_collisionDecals"); table.addRow( "Show Impact Effects", showImpacts); showBlood = glass.GlassCheckbox(); showBlood.linkCvar("cl_bloodSplatter"); table.addRow( "Show Blood Splatter", showBlood ); antiAliasing = glass.GlassDropMenu(); antiAliasing.linkCvar("vid_multisample"); antiAliasing.addOption("None", "0"); antiAliasing.addOption("2x", "2"); antiAliasing.addOption("4x", "4"); antiAliasing.addSelectionListener(reshandler); table.addRow( "Anti-Aliasing", antiAliasing ); showClouds = glass.GlassCheckbox(); showClouds.linkCvar("gfx_clouds"); table.addRow( "Show Clouds", showClouds ); useShaders = glass.GlassDropMenu(); useShaders.linkCvar("gfx_GLSLQuality"); useShaders.addOption("^900Off", "0"); useShaders.addOption("Low", "1"); useShaders.addOption("High", "3"); table.addRow( "Shaders", useShaders); forceSoft = glass.GlassCheckbox(); forceSoft.linkCvar("gfx_forceSoftware"); table.addRow( "Force CPU Animation", forceSoft ); showGrass = glass.GlassCheckbox(); showGrass.linkCvar("gfx_grass"); table.addRow( "Show Grass", showGrass ); grassFalloff = glass.GlassDropMenu(); grassFalloff.linkCvar("gfx_grassRange") grassFalloff.addOption("Near","500"); grassFalloff.addOption("Far","1500"); grassFalloff.addOption("Very Far","3500"); table.addRow( "Grass Falloff", grassFalloff ); showShadows = glass.GlassDropMenu(); showShadows.linkCvar("gfx_shadow"); showShadows.addOption("Off", "0"); showShadows.addOption("Fast", "1"); showShadows.addOption("Nice", "3"); table.addRow( "Shadows", showShadows); postProcMaster = glass.GlassCheckbox(); postProcMaster.linkCvar("gfx_postProcessing"); #TODO: disable the other post proc checkboxes if this is disabled table.addRow( "Post-Processing", postProcMaster); postBloom = glass.GlassCheckbox(); postBloom.linkCvar("gfx_postBloom"); table.addRow( " Bloom Filter", postBloom); postMotion = glass.GlassCheckbox(); postMotion.linkCvar("gfx_postMotion"); table.addRow( " Motion Blur", postMotion); showGlow = glass.GlassCheckbox(); showGlow.linkCvar("gfx_glowFilter"); table.addRow( " Glow Filter", showGlow ); postWater = glass.GlassCheckbox(); postWater.linkCvar("gfx_postWater"); table.addRow( " Water Effects", postWater); postSSAO = glass.GlassCheckbox(); postSSAO.linkCvar("gfx_postSSAO"); table.addRow( " Ambient Occlusion", postSSAO); table.adjustSizeTo(); tableHolder = glass.GlassScrollArea(table); tableHolder.setSize(table.getWidth(), table.getHeight()); return tableHolder;
topstatus = GlassTopStatusBar() glass.GUI_ScreenAddWidget("serverlist", topstatus) gblEventHandler.addNotifyListener(topstatus) #window w = glass.GlassWindow("list") w.setBackgroundColor(glass.Color(0, 0, 0, 128)) w.setSizePct(.8, .35) w.setPositionPct(0.1, 0.325) w.setTitleVisible(0) glass.GUI_ScreenAddWidget("serverlist", w) list = GlassListPlus() scr = glass.GlassScrollArea(list) w.add(scr) scr.setSizePct(1, .8) back = glass.GlassButton("Back") w.add(back) back.setClickAction("GUI_ShowScreen('mainmenu')") back.setPositionPct(.10, .0) back.setY(w.getHeight() - back.getHeight() - 5) host = glass.GlassButton("Host Server") w.add(host) host.setClickAction("serverlist.hostServerWindow.showHostServerWindow()") host.setPositionPct(0.6, 0) host.setY(w.getHeight() - host.getHeight() - 5)
def __init__(self): glass.GlassWindow.__init__(self, 'Graphics Panel') self.first = True self.setBackgroundColor(glass.Color(0, 0, 0, 128)) self.setTitleVisible(0) self.setSizePct(0.55, 0.8) self.setVisible(False) # config self.table = GlassTablePlus() self.table.setFrame(0) self.table.setCellPadding(2) self.table.horizontalJustification = glass.Graphics.LEFT self.table.addRow("^gConfig", "") self.table.addRow() blockLeap = glass.GlassCheckbox() blockLeap.linkCvar("cl_blockLeapSwitch") self.table.addRow("Block / Leap Switch", blockLeap) showFPS = glass.GlassDropMenu() showFPS.linkCvar("cl_showfps") showFPS.addOption("Off", "0") showFPS.addOption("Instant", "1") showFPS.addOption("Average", "2") showFPS.addOption("Both", "3") self.table.addRow("Show FPS", showFPS) showServerFPS = glass.GlassCheckbox() showServerFPS.linkCvar("cl_showfpsserver") self.table.addRow("Show Server FPS", showServerFPS) showPing = glass.GlassDropMenu() showPing.linkCvar("gui_showping") showPing.addOption("Off", "0") showPing.addOption("Instant", "1") showPing.addOption("Average", "2") self.table.addRow("Show Ping", showPing) showTeamStatus = glass.GlassCheckbox() showTeamStatus.linkCvar("gui_showteamstatus") self.table.addRow("Show Team Status", showTeamStatus) thirdPerson = glass.GlassCheckbox() thirdPerson.linkCvar("cl_alwaysThirdPerson") self.table.addRow("Force Third Person", thirdPerson) cameraView = glass.GlassDropMenu() cameraView.linkCvar("cl_cameraPosLerp") cameraView.addOption("Smoothed", "6") cameraView.addOption("Snappy", "9999") self.table.addRow("Camera Snap", cameraView) cameraSmoothing = glass.GlassDropMenu() cameraSmoothing.linkCvar("cl_cameraAngleLerp") cameraSmoothing.addOption("Snap", "9999") cameraSmoothing.addOption("Quick", "50") cameraSmoothing.addOption("Smooth", "35") cameraSmoothing.addOption("Very Smooth", "15") cameraSmoothing.addOption("Demo Spectate", "5") self.table.addRow("Camera Smoothing", cameraSmoothing) # Graphics self.table.addRow() self.table.addRow("^gGraphics", "") self.table.addRow() gamma = glass.GlassSlider() gamma.linkCvar("vid_gamma") gamma.setScaleEnd(2.5) gamma.setScaleStart(0.5) self.table.addRow("Brightness", gamma) showArmor = glass.GlassCheckbox() showArmor.linkCvar("cl_showLevelArmor") self.table.addRow("Show Armor", showArmor) showImpacts = glass.GlassCheckbox() showImpacts.linkCvar("cl_collisionDecals") self.table.addRow("Show Impact Effects", showImpacts) showBlood = glass.GlassCheckbox() showBlood.linkCvar("cl_bloodSplatter") self.table.addRow("Show Blood Splatter", showBlood) grassFalloff = glass.GlassDropMenu() grassFalloff.linkCvar("gfx_foliageFalloff") grassFalloff.addOption("Off", "0") grassFalloff.addOption("Near", "100") grassFalloff.addOption("Far", "700") grassFalloff.addOption("Very Far", "1500") self.table.addRow("Grass Falloff", grassFalloff) showClouds = glass.GlassCheckbox() showClouds.linkCvar("gfx_clouds") self.table.addRow("Show Clouds", showClouds) showShadows = glass.GlassDropMenu() showShadows.linkCvar("gfx_shadow") showShadows.addOption("Off", "0") showShadows.addOption("Fast", "1") showShadows.addOption("Nice", "3") self.table.addRow("Shadows", showShadows) useShaders = glass.GlassDropMenu() useShaders.linkCvar("gfx_GLSLQuality") useShaders.addOption("^900Off", "0") useShaders.addOption("Low", "1") useShaders.addOption("High", "3") self.table.addRow("Shaders", useShaders) forceSoft = glass.GlassCheckbox() forceSoft.linkCvar("gfx_forceSoftware") self.table.addRow("Force CPU Animation", forceSoft) postProcMaster = glass.GlassCheckbox() postProcMaster.linkCvar("gfx_postProcessing") #TODO: disable the other post proc checkboxes if this is disabled self.table.addRow("Post-Processing", postProcMaster) postBloom = glass.GlassCheckbox() postBloom.linkCvar("gfx_postBloom") self.table.addRow(" Bloom Filter", postBloom) postMotion = glass.GlassCheckbox() postMotion.linkCvar("gfx_postMotion") self.table.addRow(" Motion Blur", postMotion) showGlow = glass.GlassCheckbox() showGlow.linkCvar("gfx_glowFilter") self.table.addRow(" Glow Filter", showGlow) postWater = glass.GlassCheckbox() postWater.linkCvar("gfx_postWater") self.table.addRow(" Water Effects", postWater) postSSAO = glass.GlassCheckbox() postSSAO.linkCvar("gfx_postSSAO") self.table.addRow(" Ambient Occlusion", postSSAO) # Sound self.table.addRow() self.table.addRow("^gSound", "") self.table.addRow() MasterVolume = glass.GlassSlider() MasterVolume.linkCvar("sound_mastervolume") MasterVolume.setScaleEnd(1.0) MasterVolume.setScaleStart(0) self.table.addRow("Master Volume", MasterVolume) MusicVolume = glass.GlassSlider() MusicVolume.linkCvar("sound_musicvolume") MusicVolume.setScaleEnd(1.0) MusicVolume.setScaleStart(0) self.table.addRow("Music Volume", MusicVolume) SoundVolume = glass.GlassSlider() SoundVolume.linkCvar("sound_sfxVolume") SoundVolume.setScaleEnd(1.0) SoundVolume.setScaleStart(0) VoIPVolume = glass.GlassSlider() VoIPVolume.linkCvar("sound_voipvolume") VoIPVolume.setScaleEnd(1.0) VoIPVolume.setScaleStart(0) self.table.addRow("Voice Volume", VoIPVolume) internalHeight = self.getChildrenArea().height self.scrollArea = glass.GlassScrollArea(self.table) self.add(self.scrollArea) self.scrollArea.setScrollPolicy(glass.GlassScrollArea.SHOW_NEVER, glass.GlassScrollArea.SHOW_ALWAYS) bar = self.scrollArea.getScrollbarWidth() self.scrollArea.setWidth( min(self.getWidth() + bar, self.getWidth() - 8)) self.scrollArea.setHeight(min(internalHeight + bar, internalHeight - 4))
def create(self): self.setBackgroundColor(windowBackground) # Top area top = DefaultContainer() top.setSize(self.getWidth(), 35) top.setBackgroundColor(windowTop) top.setOpaque(True) self.add(top) refresh = MainIcon("refresh", 17, 17) refresh.setCaption("Refresh") refresh.addActionListener(self) top.add(refresh, 10, "center") filter = MainIcon("cog", 17, 17) top.add(filter, 33, "center") title = DefaultImage() title.setImage("txt_serverbrowser.png") top.add(title, "center", "center") connect = DefaultImageButton() connect.setCaption("Connect") connect.setImage("btn_connect.png") connect.addActionListener(self) top.add(connect, 10, "center", "right") # return to game stuff: self.reconnectBar = DefaultContainer() self.reconnectBar.setSize(self.getWidth(), 50) self.reconnectBar.setVisible(False) self.reconnectBar.setBackgroundColor(glass.Color(85, 21, 11)) self.reconnectBar.setOpaque(True) self.add(self.reconnectBar, 0, 35) gameProgress = DefaultLabel("GAME IN PROGRESS") self.reconnectBar.add(gameProgress, "center") hr = DefaultImage() hr.setImage("divider.png") self.reconnectBar.add(hr, "center", gameProgress.getHeight() + 3) disconnectButton = DefaultButton("LEAVE") disconnectButton.setClickAction( """disconnect();mainmenu.modules['menu'].sectionStack['serverlist'].onShow();""" ) self.reconnectBar.add(disconnectButton, 10, 10) connectedMessage = DefaultLabel( "You are currently connected to a server. Do you want to return?") connectedMessage.setFont(fontSizeSmall) self.reconnectBar.add(connectedMessage, "center", 27) returnButton = DefaultButton("RETURN") returnButton.setClickAction( "spechud.setMode('lobby');GUI_ShowScreen('spechud')") self.reconnectBar.add(returnButton, 10, 10, "right") # The list bro self.list.padding = 5 self.list.setSelectionColor(glass.Color(70, 40, 40, 180)) self.clearList() self.scroll = glass.GlassScrollArea(self.list) self.scroll.setSize(self.getWidth() - 5, self.getHeight() - 42) self.scroll.setBackgroundColor(transparency) self.add(self.scroll, 0, 42) #self.list.setWidth(self.scroll.getWidth()); self.list.adjustWidthTo(self.scroll.getWidth() - 20) self.serverCount = DefaultLabel("Total Servers: 0 ") self.serverCount.setFont(fontSizeSmall) self.serverCount.setForegroundColor(tangoGrey3) self.add(self.serverCount, 5, 5, "right", "bottom")
def create(self): self.setBackgroundColor(glass.Color(22, 13, 10)); # Top area top = DefaultContainer(); top.setSize(self.getWidth(), 35); top.setBackgroundColor(glass.Color(85, 21, 11)); top.setOpaque(True); self.add(top); title = DefaultImage(); title.setImage("txt_hostgame.png"); top.add(title, "center", "center"); go = DefaultImageButton(); go.setImage("btn_host.png"); go.setCaption("Host"); go.addActionListener(self) top.add(go, 10, "center", "right"); # return to game stuff: self.reconnectBar = DefaultContainer(); self.reconnectBar.setSize(self.getWidth(), 50); self.reconnectBar.setVisible(False); self.reconnectBar.setBackgroundColor(glass.Color(85, 21, 11)); self.reconnectBar.setOpaque(True); self.add(self.reconnectBar, 0, 35); gameProgress = DefaultLabel("GAME IN PROGRESS"); self.reconnectBar.add(gameProgress, "center"); hr = DefaultImage(); hr.setImage("divider.png"); self.reconnectBar.add(hr, "center", gameProgress.getHeight() + 3); disconnectButton = DefaultButton("LEAVE"); disconnectButton.setClickAction("""disconnect();mainmenu.modules['menu'].sectionStack['serverlist'].onShow();"""); self.reconnectBar.add(disconnectButton, 10, 10); connectedMessage = DefaultLabel("You are currently connected to a server. Do you want to return?"); connectedMessage.setFont(fontSizeSmall); self.reconnectBar.add(connectedMessage, "center", 27); returnButton = DefaultButton("RETURN"); returnButton.setClickAction("spechud.setMode('lobby');GUI_ShowScreen('spechud')"); self.reconnectBar.add(returnButton, 10, 10, "right"); self.content = DefaultContainer(); self.add(self.content, 0, 35); self.content.setSize(self.getWidth(), self.getHeight() - 85); self.columnWidth = (self.getWidth() - 40) // 3; # Left container: self.settingsContainer = DefaultContainer(); self.content.add(self.settingsContainer, 10, 0); self.settingsContainer.setSize(self.columnWidth, self.content.getHeight()); #self.settingsContainer.setBackgroundColor(white); settingsTitle = DefaultLabel("Game Settings"); self.settingsContainer.add(settingsTitle, "center", 10); typeLabel = DefaultLabel("Gametype:"); self.settingsContainer.add(typeLabel, 0, settingsTitle.getHeight() + 30 ); cvar_register("sv_gametype", 0); self.gametype = glass.GlassDropMenu(); self.gametype.linkCvar("sv_gametype"); self.gametype.addOption("RTSS",str(GAMETYPE_RTSS)); self.gametype.addOption("Duel",str(GAMETYPE_DUEL)); self.gametype.setSelectedValue("0"); self.settingsContainer.add(self.gametype, typeLabel.getWidth() + 20, typeLabel.getY()); self.gametype.setWidth(60); raceLabel = DefaultLabel("Races:"); self.settingsContainer.add(raceLabel, 0, self.gametype.getY() + 30 ); cvar_register("sv_team1race", 0, "human"); cvar_register("sv_team2race", 0, "beast"); self.race = glass.GlassDropMenu(); self.race.linkCvar("sv_team1race"); self.race.addOption("HvsB","human"); self.race.addOption("HvsH","human"); self.race.addOption("BvsB","beast"); self.race.setSelectedValue("HvsB"); self.settingsContainer.add(self.race, self.gametype.getX(), raceLabel.getY()); self.race.setWidth(60); div1 = DefaultDivider(); div1.setWidth(self.settingsContainer.getWidth()); self.settingsContainer.add(div1, 0, self.race.getY() + 40); cvar_register("sv_xp_mult", 0, "1.0"); xpSlider = DefaultSlider(); xpSlider.linkCvar("sv_xp_mult"); xpSlider.setScaleEnd(10.0); xpSlider.setScaleStart(0.0); xpSlider.setWidth(self.settingsContainer.getWidth() - 15); self.settingsContainer.add(xpSlider, 0, div1.getY() + 25 ); xpLabel = DefaultLabel("XP multiplier"); self.settingsContainer.add(xpLabel, 0, xpSlider.getY() + 13 ); div2 = DefaultDivider(); div2.setWidth(self.settingsContainer.getWidth()); self.settingsContainer.add(div2, 0, xpLabel.getY() + 35); cvar_register("sv_gold_mult", 0, "1.0"); goldSlider = DefaultSlider(); goldSlider.linkCvar("sv_gold_mult"); goldSlider.setScaleEnd(10.0); goldSlider.setScaleStart(0.0); goldSlider.setWidth(self.settingsContainer.getWidth() - 15); self.settingsContainer.add(goldSlider, 0, div2.getY() + 25 ); goldLabel = DefaultLabel("Gold multiplier"); self.settingsContainer.add(goldLabel, 0, goldSlider.getY() + 13 ); # mid container: self.listContainer = DefaultContainer(); self.content.add(self.listContainer, self.columnWidth + 20, 0); self.listContainer.setSize(self.columnWidth, self.content.getHeight()); #self.listContainer.setBackgroundColor(white); mapsTitle = DefaultLabel("Local Map List"); self.listContainer.add(mapsTitle, "center", 10); self.mapList = glass.GlassListBox(); self.mapList.addSelectionListener(self); self.mapList.setBackgroundColor(transparency); self.mapList.setForegroundColor(glass.Color(211, 201, 168)); #self.mapList.setSelectionColor() self.mapScroll = glass.GlassScrollArea(self.mapList); self.mapScroll.setSize(self.listContainer.getWidth(), self.listContainer.getHeight() - 60); self.listContainer.add(self.mapScroll, 0, mapsTitle.getHeight() + 30); # right container: self.mapContainer = DefaultContainer(); self.content.add(self.mapContainer, self.columnWidth * 2 + 30, 0); self.mapContainer.setSize(self.columnWidth, self.content.getHeight()); #self.mapContainer.setBackgroundColor(white); self.overhead = glass.GlassLabel(); #self.overhead.setImage(""); self.overhead.setSize(self.mapContainer.getWidth(), self.mapContainer.getWidth()); self.mapContainer.add(self.overhead, "center", self.mapScroll.getY()); # todo: map stats and information comingSoon = DefaultLabel("Map stats and information \ncoming soon!"); self.mapContainer.add(comingSoon, 0, self.overhead.getHeight() + 70); self.getLocalMaps();
def __init__(self): DefaultWindow.__init__(self) self.setFrameStyle("TrimmedEight") self.setBackgroundColor(glass.Color(24, 14, 14)) self.setSize(int(screenWidth * .9), 458) self.loadingAction = None self.handler = DemoHandler(self) bgImage = DefaultImage() bgImage.setImage("bar_red_shadow.png") bgImage.setSize(self.getWidth(), 20) self.add(bgImage, 0, 40) header = DefaultContainer() header.setSize(self.getWidth(), 40) header.setBackgroundColor(glass.Color(85, 21, 11)) header.setOpaque(True) self.add(header) title = DefaultImage() title.setImage("txt_options.png") header.add(title, "center", 10) self.list = glass.GlassListBox() self.list.addSelectionListener(self.handler) scroll = glass.GlassScrollArea() scroll.setContent(self.list) scroll.setScrollPolicy(glass.GlassScrollArea.SHOW_NEVER, glass.GlassScrollArea.SHOW_ALWAYS) self.add(scroll) scroll.setPosition(10, 70) scroll.setSize(self.getWidth() // 3, self.getHeight() - 100) self.match = DefaultLabel() self.match.setFont(fontSizeLarge) self.add(self.match, self.getWidth() // 3 + 20, 70) #info container container = DefaultContainer() self.add(container, self.getWidth() // 3 + 20, self.match.getHeight() + 80) self.matchMap = DefaultLabel() self.matchMap.setSize(128, 128) container.add(self.matchMap, 0, 0) self.played = DefaultLabel() container.add(self.played, 128 + 10, 0) self.matchLength = DefaultLabel() container.add(self.matchLength, 128 + 10, self.played.getHeight()) self.size = DefaultLabel() container.add(self.size, 128 + 10, self.played.getHeight() + self.matchLength.getHeight()) self.chat = DefaultTextBox() self.chat.setSize(2 * self.getWidth() // 3, 200) self.chat.setOpaque(False) scroll = glass.GlassScrollArea() scroll.setContent(self.chat) scroll.setSize(self.getWidth() // 3, 200) container.add(scroll, 0, 128 + 10) container.setSize(2 * self.getWidth() // 3 - 20, 400) #action container container = DefaultContainer() container.setSize(self.getWidth() // 3, self.getHeight()) self.add(container, self.getWidth() * 2 // 3 + 40, self.match.getHeight() + 80) l = DefaultLabel("Quality") container.add(l) self.quality = DefaultDropDown() self.quality.linkCvar("ven_bitrate") self.quality.addOption("Low", "1347000") self.quality.addOption("Standard", "3500000") self.quality.addOption("High", "15500000") self.quality.addOption("HD", "25500000") container.add(self.quality, l.getWidth(), 0) l = DefaultLabel("Video") container.add(l, 0, self.quality.getHeight() + 10) self.vencoder = DefaultDropDown() self.vencoder.linkCvar("ven_codec") self.vencoder.addOption("H.264", "libx264") self.vencoder.addOption("MPEG-4", "mpeg4") self.vencoder.addOption("WMP 8", "wmv2") container.add(self.vencoder, l.getWidth(), self.quality.getHeight() + 10) self.convert = DefaultButton("<>") self.convert.addActionListener(self.handler) container.add( self.convert, 0, self.vencoder.getHeight() + self.quality.getHeight() + 20) self.play = DefaultButton(">") self.play.addActionListener(self.handler) container.add( self.play, 40, self.vencoder.getHeight() + self.quality.getHeight() + 20)
def __init__(self): DefaultWindow.__init__(self) self.setSize(1000, 700) self.setPosition(screenWidthPct(.5) - 500, screenHeightPct(.5) - 350) self.setFrameStyle("TrimmedEight") self.setBackgroundColor(glass.Color(40, 20, 20)) # todo: check how many teams the map/server supports! totalTeamList = [savage.Team(1), savage.Team(2)] self.teamContainerList = [] self.currentTeam = 1 #0,1,2,3,4 ... dotString = "" for team in totalTeamList: teamList = TeamList(team, "left", int(self.getWidth() * 0.45), int(self.getHeight() * 0.7)) self.add(teamList) teamList.setY(int(self.getHeight() * 0.0714)) self.teamContainerList.append(teamList) dotString += " 0 " # TODO: Use images and a container! self.dots = DefaultLabel(dotString) self.add(self.dots, self.getWidth() // 2 - self.dots.getWidth() // 2, int(self.getHeight() * 0.73)) self.switchTeams("left") # Spec button self.specButton = DefaultButton("Spectators") self.add(self.specButton, self.getWidth() // 2 - self.specButton.getWidth() // 2, 10) self.specButton.addActionListener(self) # Spec Window: self.specWindow = DefaultWindow() self.specWindow.setBackgroundColor(glass.Color(70, 20, 20)) self.add(self.specWindow) self.specWindow.setSizePct(0.15, 0.4) self.specWindow.setPosition( self.getWidth() // 2 - self.specWindow.getWidth() // 2, self.specButton.getY() + self.specButton.getHeight() + 10) self.specWindow.setVisible(False) joinSpec = DefaultButton("Enlist now") joinSpec.setWidth(self.specWindow.getWidth()) joinSpec.setClickAction( "CL_RequestTeam(0);spechud.setMode('hud');setMouseMode(MOUSE_RECENTER)" ) self.specWindow.add( joinSpec, self.specWindow.getWidth() // 2 - joinSpec.getWidth() // 2, 0) #F**k lists, they're buggy if you don't put them in their own container: specListContainer = DefaultContainer() specListContainer.setSize( self.specWindow.getWidth(), self.specWindow.getHeight() - joinSpec.getHeight() - 5) self.specWindow.add(specListContainer, 0, joinSpec.getHeight() + 5) self.specList = DefaultTableList() self.specList.setSelectionColor(glass.Color(70, 40, 40, 180)) specListContainer.add(self.specList) specScroll = glass.GlassScrollArea(self.specList) specScroll.setBackgroundColor(transparency) specScroll.setHorizontalScrollPolicy(glass.GlassScrollArea.SHOW_NEVER) specListContainer.add(specScroll, 0, 0) specScroll.setSize(specListContainer.getWidth(), specListContainer.getHeight()) # Move in/out animation? # Chatbox chatContainer = DefaultContainer() self.add(chatContainer) chatContainer.setPositionPct(0.25, 0.78) chatContainer.setSizePct(0.5, 0.2) chatContainer.setBackgroundColor(glass.Color(0, 0, 0, 128)) self.chatBox = HUDChatBox() chatContainer.add(self.chatBox) self.chatBox.setSizePct(1, 1) self.chatBox.resize() self.chatBox.alwaysShowInput(True) self.chatBox.inputType.setVisible(False) self.chatBox.buffer.setVisible(False) self.chatBox.historyBuffer.parentScroll.setVisible(True) self.chatBox.historyBuffer.parentScroll.setAutoscroll(True) # TODO: Fix auto scroll # Leave button leave = DefaultButton("<< Menu") leave.setClickAction("GUI_ShowScreen('mainmenu')") self.add(leave) leave.setPositionPct(0.1, 0.9) # Play button, only shown if you're on a team self.play = DefaultButton("Play >>") self.play.addActionListener(self) self.add(self.play) self.play.setPosition( int(self.getWidth() * 0.9) - self.play.getWidth(), int(self.getHeight() * 0.9))
battle.setClickAction("CL_RequestEndGame(-1)"); #or something battle.setPosition( screenWidth - PADDING - battle.getWidth(), screenHeight - PADDING - battle.getHeight()); glass.GUI_ScreenAddWidget("endgame",battle); #6.Awards awardsTitle = glass.GlassLabel("Awards"); awardsTitle.setAlignment(glass.Graphics.CENTER); awardsTitle.setFont(fontSizeLarge); awardsTitle.adjustSize(); awardsTitle.setPosition(outcome.getX(), outcome.getY() + outcome.getHeight() + PADDING); awardsTitle.setWidth(outcome.getWidth()); awardsTitle.setForegroundColor(gold); glass.GUI_ScreenAddWidget("endgame", awardsTitle); awardsScroll = glass.GlassScrollArea(); awardsScroll.setBackgroundColor(tangoGrey6); awardsScroll.setPosition(awardsTitle.getX(), awardsTitle.getY() + awardsTitle.getHeight() + PADDING); #awardsScroll.setSize(outcome.getWidth(), screenHeight - awardsScroll.getY() - 2*PADDING - buddies.toggle.getHeight()); awardsScroll.setSize(outcome.getWidth(), screenHeight - awardsScroll.getY() - 2*PADDING) awardsScroll.setScrollPolicy(awardsScroll.SHOW_NEVER, awardsScroll.SHOW_ALWAYS); glass.GUI_ScreenAddWidget("endgame",awardsScroll); awards = glass.GlassContainer() awards.setWidth(awardsScroll.getWidth() - awardsScroll.getScrollbarWidth()); awardsScroll.setContent(awards); def rebuildAwards(data): """data = { "^gBest Commander^w (%.1f rating)": "0;0;0",
ammoGraphic = glass.GlassLabel(); ammoGraphic.setImage("/gui/standard/icons/comm_crown.s2g"); ammoGraphic.setSize( int( 0.60*slot.getHeight() ) , int( 0.60*slot.getHeight() )); ammoGraphic.setPosition( inventory.getX() - 10 - ammoGraphic.getWidth() , screenHeight - ammoGraphic.getHeight()- 10); ammoGraphic.setOpaque(1); glass.GUI_ScreenAddWidget("hud", ammoGraphic); ammoValue = glass.GlassLabel("999"); ammoValue.setForegroundColor( white ); ammoValue.setAlignment(2); ammoValue.setPosition( ammoGraphic.getX() - 2 - ammoValue.getWidth(), screenHeight - ammoValue.getHeight() - 10 ); glass.GUI_ScreenAddWidget("hud", ammoValue); ## NOTIFICATIONS ## scroll = glass.GlassScrollArea(); scroll.setAutoscroll(1); scroll.setSizePct(0.32,0.16); scroll.setPosition(screenWidth-scroll.getWidth() - 10,10); scroll.setPosition(screenWidth-360, 10); scroll.setScrollPolicy(1,1); #SHOW_NEVER glass.GUI_ScreenAddWidget("hud", scroll); notifyBuffer = MessageBuffer(["notify"]); #TODO notify_generalhide too? scroll.setContent(notifyBuffer); notifyBuffer.setSize(scroll.getWidth(), scroll.getHeight()); notifyBuffer.setFadeTop(1); notifyBuffer.setFadeBottom(0); notifyBuffer.showTime(0); for i in range(10): notifyBuffer.addRow(" ");
demos.list.adjustWidthTo(demos.listWidth) self.done = True def isDone(self): return self.done bg = glass.GlassLabel() bg.setOpaque(1) bg.setBackgroundColor(black) bg.setSize(screenWidth, screenHeight) bg.setPosition(0, 0) glass.GUI_ScreenAddWidget("demos", bg) scroll = glass.GlassScrollArea() scroll.setSizePct(xoffset - 2 * padding, 1.0 - 2 * padding) scroll.setPositionPct(padding, padding) scroll.setVerticalScrollPolicy(scroll.SHOW_ALWAYS) glass.GUI_ScreenAddWidget("demos", scroll) list = GlassListPlus() list.autoAdjust = False listWidth = scroll.getWidth() - scroll.getScrollbarWidth() scroll.setContent(list) name = glass.GlassLabel("demo_name_here") name.setFont(fontSizeLarge) name.setPositionPct(xoffset + padding, padding) name.adjustSize() glass.GUI_ScreenAddWidget("demos", name)