Fixed name/app name issues. They are now separate.

This commit is contained in:
Joey Payne 2015-04-09 13:00:50 -06:00
commit 14def4e8e9
5 changed files with 55 additions and 10 deletions

View file

@ -71,6 +71,8 @@ class Setting(object):
self.button_callback = kwargs.pop('button_callback', None)
self.description = kwargs.pop('description', '')
self.values = kwargs.pop('values', [])
self.filter = kwargs.pop('filter', '(?s).*')
self.filter_action = kwargs.pop('filter_action', 'None')
self.set_extra_attributes_from_keyword_args(**kwargs)
@ -81,6 +83,12 @@ class Setting(object):
self.get_file_information_from_url()
def filter_name(self, text):
action = unicode
if hasattr(unicode, self.filter_action):
action = getattr(unicode, self.filter_action)
return action(unicode(text))
def get_file_information_from_url(self):
if hasattr(self, 'url'):
self.file_name = self.url.split('/')[-1]
@ -289,7 +297,7 @@ class CommandBase(object):
def project_name(self):
return (self._project_name or
os.path.basename(os.path.dirname(self.project_dir())))
os.path.basename(os.path.abspath(self.project_dir())))
def get_setting(self, name):
for setting_group in (self.settings['setting_groups'] +
@ -864,7 +872,14 @@ if __name__ == '__main__':
command_base._output_dir = (args.output_dir or
os.path.join(args.project_dir, 'output'))
command_base._project_name = args.name if not callable(args.name) else args.name()
if args.app_name is None:
args.app_name = command_base.project_name()
if args.name is not None:
setting = command_base.get_setting('name')
args.name = setting.filter_name(args.name if not callable(args.name) else args.name())
command_base._project_name = args.app_name if not callable(args.app_name) else args.app_name()
if not args.title:
args.title = command_base.project_name()

View file

@ -3,9 +3,6 @@
0.12.0-alpha2
0.12.0-alpha1
0.12.0
0.11.6
0.11.5
0.11.4
0.11.3
0.11.2
0.11.1

View file

@ -16,9 +16,17 @@ linux_64_dir_prefix = 'node-webkit-v{}-linux-x64'
file_types='*.html *.php *.htm'
description='Main html file relative to the project directory.'
[[[name]]]
display_name='App Name'
display_name='Name'
required=True
type='string'
description='The name in the internal package.json. Must be alpha-numeric with no spaces.'
filter='[a-z0-9_\-\.]+'
filter_action='lower'
[[[app_name]]]
display_name='App Name'
required=False
type='string'
description='The name that your executable or app will have when exported.'
[[[description]]]
default_value=''
type='string'
@ -308,7 +316,7 @@ linux_64_dir_prefix = 'node-webkit-v{}-linux-x64'
[order]
application_setting_order="""['main', 'name', 'node-main', 'description', 'version', 'keywords',
application_setting_order="""['main', 'name', 'app_name', 'node-main', 'description', 'version', 'keywords',
'user-agent', 'chromium-args',
'node-remote', 'js-flags', 'inject-js-start', 'inject-js-end',
'additional_trust_anchors', 'snapshot',

31
main.py
View file

@ -16,6 +16,23 @@ from PySide.QtCore import QUrl, QFile, QIODevice, QCoreApplication
from command_line import CWD, CommandBase
class Validator(QtGui.QRegExpValidator):
def __init__(self, regex, action, parent=None):
self.exp = regex
self.action = unicode
if hasattr(unicode, action):
self.action = getattr(unicode, action)
reg = QtCore.QRegExp(regex)
super(Validator, self).__init__(reg, parent)
def validate(self, text, pos):
result = super(Validator, self).validate(text, pos)
return result
def fixup(self, text):
return ''.join(re.findall(self.exp, self.action(unicode(text))))
class BackgroundThread(QtCore.QThread):
def __init__(self, widget, method_name, parent=None):
QtCore.QThread.__init__(self, parent)
@ -478,7 +495,7 @@ class MainWindow(QtGui.QWidget, CommandBase):
return children
def project_name(self):
return self.find_child_by_name('name').text()
return self.find_child_by_name('app_name').text()
def browse_dir(self):
self.update_json = False
@ -499,10 +516,17 @@ class MainWindow(QtGui.QWidget, CommandBase):
if files:
setting_input.setText(files[0].replace(self.project_dir() + os.path.sep, ''))
app_name_input = self.find_child_by_name('name')
app_name_input = self.find_child_by_name('app_name')
name_input = self.find_child_by_name('name')
name_setting = self.get_setting('name')
title_input = self.find_child_by_name('title')
if not name_input.text():
name_input.setText(name_setting.filter_name(proj_name))
if not app_name_input.text():
app_name_input.setText(proj_name)
if not title_input.text():
title_input.setText(proj_name)
@ -614,6 +638,7 @@ class MainWindow(QtGui.QWidget, CommandBase):
setting = self.get_setting(name)
text = QtGui.QLineEdit()
text.setValidator(Validator(setting.filter, setting.filter_action))
text.setObjectName(setting.name)
text.textChanged.connect(self.call_with_object('setting_changed',
@ -833,7 +858,7 @@ class MainWindow(QtGui.QWidget, CommandBase):
setting.type == 'string' or
setting.type == 'folder'):
val_str = self.convert_val_to_str(setting.value)
setting_field.setText(val_str)
setting_field.setText(setting.filter_name(val_str))
if setting.type == 'check':
setting_field.setChecked(setting.value)
if setting.type == 'list':