martijn 10 years ago
parent
commit
d0c9c6d7f2
23 changed files with 210 additions and 1120 deletions
  1. 5
      .gitignore
  2. 1
      .idea/.name
  3. 9
      .idea/Gooey.iml
  4. 14
      .idea/codeStyleSettings.xml
  5. 5
      .idea/encodings.xml
  6. 15
      .idea/inspectionProfiles/Project_Default.xml
  7. 7
      .idea/inspectionProfiles/profiles_settings.xml
  8. 5
      .idea/misc.xml
  9. 9
      .idea/modules.xml
  10. 5
      .idea/scopes/scope_settings.xml
  11. 7
      .idea/vcs.xml
  12. 915
      .idea/workspace.xml
  13. 17
      .project
  14. 8
      .pydevproject
  15. 4
      .settings/org.eclipse.core.resources.prefs
  16. 46
      MANIFEST
  17. 3
      MANIFEST.in
  18. 2
      README.md
  19. 217
      README.txt
  20. 4
      gooey/i18n.py
  21. 0
      gooey/images/__init__.py
  22. 30
      setup.py
  23. 2
      test.py

5
.gitignore

@ -34,3 +34,8 @@ nosetests.xml
.mr.developer.cfg
.project
.pydevproject
#
.idea
.settings
MANIFEST

1
.idea/.name

@ -1 +0,0 @@
Gooey

9
.idea/Gooey.iml

@ -1,9 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<module type="PYTHON_MODULE" version="4">
<component name="NewModuleRootManager">
<content url="file://$MODULE_DIR$" />
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
</component>
</module>

14
.idea/codeStyleSettings.xml

@ -1,14 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectCodeStyleSettingsManager">
<option name="PER_PROJECT_SETTINGS">
<value>
<XML>
<option name="XML_LEGACY_SETTINGS_IMPORTED" value="true" />
</XML>
</value>
</option>
<option name="PREFERRED_PROJECT_CODE_STYLE" value="Default (1)" />
</component>
</project>

5
.idea/encodings.xml

@ -1,5 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="Encoding" useUTFGuessing="true" native2AsciiForPropertiesFiles="false" />
</project>

15
.idea/inspectionProfiles/Project_Default.xml

@ -1,15 +0,0 @@
<component name="InspectionProjectProfileManager">
<profile version="1.0" is_locked="false">
<option name="myName" value="Project Default" />
<option name="myLocal" value="false" />
<inspection_tool class="PyPep8Inspection" enabled="true" level="WEAK WARNING" enabled_by_default="true">
<option name="ignoredErrors">
<list>
<option value="E111" />
<option value="E121" />
<option value="E501" />
</list>
</option>
</inspection_tool>
</profile>
</component>

7
.idea/inspectionProfiles/profiles_settings.xml

@ -1,7 +0,0 @@
<component name="InspectionProjectProfileManager">
<settings>
<option name="PROJECT_PROFILE" value="Project Default" />
<option name="USE_PROJECT_PROFILE" value="true" />
<version value="1.0" />
</settings>
</component>

5
.idea/misc.xml

@ -1,5 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectRootManager" version="2" project-jdk-name="Python 2.7.6 (C:/Python27/python.exe)" project-jdk-type="Python SDK" />
</project>

9
.idea/modules.xml

@ -1,9 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectModuleManager">
<modules>
<module fileurl="file://$PROJECT_DIR$/.idea/Gooey.iml" filepath="$PROJECT_DIR$/.idea/Gooey.iml" />
</modules>
</component>
</project>

5
.idea/scopes/scope_settings.xml

@ -1,5 +0,0 @@
<component name="DependencyValidationManager">
<state>
<option name="SKIP_IMPORT_STATEMENTS" value="false" />
</state>
</component>

7
.idea/vcs.xml

@ -1,7 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="$PROJECT_DIR$" vcs="Git" />
</component>
</project>

915
.idea/workspace.xml

