storymetadataframe.py 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. import wx
  2. import metrics
  3. class StoryMetadataFrame(wx.Frame):
  4. """
  5. Changes automatically update as the user makes them;
  6. """
  7. def __init__(self, app, parent = None):
  8. self.app = app
  9. self.parent = parent
  10. wx.Frame.__init__(self, parent, wx.ID_ANY, title = parent.title + ' Metadata', \
  11. style = wx.MINIMIZE_BOX | wx.CLOSE_BOX | wx.CAPTION | wx.SYSTEM_MENU)
  12. panel = wx.Panel(parent = self, id = wx.ID_ANY)
  13. borderSizer = wx.BoxSizer(wx.VERTICAL)
  14. panel.SetSizer(borderSizer)
  15. panelSizer = wx.FlexGridSizer(8, 1, metrics.size('relatedControls'), metrics.size('relatedControls'))
  16. borderSizer.Add(panelSizer, flag = wx.ALL, border = metrics.size('windowBorder'))
  17. for name, desc in [
  18. ("identity", ("What your work identifies as:",
  19. "Is it a game, a story, a poem, or something else?\n(This is used for dialogs and error messages only.)",
  20. False)),
  21. ("description", ("A short description of your work:",
  22. "This is inserted in the HTML file's <meta> description tag, used by\nsearch engines and other automated tools.",
  23. True))
  24. ]:
  25. textlabel = wx.StaticText(panel, label = desc[0])
  26. if desc[2]:
  27. textctrl = wx.TextCtrl(panel, size=(200,60), style=wx.TE_MULTILINE)
  28. else:
  29. textctrl = wx.TextCtrl(panel, size=(200,-1))
  30. textctrl.SetValue(parent.metadata.get(name, ''))
  31. textctrl.Bind(wx.EVT_TEXT, lambda e, name=name, textctrl=textctrl:
  32. self.saveSetting(name,textctrl.GetValue()))
  33. hSizer = wx.BoxSizer(wx.HORIZONTAL)
  34. hSizer.Add(textlabel,1,wx.ALIGN_LEFT|wx.ALIGN_TOP)
  35. hSizer.Add(textctrl,1,wx.EXPAND)
  36. panelSizer.Add(hSizer,flag=wx.ALL|wx.EXPAND)
  37. panelSizer.Add(wx.StaticText(panel, label = desc[1]))
  38. panelSizer.Add((1,2))
  39. panelSizer.Fit(self)
  40. borderSizer.Fit(self)
  41. self.SetIcon(self.app.icon)
  42. self.Show()
  43. self.panelSizer = panelSizer
  44. self.borderSizer = borderSizer
  45. def saveSetting(self, name, value):
  46. self.parent.metadata[name]=value
  47. self.parent.setDirty(True)