Browse Source

Hotel additions.. lsot track

pull/1/head
unknown 11 years ago
parent
commit
bf118bca3d
13 changed files with 160 additions and 31 deletions
  1. 3
      src/app/dialogs/action_sorter.py
  2. 26
      src/app/dialogs/advanced_config.py
  3. BIN
      src/app/dialogs/advanced_config.pyc
  4. 7
      src/app/dialogs/argparse_test_data.py
  5. 12
      src/app/dialogs/base_window.py
  6. 4
      src/app/dialogs/component_factory.py
  7. BIN
      src/app/dialogs/component_factory.pyc
  8. 7
      src/app/dialogs/controller.py
  9. 91
      src/app/dialogs/model.py
  10. 17
      src/app/dialogs/msg_dialog.py
  11. 19
      src/app/dialogs/parse_validator.py
  12. 5
      src/app/dialogs/window.py
  13. BIN
      src/app/images/image_store.pyc

3
src/app/dialogs/action_sorter.py

@ -12,7 +12,7 @@ from argparse import (
_CountAction, _AppendAction, _HelpAction)
DEBUG = 1
DEBUG = 0
class ActionSorter(object):
'''
@ -68,6 +68,7 @@ class ActionSorter(object):
self._display('ActionSorter: booleans', self._flags)
self._display('ActionSorter: counters', self._counters)
print '|-------------------------'
def _display(self, _type, something):
for i in something:

26
src/app/dialogs/advanced_config.py

@ -19,11 +19,12 @@ class AdvancedConfigPanel(ScrolledPanel, OptionReader):
'''
Abstract class for the Footer panels.
'''
def __init__(self, parent, parser, **kwargs):
def __init__(self, parent, model, **kwargs):
ScrolledPanel.__init__(self, parent, **kwargs)
self.SetupScrolling()
self.components = ComponentFactory(parser)
self.model = model
self.components = ComponentFactory(model.action_groups)
self._controller = None
@ -33,22 +34,23 @@ class AdvancedConfigPanel(ScrolledPanel, OptionReader):
def _init_components(self):
self._msg_req_args = self.BuildHeaderMsg("Required Arguments")
self._msg_req_args = (self.BuildHeaderMsg("Required Arguments")
if self.model.HasPositionals() else None)
self._msg_opt_args = self.BuildHeaderMsg("Optional Arguments")
def _do_layout(self):
STD_LAYOUT = (0, wx.LEFT | wx.RIGHT | wx.EXPAND, PADDING)
container = wx.BoxSizer(wx.VERTICAL)
container.AddSpacer(15)
container.Add(self._msg_req_args, 0, wx.LEFT | wx.RIGHT, PADDING)
container.AddSpacer(5)
container.Add(self._draw_horizontal_line(), *STD_LAYOUT)
container.AddSpacer(20)
self.AddWidgets(container, self.components.required_args, add_space=True)
container.AddSpacer(10)
if self.model.HasPositionals():
container.Add(self._msg_req_args, 0, wx.LEFT | wx.RIGHT, PADDING)
container.AddSpacer(5)
container.Add(self._draw_horizontal_line(), *STD_LAYOUT)
container.AddSpacer(20)
self.AddWidgets(container, self.components.required_args, add_space=True)
container.AddSpacer(10)
container.AddSpacer(10)
container.Add(self._msg_opt_args, 0, wx.LEFT | wx.RIGHT, PADDING)

BIN
src/app/dialogs/advanced_config.pyc

7
src/app/dialogs/argparse_test_data.py

@ -19,8 +19,5 @@ parser.add_argument('-c', '--constoption', action="store_const", const="myconsta
parser.add_argument('-t', '--truify', action="store_true", help='Ensure the store_true actions are sorted') # Flag
parser.add_argument('-f', '--falsificle', action="store_false", help='Ensure the store_false actions are sorted') # Flag
try:
parser.parse_args('fname -T yes'.split())
except Exception as e:
print 'asdfads'
print type(e)
print parser.parse_args('fname oname -T yes'.split())

12
src/app/dialogs/base_window.py

@ -11,15 +11,17 @@ New plan:
'''
import os
import sys
import wx
import header
import footer
from app.dialogs.controller import Controller
from app.images import image_store
from app.dialogs.model import Model
class BaseWindow(wx.Frame):
def __init__(self, BodyPanel, parser):
def __init__(self, BodyPanel):
wx.Frame.__init__(
self,
parent=None,
@ -28,7 +30,9 @@ class BaseWindow(wx.Frame):
size=(610,530)
)
self._parser = parser
self._model = Model.GetInstance()
print self._model
sys.exit()
self._controller = None
self._init_properties()
@ -46,11 +50,11 @@ class BaseWindow(wx.Frame):
# init components
self.head_panel = header.FrameHeader(
heading="Settings",
subheading = self._parser.description,
subheading = self._model.description,
image_path=image_store.settings2,
parent=self,
size=(30,90))
self.body_panel = BodyPanel(self, self._parser)
self.body_panel = BodyPanel(self, self._model)
self.cfg_foot_panel = footer.ConfigFooter(self, self._controller)
self.panels = [self.head_panel, self.body_panel, self.cfg_foot_panel]