@ -1,915 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="BookmarkManager">
<bookmark url="file://$PROJECT_DIR$/gooey/image_repository.py" line="33" />
</component>
<component name="ChangeListManager">
<list default="true" id="c98c4f39-9f79-4674-9cd3-7d4122eb5aa3" name="Default" comment="">
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/.idea/workspace.xml" afterPath="$PROJECT_DIR$/.idea/workspace.xml" />
</list>
<ignored path="Gooey.iws" />
<ignored path=".idea/workspace.xml" />
<option name="TRACKING_ENABLED" value="true" />
<option name="SHOW_DIALOG" value="false" />
<option name="HIGHLIGHT_CONFLICTS" value="true" />
<option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
<option name="LAST_RESOLUTION" value="IGNORE" />
</component>
<component name="ChangesViewManager" flattened_view="true" show_ignored="false" />
<component name="CreatePatchCommitExecutor">
<option name="PATCH_PATH" value="" />
</component>
<component name="DaemonCodeAnalyzer">
<disable_hints />
</component>
<component name="ExecutionTargetManager" SELECTED_TARGET="default_target" />
<component name="FavoritesManager">
<favorites_list name="Gooey" />
</component>
<component name="FileEditorManager">
<leaf>
<file leaf-file-name="i18n.py" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/gooey/i18n.py">
<provider selected="true" editor-type-id="text-editor">
<state line="31" column="11" selection-start="708" selection-end="708" vertical-scroll-proportion="0.0" vertical-offset="0" max-vertical-offset="850">
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="setup.py" pinned="false" current="true" current-in-tab="true">
<entry file="file://$PROJECT_DIR$/setup.py">
<provider selected="true" editor-type-id="text-editor">
<state line="30" column="6" selection-start="723" selection-end="723" vertical-scroll-proportion="0.6608579" vertical-offset="0" max-vertical-offset="746">
<folding />
</state>
</provider>
</entry>
</file>
</leaf>
</component>
<component name="FindManager">
<FindUsagesManager>
<setting name="OPEN_NEW_TAB" value="false" />
</FindUsagesManager>
</component>
<component name="Git.Settings">
<option name="SYNC_SETTING" value="DONT" />
<option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" />
<option name="RECENT_BRANCH_BY_REPOSITORY">
<map>
<entry key="$PROJECT_DIR$" value="svisser-patch-1" />
</map>
</option>
</component>
<component name="IdeDocumentHistory">
<option name="changedFiles">
<list>
<option value="$PROJECT_DIR$/gooey/parser_exceptions.py" />
<option value="$PROJECT_DIR$/gooey/app/dialogs/action_sorter.py" />
<option value="$PROJECT_DIR$/gooey/app/dialogs/action_sorter_unittest.py" />
<option value="$PROJECT_DIR$/gooey/app/dialogs/components.py" />
<option value="$PROJECT_DIR$/gooey/mockapplications/module_with_no_argparse.py" />
<option value="$PROJECT_DIR$/gooey/source_parser.py" />
<option value="$PROJECT_DIR$/gooey/app/dialogs/config_model.py" />
<option value="$PROJECT_DIR$/gooey/app/dialogs/imageutil.py" />
<option value="$PROJECT_DIR$/gooey/app/dialogs/runtime_display_panel.py" />
<option value="$PROJECT_DIR$/gooey/app/dialogs/controller.py" />
<option value="$PROJECT_DIR$/gooey/app/dialogs/advanced_config.py" />
<option value="$PROJECT_DIR$/gooey/app/dialogs/basic_config_panel.py" />
<option value="$PROJECT_DIR$/gooey/app/dialogs/base_window.py" />
<option value="$PROJECT_DIR$/gooey/app/dialogs/header.py" />
<option value="$PROJECT_DIR$/gooey/app/dialogs/footer.py" />
<option value="$PROJECT_DIR$/gooey/gui/styler.py" />
<option value="$PROJECT_DIR$/gooey/gui/action_sorter.py" />
<option value="$PROJECT_DIR$/gooey/gui/advanced_config_unittest.py" />
<option value="$PROJECT_DIR$/gooey/i18n_unittest.py" />
<option value="$PROJECT_DIR$/gooey/config.py" />
<option value="$PROJECT_DIR$/gooey/i18n.py" />
<option value="$PROJECT_DIR$/gooey/i18n_config.py" />
<option value="$PROJECT_DIR$/gooey/gui/runtime_display_panel.py" />
<option value="$PROJECT_DIR$/gooey/gui/imageutil.py" />
<option value="$PROJECT_DIR$/gooey/monkey_parser.py" />
<option value="$PROJECT_DIR$/dist/Gooey-0.1.0/gooey/app/dialogs/base_window.py" />
<option value="$PROJECT_DIR$/dist/Gooey-0.1.0/build/lib/gooey/app/dialogs/controller.py" />
<option value="$PROJECT_DIR$/gooey/gui/header.py" />
<option value="$PROJECT_DIR$/gooey/gui/footer.py" />
<option value="$PROJECT_DIR$/gooey/gui/config_model.py" />
<option value="$PROJECT_DIR$/gooey/gui/client_app.py" />
<option value="$PROJECT_DIR$/gooey/gui/controller.py" />
<option value="$PROJECT_DIR$/gooey/gui/basic_config_panel.py" />
<option value="$PROJECT_DIR$/gooey/gooey_decorator.py" />
<option value="$PROJECT_DIR$/gooey/gui/components.py" />
<option value="$PROJECT_DIR$/gooey/mockapplications/example_argparse_souce_in_main.py" />
<option value="$PROJECT_DIR$/gooey/TODO.txt" />
<option value="$PROJECT_DIR$/gooey/image_repository.py" />
<option value="$PROJECT_DIR$/gooey/__init__.py" />
<option value="$PROJECT_DIR$/gooey/unittests/__init__.py" />
<option value="$PROJECT_DIR$/gooey/unittests/source_parser_unittest.py" />
<option value="$PROJECT_DIR$/gooey/source_parser_unittest.py" />
<option value="$PROJECT_DIR$/gooey/gui/option_reader.py" />
<option value="$PROJECT_DIR$/gooey/gui/gui_panel.py" />
<option value="$PROJECT_DIR$/gooey/gui/styling.py" />
<option value="$PROJECT_DIR$/gooey/gui/advanced_config.py" />
<option value="$PROJECT_DIR$/gooey/gui/base_window.py" />
<option value="$PROJECT_DIR$/gooey/mockapplications/mockapp.py" />
<option value="$PROJECT_DIR$/gooey/mockapplications/example_argparse_souce_in_try.py" />
<option value="$PROJECT_DIR$/README.md" />
<option value="$PROJECT_DIR$/setup.py" />
</list>
</option>
</component>
<component name="ProjectFrameBounds">
<option name="x" value="1912" />
<option name="y" value="-8" />
<option name="width" value="1936" />
<option name="height" value="1056" />
</component>
<component name="ProjectInspectionProfilesVisibleTreeState">
<entry key="Project Default">
<profile-state>
<expanded-state>
<State>
<id />
</State>
<State>
<id>Python</id>
</State>
</expanded-state>
</profile-state>
</entry>
</component>
<component name="ProjectLevelVcsManager" settingsEditedManually="false">
<OptionsSetting value="true" id="Add" />
<OptionsSetting value="true" id="Remove" />
<OptionsSetting value="true" id="Checkout" />
<OptionsSetting value="true" id="Update" />
<OptionsSetting value="true" id="Status" />
<OptionsSetting value="true" id="Edit" />
<ConfirmationsSetting value="2" id="Add" />
<ConfirmationsSetting value="0" id="Remove" />
</component>
<component name="ProjectReloadState">
<option name="STATE" value="0" />
</component>
<component name="ProjectView">
<navigator currentView="ProjectPane" proportions="" version="1" splitterProportion="0.5">
<flattenPackages />
<showMembers />
<showModules />
<showLibraryContents />
<hideEmptyPackages />
<abbreviatePackageNames />
<autoscrollToSource />
<autoscrollFromSource />
<sortByType />
</navigator>
<panes>
<pane id="Scope" />
<pane id="ProjectPane">
<subPane>
<PATH>
<PATH_ELEMENT>
<option name="myItemId" value="Gooey" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
</PATH_ELEMENT>
</PATH>
<PATH>
<PATH_ELEMENT>
<option name="myItemId" value="Gooey" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="Gooey" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
</PATH>
<PATH>
<PATH_ELEMENT>
<option name="myItemId" value="Gooey" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="Gooey" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="gooey" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
</PATH>
</subPane>
</pane>
</panes>
</component>
<component name="PropertiesComponent">
<property name="options.lastSelected" value="com.jetbrains.python.documentation.PythonDocumentationConfigurable" />
<property name="options.splitter.main.proportions" value="0.3" />
<property name="options.splitter.details.proportions" value="0.35654262" />
<property name="options.searchVisible" value="true" />
<property name="recentsLimit" value="5" />
<property name="FullScreen" value="false" />
<property name="last_opened_file_path" value="F:/Program Files/Git/bin/git.exe" />
<property name="LayoutCode.rearrangeEntriesPython" value="false" />
<property name="FileHistory.git4idea.history.GitHistoryProvider_flatWidth0" value="278" />
<property name="FileHistory.git4idea.history.GitHistoryProvider_flatOrder0" value="0" />
<property name="FileHistory.git4idea.history.GitHistoryProvider_flatWidth1" value="295" />
<property name="FileHistory.git4idea.history.GitHistoryProvider_flatOrder1" value="1" />
<property name="FileHistory.git4idea.history.GitHistoryProvider_flatWidth2" value="302" />
<property name="FileHistory.git4idea.history.GitHistoryProvider_flatOrder2" value="2" />
<property name="FileHistory.git4idea.history.GitHistoryProvider_flatWidth3" value="981" />
<property name="FileHistory.git4idea.history.GitHistoryProvider_flatOrder3" value="3" />
<property name="FileHistory.git4idea.history.GitHistoryProvider_treeWidth0" value="303" />
<property name="FileHistory.git4idea.history.GitHistoryProvider_treeOrder0" value="0" />
<property name="FileHistory.git4idea.history.GitHistoryProvider_treeWidth1" value="291" />
<property name="FileHistory.git4idea.history.GitHistoryProvider_treeOrder1" value="1" />
<property name="FileHistory.git4idea.history.GitHistoryProvider_treeWidth2" value="298" />
<property name="FileHistory.git4idea.history.GitHistoryProvider_treeOrder2" value="2" />
<property name="FileHistory.git4idea.history.GitHistoryProvider_treeWidth3" value="977" />
<property name="FileHistory.git4idea.history.GitHistoryProvider_treeOrder3" value="3" />
<property name="SearchEverywhereHistory" value="Horizontal&#10;register&#10;BaseWi&#10;attachPa" />
</component>
<component name="PyConsoleOptionsProvider">
<option name="myPythonConsoleState">
<console-settings />
</option>
</component>
<component name="RecentsManager">
<key name="MoveFile.RECENT_KEYS">
<recent name="C:\Users\Chris\Dropbox\pretty_gui\Gooey\gooey" />
<recent name="C:\Users\Chris\Dropbox\pretty_gui\Gooey\gooey\unittests" />
<recent name="C:\Users\Chris\Dropbox\pretty_gui\Gooey\gooey\gui" />
<recent name="C:\Users\Chris\Dropbox\pretty_gui\Gooey\gooey\images" />
</key>
</component>
<component name="RunManager" selected="Python.example_argparse_souce_in_try">
<configuration default="false" name="Unittest TestSourceParser.test_find_main" type="tests" factoryName="Unittests" temporary="true" nameIsGenerated="true">
<option name="INTERPRETER_OPTIONS" value="" />
<option name="PARENT_ENVS" value="true" />
<envs />
<option name="SDK_HOME" value="" />
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$/gooey" />
<option name="IS_MODULE_SDK" value="true" />
<option name="ADD_CONTENT_ROOTS" value="true" />
<option name="ADD_SOURCE_ROOTS" value="true" />
<module name="Gooey" />
<option name="SCRIPT_NAME" value="$PROJECT_DIR$/gooey/source_parser_unittest.py" />
<option name="CLASS_NAME" value="TestSourceParser" />
<option name="METHOD_NAME" value="test_find_main" />
<option name="FOLDER_NAME" value="" />
<option name="TEST_TYPE" value="TEST_METHOD" />
<option name="PATTERN" value="" />
<option name="USE_PATTERN" value="false" />
<option name="PUREUNITTEST" value="true" />
<option name="PARAMS" value="" />
<option name="USE_PARAM" value="false" />
<RunnerSettings RunnerId="PythonRunner" />
<ConfigurationWrapper RunnerId="PythonRunner" />
<method />
</configuration>
<configuration default="false" name="Unittests in source_parser_unittest (1)" type="tests" factoryName="Unittests" temporary="true" nameIsGenerated="true">
<option name="INTERPRETER_OPTIONS" value="" />
<option name="PARENT_ENVS" value="true" />
<envs />
<option name="SDK_HOME" value="" />
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$/gooey" />
<option name="IS_MODULE_SDK" value="true" />
<option name="ADD_CONTENT_ROOTS" value="true" />
<option name="ADD_SOURCE_ROOTS" value="true" />
<module name="Gooey" />
<option name="SCRIPT_NAME" value="$PROJECT_DIR$/gooey/source_parser_unittest.py" />
<option name="CLASS_NAME" value="" />
<option name="METHOD_NAME" value="" />
<option name="FOLDER_NAME" value="" />
<option name="TEST_TYPE" value="TEST_SCRIPT" />
<option name="PATTERN" value="" />
<option name="USE_PATTERN" value="false" />
<option name="PUREUNITTEST" value="true" />
<option name="PARAMS" value="" />
<option name="USE_PARAM" value="false" />
<RunnerSettings RunnerId="PythonRunner" />
<ConfigurationWrapper RunnerId="PythonRunner" />
<method />
</configuration>
<configuration default="false" name="mockapp" type="PythonConfigurationType" factoryName="Python" temporary="true">
<option name="INTERPRETER_OPTIONS" value="" />
<option name="PARENT_ENVS" value="true" />
<envs>
<env name="PYTHONUNBUFFERED" value="1" />
</envs>
<option name="SDK_HOME" value="" />
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$/gooey/mockapplications" />
<option name="IS_MODULE_SDK" value="true" />
<option name="ADD_CONTENT_ROOTS" value="true" />
<option name="ADD_SOURCE_ROOTS" value="true" />
<module name="Gooey" />
<option name="SCRIPT_NAME" value="$PROJECT_DIR$/gooey/mockapplications/mockapp.py" />
<option name="PARAMETERS" value="" />
<RunnerSettings RunnerId="PythonRunner" />
<ConfigurationWrapper RunnerId="PythonRunner" />
<method />
</configuration>
<configuration default="false" name="example_argparse_souce_in_main" type="PythonConfigurationType" factoryName="Python" temporary="true">
<option name="INTERPRETER_OPTIONS" value="" />
<option name="PARENT_ENVS" value="true" />
<envs>
<env name="PYTHONUNBUFFERED" value="1" />
</envs>
<option name="SDK_HOME" value="" />
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$/gooey/mockapplications" />
<option name="IS_MODULE_SDK" value="true" />
<option name="ADD_CONTENT_ROOTS" value="true" />
<option name="ADD_SOURCE_ROOTS" value="true" />
<module name="Gooey" />
<option name="SCRIPT_NAME" value="$PROJECT_DIR$/gooey/mockapplications/example_argparse_souce_in_main.py" />
<option name="PARAMETERS" value="" />
<RunnerSettings RunnerId="PythonRunner" />
<ConfigurationWrapper RunnerId="PythonRunner" />
<method />
</configuration>
<configuration default="false" name="example_argparse_souce_in_try" type="PythonConfigurationType" factoryName="Python" temporary="true">
<option name="INTERPRETER_OPTIONS" value="" />
<option name="PARENT_ENVS" value="true" />
<envs>
<env name="PYTHONUNBUFFERED" value="1" />
</envs>
<option name="SDK_HOME" value="" />
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$/gooey/mockapplications" />
<option name="IS_MODULE_SDK" value="true" />
<option name="ADD_CONTENT_ROOTS" value="true" />
<option name="ADD_SOURCE_ROOTS" value="true" />
<module name="Gooey" />
<option name="SCRIPT_NAME" value="$PROJECT_DIR$/gooey/mockapplications/example_argparse_souce_in_try.py" />
<option name="PARAMETERS" value="" />
<RunnerSettings RunnerId="PythonRunner" />
<ConfigurationWrapper RunnerId="PythonRunner" />
<method />
</configuration>
<configuration default="true" type="tests" factoryName="py.test">
<option name="INTERPRETER_OPTIONS" value="" />
<option name="PARENT_ENVS" value="true" />
<envs />
<option name="SDK_HOME" value="" />
<option name="WORKING_DIRECTORY" value="" />
<option name="IS_MODULE_SDK" value="false" />
<option name="ADD_CONTENT_ROOTS" value="true" />
<option name="ADD_SOURCE_ROOTS" value="true" />
<module name="Gooey" />
<option name="SCRIPT_NAME" value="" />
<option name="CLASS_NAME" value="" />
<option name="METHOD_NAME" value="" />
<option name="FOLDER_NAME" value="" />
<option name="TEST_TYPE" value="TEST_SCRIPT" />
<option name="PATTERN" value="" />
<option name="USE_PATTERN" value="false" />
<option name="testToRun" value="" />
<option name="keywords" value="" />
<option name="params" value="" />
<option name="USE_PARAM" value="false" />
<option name="USE_KEYWORD" value="false" />
<method />
</configuration>
<configuration default="true" type="tests" factoryName="Nosetests">
<option name="INTERPRETER_OPTIONS" value="" />
<option name="PARENT_ENVS" value="true" />
<envs />
<option name="SDK_HOME" value="" />
<option name="WORKING_DIRECTORY" value="" />
<option name="IS_MODULE_SDK" value="false" />
<option name="ADD_CONTENT_ROOTS" value="true" />
<option name="ADD_SOURCE_ROOTS" value="true" />
<module name="Gooey" />
<option name="SCRIPT_NAME" value="" />
<option name="CLASS_NAME" value="" />
<option name="METHOD_NAME" value="" />
<option name="FOLDER_NAME" value="" />
<option name="TEST_TYPE" value="TEST_SCRIPT" />
<option name="PATTERN" value="" />
<option name="USE_PATTERN" value="false" />
<option name="PARAMS" value="" />
<option name="USE_PARAM" value="false" />
<method />
</configuration>
<configuration default="true" type="PythonConfigurationType" factoryName="Python">
<option name="INTERPRETER_OPTIONS" value="" />
<option name="PARENT_ENVS" value="true" />
<envs>
<env name="PYTHONUNBUFFERED" value="1" />
</envs>
<option name="SDK_HOME" value="" />
<option name="WORKING_DIRECTORY" value="" />
<option name="IS_MODULE_SDK" value="false" />
<option name="ADD_CONTENT_ROOTS" value="true" />
<option name="ADD_SOURCE_ROOTS" value="true" />
<module name="Gooey" />
<option name="SCRIPT_NAME" value="" />
<option name="PARAMETERS" value="" />
<method />
</configuration>
<configuration default="true" type="tests" factoryName="Unittests">
<option name="INTERPRETER_OPTIONS" value="" />
<option name="PARENT_ENVS" value="true" />
<envs />
<option name="SDK_HOME" value="" />
<option name="WORKING_DIRECTORY" value="" />
<option name="IS_MODULE_SDK" value="false" />
<option name="ADD_CONTENT_ROOTS" value="true" />
<option name="ADD_SOURCE_ROOTS" value="true" />
<module name="Gooey" />
<option name="SCRIPT_NAME" value="" />
<option name="CLASS_NAME" value="" />
<option name="METHOD_NAME" value="" />
<option name="FOLDER_NAME" value="" />
<option name="TEST_TYPE" value="TEST_SCRIPT" />
<option name="PATTERN" value="" />
<option name="USE_PATTERN" value="false" />
<option name="PUREUNITTEST" value="true" />
<option name="PARAMS" value="" />
<option name="USE_PARAM" value="false" />
<method />
</configuration>
<configuration default="true" type="tests" factoryName="Doctests">
<option name="INTERPRETER_OPTIONS" value="" />
<option name="PARENT_ENVS" value="true" />
<envs />
<option name="SDK_HOME" value="" />
<option name="WORKING_DIRECTORY" value="" />
<option name="IS_MODULE_SDK" value="false" />
<option name="ADD_CONTENT_ROOTS" value="true" />
<option name="ADD_SOURCE_ROOTS" value="true" />
<module name="Gooey" />
<option name="SCRIPT_NAME" value="" />
<option name="CLASS_NAME" value="" />
<option name="METHOD_NAME" value="" />
<option name="FOLDER_NAME" value="" />
<option name="TEST_TYPE" value="TEST_SCRIPT" />
<option name="PATTERN" value="" />
<option name="USE_PATTERN" value="false" />
<method />
</configuration>
<configuration default="true" type="tests" factoryName="Attests">
<option name="INTERPRETER_OPTIONS" value="" />
<option name="PARENT_ENVS" value="true" />
<envs />
<option name="SDK_HOME" value="" />
<option name="WORKING_DIRECTORY" value="" />
<option name="IS_MODULE_SDK" value="false" />
<option name="ADD_CONTENT_ROOTS" value="true" />
<option name="ADD_SOURCE_ROOTS" value="true" />
<module name="Gooey" />
<option name="SCRIPT_NAME" value="" />
<option name="CLASS_NAME" value="" />
<option name="METHOD_NAME" value="" />
<option name="FOLDER_NAME" value="" />
<option name="TEST_TYPE" value="TEST_SCRIPT" />
<option name="PATTERN" value="" />
<option name="USE_PATTERN" value="false" />
<method />
</configuration>
<list size="5">
<item index="0" class="java.lang.String" itemvalue="Python tests.Unittest TestSourceParser.test_find_main" />
<item index="1" class="java.lang.String" itemvalue="Python tests.Unittests in source_parser_unittest (1)" />
<item index="2" class="java.lang.String" itemvalue="Python.mockapp" />
<item index="3" class="java.lang.String" itemvalue="Python.example_argparse_souce_in_main" />
<item index="4" class="java.lang.String" itemvalue="Python.example_argparse_souce_in_try" />
</list>
<recent_temporary>
<list size="5">
<item index="0" class="java.lang.String" itemvalue="Python.example_argparse_souce_in_try" />
<item index="1" class="java.lang.String" itemvalue="Python.example_argparse_souce_in_main" />
<item index="2" class="java.lang.String" itemvalue="Python.mockapp" />
<item index="3" class="java.lang.String" itemvalue="Python tests.Unittests in source_parser_unittest (1)" />
<item index="4" class="java.lang.String" itemvalue="Python tests.Unittest TestSourceParser.test_find_main" />
</list>
</recent_temporary>
</component>
<component name="ShelveChangesManager" show_recycled="false" />
<component name="SvnConfiguration" maxAnnotateRevisions="500" myUseAcceleration="nothing" myAutoUpdateAfterCommit="false" cleanupOnStartRun="false" SSL_PROTOCOLS="all">
<option name="USER" value="" />
<option name="PASSWORD" value="" />
<option name="mySSHConnectionTimeout" value="30000" />
<option name="mySSHReadTimeout" value="30000" />
<option name="LAST_MERGED_REVISION" />
<option name="MERGE_DRY_RUN" value="false" />
<option name="MERGE_DIFF_USE_ANCESTRY" value="true" />
<option name="UPDATE_LOCK_ON_DEMAND" value="false" />
<option name="IGNORE_SPACES_IN_MERGE" value="false" />
<option name="CHECK_NESTED_FOR_QUICK_MERGE" value="false" />
<option name="IGNORE_SPACES_IN_ANNOTATE" value="true" />
<option name="SHOW_MERGE_SOURCES_IN_ANNOTATE" value="true" />
<option name="FORCE_UPDATE" value="false" />
<option name="IGNORE_EXTERNALS" value="false" />
<myIsUseDefaultProxy>false</myIsUseDefaultProxy>
</component>
<component name="TaskManager">
<task active="true" id="Default" summary="Default task">
<changelist id="c98c4f39-9f79-4674-9cd3-7d4122eb5aa3" name="Default" comment="" />
<created>1395883289086</created>
<updated>1395883289086</updated>
</task>
<task id="LOCAL-00001" summary="Flattened project structure &#10;&#10;Refactored source_parser.py to be more manageable &#10;&#10;Converted the I18N system from a class into a normal module. &#10;&#10;">
<created>1407616619682</created>
<updated>1407616619682</updated>
</task>
<task id="LOCAL-00002" summary="Updated Readme">
<created>1407616750655</created>
<updated>1407616750655</updated>
</task>
<task id="LOCAL-00003" summary="Updated Controller to accept instance of controlled class -- going to refactor so that the weird &quot;register_controller&quot; thing doesn't need to happen&#10;&#10;Resolved PEP issues">
<created>1407637848025</created>
<updated>1407637848025</updated>
</task>
<task id="LOCAL-00004" summary="Replaced duplicated code with utility funcs in styling.py &#10;&#10;">
<created>1408832132664</created>
<updated>1408832132664</updated>
</task>
<task id="LOCAL-00005" summary="Updated Documentation">
<created>1408851435499</created>
<updated>1408851435499</updated>
</task>
<task id="LOCAL-00006" summary="Updated README">
<created>1408891389243</created>
<updated>1408891389243</updated>
</task>
<task id="LOCAL-00007" summary="fixed table in README">
<created>1408891464872</created>
<updated>1408891464872</updated>
</task>
<task id="LOCAL-00008" summary="fixed url in README">
<created>1408891508926</created>
<updated>1408891508926</updated>
</task>
<task id="LOCAL-00009" summary="Fixed setup.py (I think)">
<created>1408896861350</created>
<updated>1408896861350</updated>
</task>
<task id="LOCAL-00010" summary="Fixed setup.py again (I think)">
<created>1408896884627</created>
<updated>1408896884627</updated>
</task>
<task id="LOCAL-00011" summary="Added data_files to setup.py">
<created>1408910743754</created>
<updated>1408910743754</updated>
</task>
<option name="localTasksCounter" value="12" />
<servers />
</component>
<component name="TodoView" selected-index="4">
<todo-panel id="selected-file">
<are-packages-shown value="false" />
<are-modules-shown value="false" />
<flatten-packages value="false" />
<is-autoscroll-to-source value="false" />
</todo-panel>
<todo-panel id="all">
<are-packages-shown value="false" />
<are-modules-shown value="false" />
<flatten-packages value="false" />
<is-autoscroll-to-source value="false" />
</todo-panel>
<todo-panel id="default-changelist">
<are-packages-shown value="false" />
<are-modules-shown value="false" />
<flatten-packages value="false" />
<is-autoscroll-to-source value="false" />
</todo-panel>
</component>
<component name="ToolWindowManager">
<frame x="1912" y="-8" width="1936" height="1056" extended-state="6" />
<editor active="false" />
<layout>
<window_info id="Messages" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="10" side_tool="false" content_ui="tabs" />
<window_info id="Changes" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.32937366" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
<window_info id="Terminal" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.32937366" sideWeight="0.5" order="11" side_tool="false" content_ui="tabs" />
<window_info id="TODO" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.32937366" sideWeight="0.5" order="6" side_tool="false" content_ui="tabs" />
<window_info id="Structure" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.24960506" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
<window_info id="Project" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" weight="0.1637704" sideWeight="0.5" order="0" side_tool="false" content_ui="combo" />
<window_info id="Debug" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.39956802" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
<window_info id="Favorites" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="2" side_tool="true" content_ui="tabs" />
<window_info id="Event Log" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="8" side_tool="true" content_ui="tabs" />
<window_info id="Run" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.19978401" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
<window_info id="Version Control" active="true" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" weight="0.16630669" sideWeight="0.5" order="9" side_tool="false" content_ui="tabs" />
<window_info id="Cvs" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.25" sideWeight="0.5" order="4" side_tool="false" content_ui="tabs" />
<window_info id="Message" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
<window_info id="Ant Build" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.25" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
<window_info id="Find" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.32937366" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
<window_info id="Commander" active="false" anchor="right" auto_hide="false" internal_type="SLIDING" type="SLIDING" visible="false" weight="0.4" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
<window_info id="Hierarchy" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.25" sideWeight="0.5" order="2" side_tool="false" content_ui="combo" />
<window_info id="Inspection" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.4" sideWeight="0.5" order="5" side_tool="false" content_ui="tabs" />
</layout>
</component>
<component name="Vcs.Log.UiProperties">
<option name="RECENTLY_FILTERED_USER_GROUPS">
<collection />
</option>
</component>
<component name="VcsContentAnnotationSettings">
<option name="myLimit" value="2678400000" />
</component>
<component name="VcsManagerConfiguration">
<option name="myTodoPanelSettings">
<TodoPanelSettings />
</option>
<MESSAGE value="Flattened project structure &#10;&#10;Refactored source_parser.py to be more manageable &#10;&#10;Converted the I18N system from a class into a normal module. &#10;&#10;" />
<MESSAGE value="Updated Readme" />
<MESSAGE value="Updated Controller to accept instance of controlled class -- going to refactor so that the weird &quot;register_controller&quot; thing doesn't need to happen&#10;&#10;Resolved PEP issues" />
<MESSAGE value="Replaced duplicated code with utility funcs in styling.py &#10;&#10;" />
<MESSAGE value="Updated Documentation" />
<MESSAGE value="Updated README" />
<MESSAGE value="fixed table in README" />
<MESSAGE value="fixed url in README" />
<MESSAGE value="Fixed setup.py (I think)" />
<MESSAGE value="Fixed setup.py again (I think)" />
<MESSAGE value="Merge branch 'patch-1' of git://github.com/svisser/Gooey into svisser-patch-1&#10;&#10;Conflicts:&#10;&#9;setup.py&#10;" />
<MESSAGE value="Added data_files to setup.py" />
<option name="LAST_COMMIT_MESSAGE" value="Added data_files to setup.py" />
</component>
<component name="XDebuggerManager">
<breakpoint-manager>
<breakpoints>
<line-breakpoint enabled="true" type="python-line">
<url>file://$PROJECT_DIR$/gooey/mockapplications/mockapp.py</url>
<line>5</line>
<option name="timeStamp" value="10" />
</line-breakpoint>
</breakpoints>
<breakpoints-dialog>
<breakpoints-dialog />
</breakpoints-dialog>
<default-breakpoints>
<breakpoint type="python-exception">
<properties notifyOnTerminate="true" exception="BaseException">
<option name="notifyOnTerminate" value="true" />
</properties>
</breakpoint>
</default-breakpoints>
<option name="time" value="11" />
</breakpoint-manager>
</component>
<component name="editorHistoryManager">
<entry file="file://$PROJECT_DIR$/gooey/source_parser.py">
<provider selected="true" editor-type-id="text-editor">
<state line="149" column="0" selection-start="4124" selection-end="4124" vertical-scroll-proportion="0.0" vertical-offset="2533" max-vertical-offset="2890" />
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/gooey/mockapplications/mockapp.py">
<provider selected="true" editor-type-id="text-editor">
<state line="19" column="17" selection-start="249" selection-end="249" vertical-scroll-proportion="0.0" vertical-offset="0" max-vertical-offset="969" />
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/gooey/mockapplications/mockapp.py">
<provider selected="true" editor-type-id="text-editor">
<state line="19" column="17" selection-start="249" selection-end="249" vertical-scroll-proportion="0.0" vertical-offset="0" max-vertical-offset="969" />
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/gooey/mockapplications/mockapp.py">
<provider selected="true" editor-type-id="text-editor">
<state line="19" column="17" selection-start="249" selection-end="249" vertical-scroll-proportion="0.0" vertical-offset="0" max-vertical-offset="969" />
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/MANIFEST">
<provider selected="true" editor-type-id="text-editor">
<state line="0" column="0" selection-start="0" selection-end="0" vertical-scroll-proportion="0.0" vertical-offset="0" max-vertical-offset="1037" />
</provider>
</entry>
<entry file="file://C:/Python27/Lib/argparse.py">
<provider selected="true" editor-type-id="text-editor">
<state line="802" column="27" selection-start="29060" selection-end="29060" vertical-scroll-proportion="-27.927273" vertical-offset="11979" max-vertical-offset="40120" />
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/gooey/gui/action_sorter_unittest.py">
<provider selected="true" editor-type-id="text-editor">
<state line="0" column="0" selection-start="0" selection-end="0" vertical-scroll-proportion="0.0" vertical-offset="0" max-vertical-offset="1275" />
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/gooey/languages/english.json">
<provider selected="true" editor-type-id="text-editor">
<state line="13" column="18" selection-start="551" selection-end="564" vertical-scroll-proportion="0.0" vertical-offset="221" max-vertical-offset="425" />
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/gooey/source_parser.py">
<provider selected="true" editor-type-id="text-editor">
<state line="74" column="0" selection-start="2313" selection-end="2313" vertical-scroll-proportion="-0.44409448" vertical-offset="1421" max-vertical-offset="2958" />
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/gooey/gui/argparse_test_data.py">
<provider selected="true" editor-type-id="text-editor">
<state line="0" column="0" selection-start="0" selection-end="0" vertical-scroll-proportion="0.0" vertical-offset="0" max-vertical-offset="493" />
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/gooey/gui/component_register_unittest.py">
<provider selected="true" editor-type-id="text-editor">
<state line="0" column="0" selection-start="0" selection-end="0" vertical-scroll-proportion="0.0" vertical-offset="0" max-vertical-offset="595" />
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/gooey/gui/component_register.py">
<provider selected="true" editor-type-id="text-editor">
<state line="0" column="0" selection-start="0" selection-end="0" vertical-scroll-proportion="0.0" vertical-offset="0" max-vertical-offset="595" />
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/gooey/gui/option_reader_unittest.py">
<provider selected="true" editor-type-id="text-editor">
<state line="0" column="0" selection-start="0" selection-end="0" vertical-scroll-proportion="0.0" vertical-offset="0" max-vertical-offset="663" />
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/gooey/gui/msg_dialog.py">
<provider selected="true" editor-type-id="text-editor">
<state line="0" column="0" selection-start="0" selection-end="0" vertical-scroll-proportion="0.0" vertical-offset="0" max-vertical-offset="391" />
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/gooey/gui/imageutil.py">
<provider selected="true" editor-type-id="text-editor">
<state line="17" column="26" selection-start="264" selection-end="264" vertical-scroll-proportion="0.3211111" vertical-offset="0" max-vertical-offset="900" />
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/gooey/codegen.py">
<provider selected="true" editor-type-id="text-editor">
<state line="0" column="0" selection-start="0" selection-end="0" vertical-scroll-proportion="-2.4897637" vertical-offset="1581" max-vertical-offset="9911" />
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/gooey/gui/component_factory.py">
<provider selected="true" editor-type-id="text-editor">
<state line="17" column="6" selection-start="214" selection-end="214" vertical-scroll-proportion="-0.18740158" vertical-offset="357" max-vertical-offset="1122" />
</provider>
</entry>
<entry file="file://C:/Python27/Lib/site-packages/wx-3.0-msw/wx/_core.py">
<provider selected="true" editor-type-id="text-editor">
<state line="14447" column="0" selection-start="541596" selection-end="541596" vertical-scroll-proportion="0.33207548" vertical-offset="245406" max-vertical-offset="287963" />
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/gooey/gui/client_app.py">
<provider selected="true" editor-type-id="text-editor">
<state line="17" column="26" selection-start="377" selection-end="377" vertical-scroll-proportion="-0.080314964" vertical-offset="289" max-vertical-offset="1241" />
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/gooey/i18n_config.py">
<provider selected="true" editor-type-id="text-editor">
<state line="6" column="4" selection-start="154" selection-end="154" vertical-scroll-proportion="0.16062993" vertical-offset="0" max-vertical-offset="635" />
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/gooey/gui/controller.py">
<provider selected="true" editor-type-id="text-editor">
<state line="42" column="21" selection-start="1045" selection-end="1045" vertical-scroll-proportion="0.0" vertical-offset="0" max-vertical-offset="1564" />
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/gooey/gui/basic_config_panel.py">
<provider selected="true" editor-type-id="text-editor">
<state line="17" column="27" selection-start="322" selection-end="322" vertical-scroll-proportion="0.0" vertical-offset="334" max-vertical-offset="969" />
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/gooey/gui/runtime_display_panel.py">
<provider selected="true" editor-type-id="text-editor">
<state line="23" column="6" selection-start="333" selection-end="333" vertical-scroll-proportion="0.0" vertical-offset="129" max-vertical-offset="1139" />
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/gooey/TODO.txt">
<provider selected="true" editor-type-id="text-editor">
<state line="4" column="24" selection-start="75" selection-end="75" vertical-scroll-proportion="0.0" vertical-offset="0" max-vertical-offset="221" />
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/gooey/parser_exceptions.py">
<provider selected="true" editor-type-id="text-editor">
<state line="11" column="0" selection-start="165" selection-end="165" vertical-scroll-proportion="0.30456027" vertical-offset="0" max-vertical-offset="614" />
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/gooey/monkey_parser.py">
<provider selected="true" editor-type-id="text-editor">
<state line="77" column="31" selection-start="2700" selection-end="2700" vertical-scroll-proportion="0.0" vertical-offset="1224" max-vertical-offset="1870" />
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/gooey/image_repository.py">
<provider selected="true" editor-type-id="text-editor">
<state line="26" column="0" selection-start="889" selection-end="889" vertical-scroll-proportion="0.0" vertical-offset="0" max-vertical-offset="731">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/gooey/gui/action_sorter.py">
<provider selected="true" editor-type-id="text-editor">
<state line="127" column="10" selection-start="4958" selection-end="4958" vertical-scroll-proportion="0.0" vertical-offset="510" max-vertical-offset="2482" />
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/gooey/source_parser_unittest.py">
<provider selected="true" editor-type-id="text-editor">
<state line="17" column="7" selection-start="190" selection-end="190" vertical-scroll-proportion="0.0" vertical-offset="0" max-vertical-offset="3485" />
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/gooey/__init__.py">
<provider selected="true" editor-type-id="text-editor">
<state line="0" column="33" selection-start="33" selection-end="33" vertical-scroll-proportion="0.0" vertical-offset="0" max-vertical-offset="614" />
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/gooey/i18n_unittest.py">
<provider selected="true" editor-type-id="text-editor">
<state line="6" column="15" selection-start="56" selection-end="64" vertical-scroll-proportion="0.16062993" vertical-offset="0" max-vertical-offset="646" />
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/gooey/gui/display_main.py">
<provider selected="true" editor-type-id="text-editor">
<state line="0" column="0" selection-start="0" selection-end="0" vertical-scroll-proportion="-0.6425197" vertical-offset="408" max-vertical-offset="1802" />
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/gooey/gui/header.py">
<provider selected="true" editor-type-id="text-editor">
<state line="20" column="37" selection-start="230" selection-end="319" vertical-scroll-proportion="0.31496063" vertical-offset="38" max-vertical-offset="1666" />
</provider>
</entry>
<entry file="file://C:/Python27/Lib/abc.py">
<provider selected="true" editor-type-id="text-editor">
<state line="64" column="6" selection-start="1777" selection-end="1777" vertical-scroll-proportion="0.33228347" vertical-offset="843" max-vertical-offset="3213" />
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/gooey/gui/footer.py">
<provider selected="true" editor-type-id="text-editor">
<state line="95" column="6" selection-start="2571" selection-end="2586" vertical-scroll-proportion="2.543307" vertical-offset="0" max-vertical-offset="2380" />
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/gooey/gui/advanced_config_unittest.py">
<provider selected="true" editor-type-id="text-editor">
<state line="25" column="0" selection-start="482" selection-end="482" vertical-scroll-proportion="0.45511812" vertical-offset="0" max-vertical-offset="748" />
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/gooey/gui/option_reader.py">
<provider selected="true" editor-type-id="text-editor">
<state line="19" column="17" selection-start="285" selection-end="285" vertical-scroll-proportion="0.5086614" vertical-offset="0" max-vertical-offset="635" />
</provider>
</entry>
<entry file="file://C:/Python27/Lib/pydoc.py">
<provider selected="true" editor-type-id="text-editor">
<state line="717" column="14" selection-start="29176" selection-end="29176" vertical-scroll-proportion="0.33228347" vertical-offset="11927" max-vertical-offset="40154" />
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/gooey/gui/base_window.py">
<provider selected="true" editor-type-id="text-editor">
<state line="76" column="24" selection-start="1983" selection-end="1983" vertical-scroll-proportion="0.0" vertical-offset="1115" max-vertical-offset="1955" />
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/gooey/gui/styling.py">
<provider selected="true" editor-type-id="text-editor">
<state line="35" column="13" selection-start="959" selection-end="959" vertical-scroll-proportion="0.7622378" vertical-offset="50" max-vertical-offset="765" />
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/gooey/gui/advanced_config.py">
<provider selected="true" editor-type-id="text-editor">
<state line="86" column="0" selection-start="2545" selection-end="2545" vertical-scroll-proportion="0.4378788" vertical-offset="1173" max-vertical-offset="1938" />
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/gooey/gui/components.py">
<provider selected="true" editor-type-id="text-editor">
<state line="28" column="25" selection-start="451" selection-end="474" vertical-scroll-proportion="0.0" vertical-offset="714" max-vertical-offset="5661" />
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/gooey/mockapplications/example_argparse_souce_in_main.py">
<provider selected="true" editor-type-id="text-editor">
<state line="50" column="6" selection-start="897" selection-end="897" vertical-scroll-proportion="0.0" vertical-offset="952" max-vertical-offset="2499" />
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/README.txt">
<provider selected="true" editor-type-id="text-editor">
<state line="0" column="0" selection-start="0" selection-end="0" vertical-scroll-proportion="0.0" vertical-offset="0" max-vertical-offset="1326" />
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/gooey/gooey_decorator.py">
<provider selected="true" editor-type-id="text-editor">
<state line="23" column="5" selection-start="579" selection-end="579" vertical-scroll-proportion="0.13333334" vertical-offset="84" max-vertical-offset="1513" />
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/gooey/mockapplications/module_with_no_argparse.py">
<provider selected="true" editor-type-id="text-editor">
<state line="13" column="0" selection-start="129" selection-end="129" vertical-scroll-proportion="0.24555555" vertical-offset="0" max-vertical-offset="900" />
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/README.md">
<provider selected="true" editor-type-id="text-editor">
<state line="88" column="15" selection-start="3328" selection-end="3328" vertical-scroll-proportion="0.5684455" vertical-offset="1006" max-vertical-offset="3825" />
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/gooey/mockapplications/example_argparse_souce_in_try.py">
<provider selected="true" editor-type-id="text-editor">
<state line="91" column="68" selection-start="2256" selection-end="2256" vertical-scroll-proportion="-0.11333334" vertical-offset="1547" max-vertical-offset="2839" />
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/gooey/mockapplications/mockapp.py">
<provider selected="true" editor-type-id="text-editor">
<state line="14" column="4" selection-start="205" selection-end="205" vertical-scroll-proportion="0.15111111" vertical-offset="0" max-vertical-offset="900">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/gooey/i18n.py">
<provider selected="true" editor-type-id="text-editor">
<state line="31" column="11" selection-start="708" selection-end="708" vertical-scroll-proportion="0.0" vertical-offset="0" max-vertical-offset="850">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/setup.py">
<provider selected="true" editor-type-id="text-editor">
<state line="30" column="6" selection-start="723" selection-end="723" vertical-scroll-proportion="0.6608579" vertical-offset="0" max-vertical-offset="746">
<folding />
</state>
</provider>
</entry>
</component>
</project>

