From 222845f50b3bf837ce25934eb08edfb71fcd88b0 Mon Sep 17 00:00:00 2001 From: Mark Mine Date: Tue, 25 Mar 2003 02:11:04 +0000 Subject: [PATCH] Added class for text pie menu --- direct/src/leveleditor/PieMenu.py | 44 +++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) diff --git a/direct/src/leveleditor/PieMenu.py b/direct/src/leveleditor/PieMenu.py index ed6bc3e95a..5e3244a5a3 100644 --- a/direct/src/leveleditor/PieMenu.py +++ b/direct/src/leveleditor/PieMenu.py @@ -115,3 +115,47 @@ class PieMenu(NodePath, PandaObject): def setUpdateOnlyOnChange(self,flag): self.fUpdateOnlyOnChange = flag + +class TextPieMenu(PieMenu): + def __init__(self, textList, radius = 0.5, sf = 1, + action = None, fUpdateOnlyOnChange = 1): + numItems = len(textList) + # Create top level node for new menu + newMenu = hidden.attachNewNode('TextMenu') + # Compute angle per item + angle = deg2Rad(360.0/numItems) + aspectRatio = direct.dr.getWidth()/float(direct.dr.getHeight()) + # Add items + for i in range (numItems): + # Create text node for each item + if (textList[i] != None): + tn = TextNode('TextItem') + tn.freeze() + tn.setFont(getDefaultFont()) + tn.setTransform(Mat4.scaleMat(0.07, 0.07, 0.07 * aspectRatio)) + tn.setTextColor(0, 0, 0, 1) + tn.setCardColor(1, 1, 1, 1) + tn.setCardAsMargin(0.1, 0.1, 0.1, 0.1) + tn.setText(str(textList[i])) + tn.thaw() + + # Reposition it + card = tn.getCardTransformed() + center = (card[1] - card[0], card[3] - card[2]) + + node = newMenu.attachNewNode(tn) + node.setScale(sf) + node.setPos(radius * math.cos(i * angle) - center[0], 0.0, + ((radius * aspectRatio * math.sin(i * angle)) - + center[1])) + # Create and return a pie menu + PieMenu.__init__(self, newMenu, textList) + self.accept('mouse3', self.spawnPieMenuTask) + self.accept('mouse3-up', self.removePieMenuTask) + def destroy(self): + self.ignore('mouse3') + self.ignore('mouse3-up') + self.removeNode() + + +