4
src/app/dialogs/component_factory.py

@ -15,9 +15,9 @@ class ComponentFactory(object):
Aggregates all of the actions and
'''
def __init__(self, parser):
def __init__(self, sorted_actions):
self._actions = action_sorter.ActionSorter(parser._actions[:])
self._actions = sorted_actions
self.required_args = self.BuildPositionals(self._actions)
self.flags = self.BuildFlags(self._actions)

BIN
src/app/dialogs/component_factory.pyc

7
src/app/dialogs/controller.py

@ -4,6 +4,8 @@ Created on Dec 22, 2013
@author: Chris
'''
import msg_dialog
class Controller(object):
'''
Main controller for the gui.
@ -33,12 +35,15 @@ class Controller(object):
def OnConfigNext(self, event):
cmd_line_args = self._body.GetOptions()
# self.ShowArgumentErrorDlg(error)
def OnMainCancel(self, event):
print 'OnMaingCancel pressed!'
def OnMainNext(self, event):
print 'OnCongigNext pressed!'
def ShowArgumentErrorDlg(self, error):
msg_dialog.ShowError(error)

91
src/app/dialogs/model.py

@ -0,0 +1,91 @@
'''
Created on Jan 23, 2014
@author: Chris
'''
import types
from app.dialogs.action_sorter import ActionSorter
class ArgumentError(Exception):
pass
class Model(object):
_instance = None
# def __new__(cls, *args, **kwargs):
# if not cls._instance:
# cls._instance = super(Model, cls).__new__(
# cls, *args, **kwargs)
# return cls._instance
def __init__(self, parser=None):
print parser
self._parser = parser
self.description = parser.description
self.action_groups = ActionSorter(self._parser._actions)
# monkey patch
self._parser.error = types.MethodType(
self.ErrorAsString,
self._parser)
Model._instance = self
print self
def HasPositionals(self):
if self.action_groups._positionals:
return True
return False
def IsValidArgString(self, arg_string):
if isinstance(self._Parse(arg_string), str):
return False
return True
def _Parse(self, arg_string):
try:
self._parser.parse_args(arg_string.split())
return True
except ArgumentError as e:
return str(e)
def GetErrorMsg(self, arg_string):
return self._FormatMsg(self._Parse(arg_string))
def _FormatMsg(self, msg):
output = list(msg)
output[output.index(':')] = ':\n '
return ''.join(output)
@staticmethod
def ErrorAsString(self, msg):
'''
Monkey patch for parser.error
Returns the error string rather than
printing and silently exiting.
'''
raise ArgumentError(msg)
@classmethod
def GetInstance(cls):
return cls._instance
if __name__ == '__main__':
import argparse_test_data
parser = argparse_test_data.parser
model = Model(parser)
b = model.GetInstance()
print model
print b
print model == b
# print m2

17
src/app/dialogs/msg_dialog.py

@ -0,0 +1,17 @@
'''
Created on Jan 23, 2014
@author: Chris
'''
import wx
def ShowError(msg):
wx.MessageDialog(
None,
msg,
'Argument Error',
wx.ICON_ERROR)
if __name__ == '__main__':
pass

19
src/app/dialogs/parse_validator.py

@ -4,11 +4,20 @@ Created on Jan 22, 2014
@author: Chris
'''
def Validate(parser, argument_string):
try:
parser.parse_args(argument_string.split())
except:
raise ValueError
import types
from argparse import ArgumentParser
def validate(parser, arg_string):
parser.error = types.MethodType(RaiseError, parser)
parser.parse_args(arg_string.split())
if __name__ == '__main__':

5
src/app/dialogs/window.py

@ -27,6 +27,8 @@ import wx
import base_window
import advanced_config
from app.dialogs import argparse_test_data
from app.dialogs.action_sorter import ActionSorter
from app.dialogs.model import Model
def WithNoOptions(): pass
@ -34,7 +36,8 @@ def WithBasicOptions(): pass
def WithAdvancedOptions(parser):
app = wx.App(False)
frame = base_window.BaseWindow(advanced_config.AdvancedConfigPanel, parser)
model = Model(parser)
frame = base_window.BaseWindow(advanced_config.AdvancedConfigPanel)
frame.Show(True) # Show the frame.
app.MainLoop()

BIN
src/app/images/image_store.pyc

Loading…
Cancel
Save