17
.project

@ -1,17 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>Gooey</name>
<comment></comment>
<projects>
</projects>
<buildSpec>
<buildCommand>
<name>org.python.pydev.PyDevBuilder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>org.python.pydev.pythonNature</nature>
</natures>
</projectDescription>

8
.pydevproject

@ -1,8 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?eclipse-pydev version="1.0"?><pydev_project>
<pydev_pathproperty name="org.python.pydev.PROJECT_SOURCE_PATH">
<path>/${PROJECT_DIR_NAME}/gooey</path>
</pydev_pathproperty>
<pydev_property name="org.python.pydev.PYTHON_PROJECT_VERSION">python 2.7</pydev_property>
<pydev_property name="org.python.pydev.PYTHON_PROJECT_INTERPRETER">C:\Python27\python.exe</pydev_property>
</pydev_project>

4
.settings/org.eclipse.core.resources.prefs

@ -1,4 +0,0 @@
eclipse.preferences.version=1
encoding//gooey/codegen.py=utf-8
encoding//gooey/mockapplications/example_argparse_souce_in_main.py=utf-8
encoding//gooey/mockapplications/example_argparse_souce_in_try.py=utf-8

46
MANIFEST

@ -1,46 +0,0 @@
# file GENERATED by distutils, do NOT edit
LICENSE.txt
README.txt
setup.py
gooey\__init__.py
gooey\codegen.py
gooey\gooey_decorator.py
gooey\i18n.py
gooey\i18n_config.py
gooey\i18n_unittest.py
gooey\image_repository.py
gooey\monkey_parser.py
gooey\parser_exceptions.py
gooey\source_parser.py
gooey\source_parser_unittest.py
gooey\gui\__init__.py
gooey\gui\action_sorter.py
gooey\gui\action_sorter_unittest.py
gooey\gui\advanced_config.py
gooey\gui\advanced_config_unittest.py
gooey\gui\argparse_test_data.py
gooey\gui\base_window.py
gooey\gui\basic_config_panel.py
gooey\gui\client_app.py
gooey\gui\component_factory.py
gooey\gui\component_register.py
gooey\gui\component_register_unittest.py
gooey\gui\components.py
gooey\gui\components_unittest.py
gooey\gui\controller.py
gooey\gui\display_main.py
gooey\gui\footer.py
gooey\gui\header.py
gooey\gui\imageutil.py
gooey\gui\msg_dialog.py
gooey\gui\option_reader.py
gooey\gui\option_reader_unittest.py
gooey\gui\runtime_display_panel.py
gooey\gui\styling.py
gooey\languages\__init__.py
gooey\languages\eng.py
gooey\mockapplications\__init__.py
gooey\mockapplications\example_argparse_souce_in_main.py
gooey\mockapplications\example_argparse_souce_in_try.py
gooey\mockapplications\mockapp.py
gooey\mockapplications\module_with_no_argparse.py

3
MANIFEST.in

@ -1,2 +1,3 @@
include *.txt
recursive-include docs *.txt
include gooey\images\*
include gooey\languages\*

2
README.md

@ -11,7 +11,7 @@ Turn (almost) any Console Program into a GUI application with one line
**Update**
----------
Whoops. Looks like I packaged it up wrong with distutils(first time doing it!), so after install the program is missing the language and image files. You can remedy this by manually copying `/images` and `/languages` from the repo into `/site-packages/gooey`. I'll have this fixed in a second.
First attempt at packaging went not as planned. I've since swapped from `distutils` to `setuptools` and that seems to have remedied the issue. However, if you do receive an error after running `setup.py` please let me know by submitting an issue! It was caused by the image and language files not copying to the correct location during setup, so in a pinch you can remedy this by manually copying `/images` and `/languages` from the repo into `/site-packages/gooey`.

217
README.txt

@ -1,19 +1,92 @@
Gooey
=====
Gooey (Beta)
=====
Turn (almost) any Console Program into a GUI application with one line
(image)
<p align="center">
<img src="https://raw.githubusercontent.com/chriskiehl/Gooey/master/resources/primary.png"/>
</p>
Turn (almost) any command line program into a full GUI application with one line
**Update**
----------
Whoops. Looks like I packaged it up wrong with distutils(first time doing it!), so after install the program is missing the language and image files. You can remedy this by manually copying `/images` and `/languages` from the repo into `/site-packages/gooey`. I'll have this fixed in a second.
Table of Contents
-----------------
- [Gooey](#gooey)
- [Table of contents](#table-of-contents)
- [Quick Start](#quick-start)
- [Installation Instructions](#installation-instructions)
- [Usage](#usage)
- [What It Is](#what-is-it)
- [Why Is It](#why)
- [Who is this for](#who-is-this-for)
- [How does it work](#how-does-it-work)
- [Configuration](#configuration)
- [Full/Advanced](#advanced)
- [Basic](#basic)
- [No Config](#no-config)
- [Final Screen](#final-screen)
- [TODO](#todo)
- [Contributing](#wanna-help)
- [Image Credits](#image-credits)
Quick Start
-------------
###Installation instructions
To install Gooey, simply clone the project to your local directory
git clone https://github.com/chriskiehl/Gooey.git
###Usage
Gooey is attached to your code via a simple decorator on your `main` method.
from gooey import Gooey
@Gooey <--- all it takes! :)
def main():
# rest of code
Different styling and functionality can be configured by passing arguments into the decorator.
# options
@Gooey(advanced=Boolean, # toggle whether to show advanced config or not
language=language_string, # Translations configurable via json
config=Boolean, # skip config screens all together
program_name='name', # Defaults to script name
program_description # Defaults to ArgParse Description
)
def main():
# rest of app
See: [How does it Work](#how-does-it-work) section for details on each option.
What is it?
-----------
Gooey converts your Console Applications into end-user friendly GUI applications. It lets you focus on building robust, configurable programs without having to worry about how it will be presented to and interacted with by your average non-techie person.
Gooey converts your Console Applications into end-user friendly GUI applications. It lets you focus on building robust, configurable programs in a familiar way, all without having to worry about how it will be presented to and interacted with by your average user.
Why?
---
Because as much as we love the command prompt, the rest of the world looks at it like some horrific relic from the '80s. As I embarked in the world of freelancing, I wanted to deliver something a little more polished than a black box with white text, and something which was easily understandable and configurable to the end-user.
Because as much as we love the command prompt, the rest of the world looks at it like some kind of ugly relic from the early '80s. On top of that, more often than not programs need to do more than just one thing, and that means giving options, which previously meant either building a GUI, or trying to explain how to supply arguments to a Console Application. Gooey was made to (hopefully) solve those problems. It makes programs easy to use, and pretty to look at!
Who is this for?
----------------
If you're building utilities for yourself, other programmers, or something which produces a result that you want capture and pipe over to another console application (e.g. *nix philosophy utils), Gooey probably isn't the tool for you. However, if you're building 'run and done,' around the office style scripts, things that shovel bits from point A to point B, or simply something that's targeted at a non-programmer, Gooey is the perfect tool for the job. It lets you build as complex of an application as your heart desires all while getting the GUI side for free.
How does it work?
------------------
@ -24,49 +97,131 @@ Gooey is attached to your code via a simple decorator on your `main` method.
def main():
# rest of code
At runtime, it loads the Abstract Syntax Tree of your module and parses it for all references to `ArgumentParser` (The older `optparse` is currently not supported). These references are then extracted and assigned a `component type` based on the function they provide.
At runtime, it loads the Abstract Syntax Tree for your module and parses it for all references to `ArgumentParser` (The older `optparse` is currently not supported). These references are then extracted, assigned a `component type` based on the `'action'` they provide, and finally used to assemble the GUI.
####Mappings:
Currently, the `ArgumentParser._actions` are mapped to the following `WX` components.
| Parser Action | Widget | Example |
|:----------------------|-----------|------|
| store | TextCtrl | <img src="https://raw.githubusercontent.com/chriskiehl/Gooey/master/resources/general_tb.png"/>|
| store_const | CheckBox | <img src="https://raw.githubusercontent.com/chriskiehl/Gooey/master/resources/check_box.png"/>|
| store_true| CheckBox | <img src="https://raw.githubusercontent.com/chriskiehl/Gooey/master/resources/check_box.png"/>|
| store_False | CheckBox| <img src="https://raw.githubusercontent.com/chriskiehl/Gooey/master/resources/check_box.png"/> |
| append | TextCtrl | <img src="https://raw.githubusercontent.com/chriskiehl/Gooey/master/resources/general_tb.png"/> |
| count| DropDown &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | <img src="https://raw.githubusercontent.com/chriskiehl/Gooey/master/resources/count_dropdown.png"/> |
|choice &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;| DropDown | <img src="https://raw.githubusercontent.com/chriskiehl/Gooey/master/resources/options_dropdown.png"/> |
-------------------------------------------
Configuration
------------
Gooey comes in three main flavors.
Currently, the `ArgumentParser._actions` are mapped to the following components.
- Full/Advanced
- Basic
- No config
| Action | WxWidget |
|:----------------------|-----------|
| store | TextCtrl |
| store_const | CheckBox |
| store_true| CheckBox |
| store_False | CheckBox|
| append | TextCtrl |
| count| DropDown|
|choice| DropDown|
And each with the following options:
| Parameter | Summary |
|-----------|---------|
| language | Gooey is (kind of) international ready (sans unicode issues (TODO). All program text is stored in an external `json` file. Translating to your host language only requires filling in the key/value pairs.|
|program_name | The name displayed in the title bar of the GUI window. If the value is `None`, the title is pulled from `sys.argv[0]`. |
| program_description | Sets the text displayed in the top panel of the `Settings` screen. If `None` the decription is pulled from the `ArgumentParser`. |
Installation instructions
------------------------
###Advanced
The default view is the "full" or "advanced" configuration screen. It can be toggled via the `advanced` parameter in the `Gooey` decorator.
@gooey(advanced=True)
def main():
# rest of code
This view presents each action in the `Argument Parser` as a unique GUI component. This view is ideal for presenting the program to users which are unfamiliar with command line options and/or Console Programs in general. Help messages are displayed along side each component to make it as clear as possible which each widget does.
<p align="center">
<img src="https://raw.githubusercontent.com/chriskiehl/Gooey/master/resources/advanced_config.png">
</p>
--------------------------------------------
###Basic
The basic view is best for times when the user is familiar with Console Applications, but you still want to present something a little more polished than a simple terminal. The basic display is accessed by setting the `advanced` parameter in the `gooey` decorator to `False`.
@gooey(advanced=False)
def main():
# rest of code
<p align="center">
<img src="https://raw.githubusercontent.com/chriskiehl/Gooey/master/resources/basic_config.png">
</p>
----------------------------------------------
###No Config
No Config pretty much does what you'd expect: it doesn't show a configuration screen. It hops right to the `display` section and begins execution of the host program. This is the guy for classing up the delivery of little one-off scripts.
<p align="center">
<img src="https://raw.githubusercontent.com/chriskiehl/Gooey/master/resources/no_config.png">
</p>
---------------------------------------
Final Screen
------------
<p align="center">
<img src="https://raw.githubusercontent.com/chriskiehl/Gooey/master/resources/final_screen.png">
</p>
----------------------------------------------
TODO
----
* Get this thing working.
(picture of osx)
* Add to pypi
* Themes
* update graphics
* robustify parser
* Optparse support? (do people still use it)
* Add ability to customize the mapping between `Parser` actions and `wxComponents`. For instance, if your program had a file as a required argument, it'd be far more useful to the end user to supply a `wx.FileDialog` rather than a simple `TextBox`.
* Update graphics
* Optparse support?
* Get OS X version working.
Wanna help?
-----------
Do you art? I'd love to swap out the graphics to something more stylistically unified. That ajax loader is pretty out of place..
Image Credits
-------------
* Do you art? I'd love to swap out the graphics to something more stylistically unified.
* Programmer? Pull requests are super welcome. The projects style is *fantastically* inconsistent, though. So be warned :) I tried to follow the WxWidgets style of Leading Capital methods and CamelCased variables, but.. Python habits die hard. So, there are underscores littered all over the place.
[1]: http://i.imgur.com/7fKUvw9.png

4
gooey/i18n.py

@ -18,7 +18,7 @@ _DEFAULT_DIR = os.path.join(os.path.dirname(__file__), 'languages')
def get_path(language):
''' Returns the full path to the language file '''
filename = language + '.json'
filename = language.lower() + '.json'
lang_file_path = os.path.join(_DEFAULT_DIR, filename)
if not os.path.exists(lang_file_path):
raise IOError('Could not find {} language file'.format(language))
@ -28,7 +28,7 @@ def get_path(language):
def load(filepath):
''' Open and return the supplied json file '''
try:
with open(filepath.lower(), 'rb') as f:
with open(filepath, 'rb') as f:
return json.load(f)
except IOError:
raise IOError('Language file not found. Make sure that your ',

0
gooey/images/__init__.py

30
setup.py

@ -1,34 +1,30 @@
import os
from distutils.core import setup
from setuptools import setup, find_packages
with open('README.md') as readme:
long_description = readme.read()
local_path = os.path.join(os.path.dirname(__file__), 'gooey')
images = [image for image in os.listdir(os.path.join(local_path, 'images'))]
imagepath = os.path.join(local_path, 'images')
langpath = os.path.join(local_path, 'languages')
images = [os.path.join(imagepath, image) for image in os.listdir(imagepath)]
languages = [lang
for lang in os.listdir(os.path.join(local_path, 'languages'))
languages = [os.path.join(langpath, lang)
for lang in os.listdir(langpath)
if '.py' not in lang]
setup(
name='Gooey',
version='0.1.0',
author='Chris Kiehl',
author_email='ckiehl@gmail.com',
packages=[
'gooey',
'gooey.gui',
'gooey.images',
'gooey.languages',
'gooey.mockapplications',
],
data_files=[
('gooey/images', images),
('gooey/languages', languages)
],
author_email='audionautic@gmail.com',
package_data={
'': ['*.txt', '*.png', '*.jpg', '*.json', '*.ico']
},
packages=find_packages(),
url='http://pypi.python.org/pypi/Gooey/',
license='LICENSE.txt',
description='Turn (almost) any command line program into a full GUI application with one line',

2
test.py

@ -4,7 +4,7 @@ Created on Feb 9, 2014
@author: Chris
'''
from gooey import gooey
from gooey import Gooey
if __name__ == '__main__':
pass
Loading…
Cancel
Save