-fixed bug in Button now exporting font property

-made GUI Theme editor usable
-editor does not allow to export or create .pck in the same path as a project
-changed .pck format (lacked support for versioning so couldn't change it), previous was causing crashes and is now incompatible, just re-export.
-will not look for .pck files recursively, was causing unexpected behaviors
-fixed execution of Godot in paths with non unicode characters in Windows, OSX and Linux.
This commit is contained in:
Juan Linietsky 2014-02-15 02:01:39 -03:00
parent b0870e487c
commit 9afdb3e0ad
30 changed files with 107728 additions and 88050 deletions

View file

@ -319,11 +319,13 @@ Error Globals::setup(const String& p_path) {
String candidate = d->get_current_dir(); String candidate = d->get_current_dir();
String current_dir = d->get_current_dir(); String current_dir = d->get_current_dir();
bool found = false; bool found = false;
bool first_time=true;
while(true) { while(true) {
//try to load settings in ascending through dirs shape! //try to load settings in ascending through dirs shape!
if (_load_resource_pack(current_dir+"/data.pck") || _load_resource_pack(current_dir+"/data.pcz")) { //tries to open pack, but only first time
if (first_time && _load_resource_pack(current_dir+"/data.pck")) {
if (_load_settings("res://engine.cfg")==OK || _load_settings_binary("res://engine.cfb")==OK) { if (_load_settings("res://engine.cfg")==OK || _load_settings_binary("res://engine.cfb")==OK) {
_load_settings("res://override.cfg"); _load_settings("res://override.cfg");
@ -344,6 +346,7 @@ Error Globals::setup(const String& p_path) {
if (d->get_current_dir()==current_dir) if (d->get_current_dir()==current_dir)
break; //not doing anything useful break; //not doing anything useful
current_dir=d->get_current_dir(); current_dir=d->get_current_dir();
first_time=false;
} }

View file

@ -31,6 +31,8 @@
#include <stdio.h> #include <stdio.h>
#define PACK_VERSION 0
Error PackedData::add_pack(const String& p_path) { Error PackedData::add_pack(const String& p_path) {
for (int i=0; i<sources.size(); i++) { for (int i=0; i<sources.size(); i++) {
@ -113,12 +115,12 @@ bool PackedSourcePCK::try_open_pack(const String& p_path) {
uint32_t magic= f->get_32(); uint32_t magic= f->get_32();
if (magic != 0x4b435047) { if (magic != 0x43504447) {
//maybe at he end.... self contained exe //maybe at he end.... self contained exe
f->seek_end(); f->seek_end();
f->seek( f->get_pos() -4 ); f->seek( f->get_pos() -4 );
magic = f->get_32(); magic = f->get_32();
if (magic != 0x4b435047) { if (magic != 0x43504447) {
memdelete(f); memdelete(f);
return false; return false;
@ -130,7 +132,7 @@ bool PackedSourcePCK::try_open_pack(const String& p_path) {
f->seek( f->get_pos() -ds-8 ); f->seek( f->get_pos() -ds-8 );
magic = f->get_32(); magic = f->get_32();
if (magic != 0x4b435047) { if (magic != 0x43504447) {
memdelete(f); memdelete(f);
return false; return false;
@ -138,10 +140,13 @@ bool PackedSourcePCK::try_open_pack(const String& p_path) {
} }
uint32_t version = f->get_32();
uint32_t ver_major = f->get_32(); uint32_t ver_major = f->get_32();
uint32_t ver_minor = f->get_32(); uint32_t ver_minor = f->get_32();
uint32_t ver_rev = f->get_32(); uint32_t ver_rev = f->get_32();
ERR_EXPLAIN("Pack version newer than supported by engine: "+itos(version));
ERR_FAIL_COND_V( version > PACK_VERSION, ERR_INVALID_DATA);
ERR_EXPLAIN("Pack created with a newer version of the engine: "+itos(ver_major)+"."+itos(ver_minor)+"."+itos(ver_rev)); ERR_EXPLAIN("Pack created with a newer version of the engine: "+itos(ver_major)+"."+itos(ver_minor)+"."+itos(ver_rev));
ERR_FAIL_COND_V( ver_major > VERSION_MAJOR || (ver_major == VERSION_MAJOR && ver_minor > VERSION_MINOR), ERR_INVALID_DATA); ERR_FAIL_COND_V( ver_major > VERSION_MAJOR || (ver_major == VERSION_MAJOR && ver_minor > VERSION_MINOR), ERR_INVALID_DATA);

View file

@ -75,7 +75,8 @@ void Math::seed(uint32_t x) {
void Math::randomize() { void Math::randomize() {
seed(OS::get_singleton()->get_ticks_usec()); /* *OS::get_singleton()->get_time().sec); // windows doesn't have get_time(), returns always 0 */ OS::Time time = OS::get_singleton()->get_time();
seed(OS::get_singleton()->get_ticks_usec()*time.hour*time.min*time.sec*rand()); /* *OS::get_singleton()->get_time().sec); // windows doesn't have get_time(), returns always 0 */
} }
uint32_t Math::rand() { uint32_t Math::rand() {

File diff suppressed because it is too large Load diff

View file

@ -394,7 +394,8 @@ String OS_Unix::get_executable_path() const {
memset(buf,0,256); memset(buf,0,256);
readlink("/proc/self/exe", buf, sizeof(buf)); readlink("/proc/self/exe", buf, sizeof(buf));
//print_line("Exec path is:"+String(buf)); //print_line("Exec path is:"+String(buf));
String b = buf; String b;
b.parse_utf8(buf);
if (b=="") { if (b=="") {
WARN_PRINT("Couldn't get executable path from /proc/self/exe, using argv[0]"); WARN_PRINT("Couldn't get executable path from /proc/self/exe, using argv[0]");
return OS::get_executable_path(); return OS::get_executable_path();

View file

@ -1475,10 +1475,14 @@ Error OS_Windows::execute(const String& p_path, const List<String>& p_arguments,
ZeroMemory( &pi.si, sizeof(pi.si) ); ZeroMemory( &pi.si, sizeof(pi.si) );
pi.si.cb = sizeof(pi.si); pi.si.cb = sizeof(pi.si);
ZeroMemory( &pi.pi, sizeof(pi.pi) ); ZeroMemory( &pi.pi, sizeof(pi.pi) );
LPSTARTUPINFOW si_w = (LPSTARTUPINFOW) &pi.si;
print_line("running cmdline: "+cmdline); print_line("running cmdline: "+cmdline);
Vector<CharType> modstr; //windows wants to change this no idea why
int ret = CreateProcess(NULL, (LPSTR)cmdline.utf8().get_data(), NULL, NULL, 0, NORMAL_PRIORITY_CLASS, NULL, NULL, &pi.si, &pi.pi); modstr.resize(cmdline.size());
for(int i=0;i<cmdline.size();i++)
modstr[i]=cmdline[i];
int ret = CreateProcessW(NULL, modstr.ptr(), NULL, NULL, 0, NORMAL_PRIORITY_CLASS, NULL, NULL, si_w, &pi.pi);
ERR_FAIL_COND_V(ret == 0, ERR_CANT_FORK); ERR_FAIL_COND_V(ret == 0, ERR_CANT_FORK);
if (p_blocking) { if (p_blocking) {
@ -1523,6 +1527,15 @@ Error OS_Windows::set_cwd(const String& p_cwd) {
return OK; return OK;
} }
String OS_Windows::get_executable_path() const {
wchar_t bufname[4096];
GetModuleFileNameW(NULL,bufname,4096);
String s= bufname;
print_line("EXEC PATHPó: "+s);
return s;
}
void OS_Windows::set_icon(const Image& p_icon) { void OS_Windows::set_icon(const Image& p_icon) {

View file

@ -235,6 +235,7 @@ public:
void set_cursor_shape(CursorShape p_shape); void set_cursor_shape(CursorShape p_shape);
void set_icon(const Image& p_icon); void set_icon(const Image& p_icon);
virtual String get_executable_path() const;
virtual String get_locale() const; virtual String get_locale() const;

View file

@ -1407,6 +1407,8 @@ Ref<Font> Control::get_font(const StringName& p_name,const StringName& p_type) c
if (theme_owner->data.theme->has_font(p_name, type ) ) if (theme_owner->data.theme->has_font(p_name, type ) )
return data.theme_owner->data.theme->get_font(p_name, type ); return data.theme_owner->data.theme->get_font(p_name, type );
if (theme_owner->data.theme->get_default_theme_font().is_valid())
return theme_owner->data.theme->get_default_theme_font();
Control *parent = theme_owner->get_parent()?theme_owner->get_parent()->cast_to<Control>():NULL; Control *parent = theme_owner->get_parent()?theme_owner->get_parent()->cast_to<Control>():NULL;
if (parent) if (parent)

View file

@ -196,7 +196,7 @@ void make_default_theme() {
focus->set_expand_margin_size(Margin(i),2); focus->set_expand_margin_size(Margin(i),2);
} }
t->set_stylebox("focus","Button", focus ); t->set_stylebox("focus","Button", focus );
t->set_font("font","Button", focus ); t->set_font("font","Button", default_font );
t->set_color("font_color","Button", control_font_color ); t->set_color("font_color","Button", control_font_color );
t->set_color("font_color_pressed","Button", control_font_color_pressed ); t->set_color("font_color_pressed","Button", control_font_color_pressed );
t->set_color("font_color_hover","Button", control_font_color_hover ); t->set_color("font_color_hover","Button", control_font_color_hover );

View file

@ -130,6 +130,7 @@ void Theme::_get_property_list( List<PropertyInfo> *p_list) const {
} }
key=NULL; key=NULL;
while((key=font_map.next(key))) { while((key=font_map.next(key))) {
@ -172,6 +173,17 @@ Ref<Theme> Theme::get_default() {
return default_theme; return default_theme;
} }
void Theme::set_default_theme_font( const Ref<Font>& p_default_font ) {
default_theme_font=p_default_font;
}
Ref<Font> Theme::get_default_theme_font() const {
return default_theme_font;
}
void Theme::set_default(const Ref<Theme>& p_default) { void Theme::set_default(const Ref<Theme>& p_default) {
default_theme=p_default; default_theme=p_default;
@ -203,8 +215,10 @@ void Theme::set_icon(const StringName& p_name,const StringName& p_type,const Ref
icon_map[p_type][p_name]=p_icon; icon_map[p_type][p_name]=p_icon;
if (new_value) if (new_value) {
_change_notify(); _change_notify();
emit_changed();;
}
} }
Ref<Texture> Theme::get_icon(const StringName& p_name,const StringName& p_type) const { Ref<Texture> Theme::get_icon(const StringName& p_name,const StringName& p_type) const {
@ -229,6 +243,8 @@ void Theme::clear_icon(const StringName& p_name,const StringName& p_type) {
icon_map[p_type].erase(p_name); icon_map[p_type].erase(p_name);
_change_notify(); _change_notify();
emit_changed();;
} }
void Theme::get_icon_list(StringName p_type, List<StringName> *p_list) const { void Theme::get_icon_list(StringName p_type, List<StringName> *p_list) const {
@ -256,6 +272,8 @@ void Theme::set_stylebox(const StringName& p_name,const StringName& p_type,const
if (new_value) if (new_value)
_change_notify(); _change_notify();
emit_changed();;
} }
@ -281,6 +299,8 @@ void Theme::clear_stylebox(const StringName& p_name,const StringName& p_type) {
style_map[p_type].erase(p_name); style_map[p_type].erase(p_name);
_change_notify(); _change_notify();
emit_changed();;
} }
void Theme::get_stylebox_list(StringName p_type, List<StringName> *p_list) const { void Theme::get_stylebox_list(StringName p_type, List<StringName> *p_list) const {
@ -304,13 +324,18 @@ void Theme::set_font(const StringName& p_name,const StringName& p_type,const Ref
bool new_value=!font_map.has(p_type) || !font_map[p_type].has(p_name); bool new_value=!font_map.has(p_type) || !font_map[p_type].has(p_name);
font_map[p_type][p_name]=p_font; font_map[p_type][p_name]=p_font;
if (new_value) if (new_value) {
_change_notify(); _change_notify();
emit_changed();;
}
} }
Ref<Font> Theme::get_font(const StringName& p_name,const StringName& p_type) const { Ref<Font> Theme::get_font(const StringName& p_name,const StringName& p_type) const {
if (font_map.has(p_type) && font_map[p_type].has(p_name) && font_map[p_type][p_name].is_valid()) if (font_map.has(p_type) && font_map[p_type].has(p_name) && font_map[p_type][p_name].is_valid())
return font_map[p_type][p_name]; return font_map[p_type][p_name];
else if (default_theme_font.is_valid())
return default_theme_font;
else else
return default_font; return default_font;
@ -328,6 +353,8 @@ void Theme::clear_font(const StringName& p_name,const StringName& p_type) {
font_map[p_type].erase(p_name); font_map[p_type].erase(p_name);
_change_notify(); _change_notify();
emit_changed();;
} }
void Theme::get_font_list(StringName p_type, List<StringName> *p_list) const { void Theme::get_font_list(StringName p_type, List<StringName> *p_list) const {
@ -350,8 +377,11 @@ void Theme::set_color(const StringName& p_name,const StringName& p_type,const Co
color_map[p_type][p_name]=p_color; color_map[p_type][p_name]=p_color;
if (new_value) if (new_value) {
_change_notify(); _change_notify();
emit_changed();;
}
} }
@ -377,6 +407,8 @@ void Theme::clear_color(const StringName& p_name,const StringName& p_type) {
color_map[p_type].erase(p_name); color_map[p_type].erase(p_name);
_change_notify(); _change_notify();
emit_changed();;
} }
void Theme::get_color_list(StringName p_type, List<StringName> *p_list) const { void Theme::get_color_list(StringName p_type, List<StringName> *p_list) const {
@ -398,8 +430,10 @@ void Theme::set_constant(const StringName& p_name,const StringName& p_type,int p
bool new_value=!constant_map.has(p_type) || !constant_map[p_type].has(p_name); bool new_value=!constant_map.has(p_type) || !constant_map[p_type].has(p_name);
constant_map[p_type][p_name]=p_constant; constant_map[p_type][p_name]=p_constant;
if (new_value) if (new_value) {
_change_notify(); _change_notify();
emit_changed();;
}
} }
int Theme::get_constant(const StringName& p_name,const StringName& p_type) const { int Theme::get_constant(const StringName& p_name,const StringName& p_type) const {
@ -424,6 +458,8 @@ void Theme::clear_constant(const StringName& p_name,const StringName& p_type) {
constant_map[p_type].erase(p_name); constant_map[p_type].erase(p_name);
_change_notify(); _change_notify();
emit_changed();;
} }
void Theme::get_constant_list(StringName p_type, List<StringName> *p_list) const { void Theme::get_constant_list(StringName p_type, List<StringName> *p_list) const {
@ -451,6 +487,8 @@ void Theme::copy_default_theme() {
color_map=default_theme->color_map; color_map=default_theme->color_map;
constant_map=default_theme->constant_map; constant_map=default_theme->constant_map;
_change_notify(); _change_notify();
emit_changed();;
} }
void Theme::get_type_list(List<StringName> *p_list) const { void Theme::get_type_list(List<StringName> *p_list) const {
@ -532,10 +570,15 @@ void Theme::_bind_methods() {
ObjectTypeDB::bind_method(_MD("clear_constant","name","type"),&Theme::clear_constant); ObjectTypeDB::bind_method(_MD("clear_constant","name","type"),&Theme::clear_constant);
ObjectTypeDB::bind_method(_MD("get_constant_list"),&Theme::_get_constant_list); ObjectTypeDB::bind_method(_MD("get_constant_list"),&Theme::_get_constant_list);
ObjectTypeDB::bind_method(_MD("set_default_font","font"),&Theme::set_default_theme_font);
ObjectTypeDB::bind_method(_MD("get_default_font"),&Theme::get_default_theme_font);
ObjectTypeDB::bind_method(_MD("get_type_list"),&Theme::_get_type_list); ObjectTypeDB::bind_method(_MD("get_type_list"),&Theme::_get_type_list);
ObjectTypeDB::bind_method("copy_default_theme",&Theme::copy_default_theme); ObjectTypeDB::bind_method("copy_default_theme",&Theme::copy_default_theme);
ADD_PROPERTY(PropertyInfo(Variant::OBJECT,"default_font",PROPERTY_HINT_RESOURCE_TYPE,"Font"),_SCS("set_default_font"),_SCS("get_default_font"));
} }
Theme::Theme() { Theme::Theme() {

View file

@ -59,6 +59,7 @@ protected:
static Ref<StyleBox> default_style; static Ref<StyleBox> default_style;
static Ref<Font> default_font; static Ref<Font> default_font;
Ref<Font> default_theme_font;
DVector<String> _get_icon_list(const String& p_type) const { DVector<String> ilret; List<StringName> il; get_icon_list(p_type,&il); for(List<StringName>::Element *E=il.front();E;E=E->next()) { ilret.push_back(E->get()); } return ilret; } DVector<String> _get_icon_list(const String& p_type) const { DVector<String> ilret; List<StringName> il; get_icon_list(p_type,&il); for(List<StringName>::Element *E=il.front();E;E=E->next()) { ilret.push_back(E->get()); } return ilret; }
DVector<String> _get_stylebox_list(const String& p_type) const { DVector<String> ilret; List<StringName> il; get_stylebox_list(p_type,&il); for(List<StringName>::Element *E=il.front();E;E=E->next()) { ilret.push_back(E->get()); } return ilret; } DVector<String> _get_stylebox_list(const String& p_type) const { DVector<String> ilret; List<StringName> il; get_stylebox_list(p_type,&il); for(List<StringName>::Element *E=il.front();E;E=E->next()) { ilret.push_back(E->get()); } return ilret; }
@ -76,8 +77,10 @@ public:
static void set_default_icon( const Ref<Texture>& p_icon ); static void set_default_icon( const Ref<Texture>& p_icon );
static void set_default_style( const Ref<StyleBox>& p_default_style); static void set_default_style( const Ref<StyleBox>& p_default_style);
static void set_default_font( const Ref<Font>& p_default_font ); static void set_default_font( const Ref<Font>& p_default_font );
void set_default_theme_font( const Ref<Font>& p_default_font );
Ref<Font> get_default_theme_font() const;
void set_icon(const StringName& p_name,const StringName& p_type,const Ref<Texture>& p_icon); void set_icon(const StringName& p_name,const StringName& p_type,const Ref<Texture>& p_icon);
Ref<Texture> get_icon(const StringName& p_name,const StringName& p_type) const; Ref<Texture> get_icon(const StringName& p_name,const StringName& p_type) const;
bool has_icon(const StringName& p_name,const StringName& p_type) const; bool has_icon(const StringName& p_name,const StringName& p_type) const;

File diff suppressed because it is too large Load diff

View file

@ -848,7 +848,8 @@ Error EditorExportPlatform::save_pack(FileAccess *dst,bool p_make_bundles) {
FileAccess *tmp = FileAccess::open(tmppath,FileAccess::WRITE); FileAccess *tmp = FileAccess::open(tmppath,FileAccess::WRITE);
uint64_t ofs_begin = dst->get_pos(); uint64_t ofs_begin = dst->get_pos();
dst->store_32(0x4b435047); //GPCK dst->store_32(0x43504447); //GDPK
dst->store_32(0); //pack version
dst->store_32(VERSION_MAJOR); dst->store_32(VERSION_MAJOR);
dst->store_32(VERSION_MINOR); dst->store_32(VERSION_MINOR);
dst->store_32(VERSION_REVISION); dst->store_32(VERSION_REVISION);
@ -891,7 +892,7 @@ Error EditorExportPlatform::save_pack(FileAccess *dst,bool p_make_bundles) {
memdelete(tmp); memdelete(tmp);
dst->store_64(dst->get_pos()-ofs_begin); dst->store_64(dst->get_pos()-ofs_begin);
dst->store_32(0x4b435047); //GPCK dst->store_32(0x43504447); //GDPK
//fix offsets //fix offsets

View file

@ -3961,7 +3961,7 @@ EditorNode::EditorNode() {
//add_editor_plugin( memnew( AnimationEditorPlugin(this) ) ); - not useful anymore //add_editor_plugin( memnew( AnimationEditorPlugin(this) ) ); - not useful anymore
add_editor_plugin( memnew( ShaderEditorPlugin(this) ) ); add_editor_plugin( memnew( ShaderEditorPlugin(this) ) );
add_editor_plugin( memnew( CameraEditorPlugin(this) ) ); add_editor_plugin( memnew( CameraEditorPlugin(this) ) );
add_editor_plugin( memnew( FontEditorPlugin(this) ) ); //add_editor_plugin( memnew( FontEditorPlugin(this) ) ); obsolete
add_editor_plugin( memnew( SampleEditorPlugin(this) ) ); add_editor_plugin( memnew( SampleEditorPlugin(this) ) );
add_editor_plugin( memnew( SampleLibraryEditorPlugin(this) ) ); add_editor_plugin( memnew( SampleLibraryEditorPlugin(this) ) );
add_editor_plugin( memnew( ThemeEditorPlugin(this) ) ); add_editor_plugin( memnew( ThemeEditorPlugin(this) ) );

View file

@ -33,13 +33,28 @@
void ThemeEditor::edit(const Ref<Theme>& p_theme) { void ThemeEditor::edit(const Ref<Theme>& p_theme) {
theme=p_theme; theme=p_theme;
panel->set_theme(p_theme); main_vb->set_theme(p_theme);
} }
void ThemeEditor::_open_file_dialog() {
test_file_dialog->popup_centered_ratio(); void ThemeEditor::_propagate_redraw(Control *p_at) {
p_at->notification(NOTIFICATION_THEME_CHANGED);
p_at->minimum_size_changed();
p_at->update();
for(int i=0;i<p_at->get_child_count();i++) {
Control *a = p_at->get_child(i)->cast_to<Control>();
if (a)
_propagate_redraw(a);
}
}
void ThemeEditor::_refresh_interval() {
_propagate_redraw(main_vb);
} }
void ThemeEditor::_type_menu_cbk(int p_option) { void ThemeEditor::_type_menu_cbk(int p_option) {
@ -477,6 +492,18 @@ void ThemeEditor::_theme_menu_cbk(int p_option) {
} }
void ThemeEditor::_notification(int p_what) {
if (p_what==NOTIFICATION_PROCESS) {
time_left-=get_process_delta_time();
if (time_left<0) {
time_left=1.5;
_refresh_interval();
}
}
}
void ThemeEditor::_bind_methods() { void ThemeEditor::_bind_methods() {
ObjectTypeDB::bind_method("_type_menu_cbk",&ThemeEditor::_type_menu_cbk); ObjectTypeDB::bind_method("_type_menu_cbk",&ThemeEditor::_type_menu_cbk);
@ -489,44 +516,159 @@ void ThemeEditor::_bind_methods() {
ThemeEditor::ThemeEditor() { ThemeEditor::ThemeEditor() {
Panel *main_panel = memnew( Panel ); time_left=0;
add_child(main_panel);
main_panel->set_area_as_parent_rect();
panel = memnew( Panel );
main_panel->add_child(panel); Panel * panel = memnew( Panel );
panel->set_area_as_parent_rect(); add_child(panel);
panel->set_margin( MARGIN_TOP,20 ); panel->set_area_as_parent_rect(0);
panel->set_margin(MARGIN_TOP,25);
test_button = memnew( Button ); main_vb= memnew( VBoxContainer );
test_button->set_pos(Point2(25,25)); panel->add_child(main_vb);
test_button->set_text("Button"); main_vb->set_area_as_parent_rect(4);
panel->add_child(test_button);
test_label = memnew( Label );
test_label->set_pos(Point2(25,75));
test_label->set_text("Label");
panel->add_child(test_label);
test_menu_button = memnew( MenuButton ); HBoxContainer *hb_menu = memnew(HBoxContainer);
test_menu_button->set_pos(Point2(25,125)); main_vb->add_child(hb_menu);
test_menu_button->set_text("Menu Button");
theme_menu = memnew( MenuButton );
theme_menu->set_text("Theme");
theme_menu->get_popup()->add_item("Add Item",POPUP_ADD);
theme_menu->get_popup()->add_item("Add Class Items",POPUP_CLASS_ADD);
theme_menu->get_popup()->add_item("Remove Item",POPUP_REMOVE);
theme_menu->get_popup()->add_separator();
theme_menu->get_popup()->add_item("Create Template",POPUP_CREATE_TEMPLATE);
hb_menu->add_child(theme_menu);
theme_menu->get_popup()->connect("item_pressed", this,"_theme_menu_cbk");
HBoxContainer *main_hb = memnew( HBoxContainer );
main_vb->add_child(main_hb);
VBoxContainer *first_vb = memnew( VBoxContainer);
first_vb->set_h_size_flags(SIZE_EXPAND_FILL);
main_hb->add_child(first_vb);
// main_panel->add_child(panel);
// panel->set_area_as_parent_rect();
// panel->set_margin( MARGIN_TOP,20 );
first_vb->add_child(memnew( Label("Label") ));
first_vb->add_child(memnew( Button("Button")) );
ToolButton *tb = memnew( ToolButton );
tb->set_text("ToolButton");
first_vb->add_child(tb );
CheckButton *cb = memnew( CheckButton );
cb->set_text("CheckButton");
first_vb->add_child(cb );
MenuButton* test_menu_button = memnew( MenuButton );
test_menu_button->set_text("MenuButton");
test_menu_button->get_popup()->add_item("Item"); test_menu_button->get_popup()->add_item("Item");
test_menu_button->get_popup()->add_separator(); test_menu_button->get_popup()->add_separator();
test_menu_button->get_popup()->add_check_item("Check Item"); test_menu_button->get_popup()->add_check_item("Check Item");
test_menu_button->get_popup()->add_check_item("Checked Item"); test_menu_button->get_popup()->add_check_item("Checked Item");
test_menu_button->get_popup()->set_item_checked(2,true); test_menu_button->get_popup()->set_item_checked(2,true);
panel->add_child(test_menu_button); first_vb->add_child(test_menu_button);
test_option_button = memnew( OptionButton ); OptionButton *test_option_button = memnew( OptionButton );
test_option_button->set_pos(Point2(25,175));
test_option_button->add_item("OptionButton"); test_option_button->add_item("OptionButton");
test_option_button->add_separator(); test_option_button->add_separator();
test_option_button->add_item("Has"); test_option_button->add_item("Has");
test_option_button->add_item("Many"); test_option_button->add_item("Many");
test_option_button->add_item("Options"); test_option_button->add_item("Options");
panel->add_child(test_option_button); first_vb->add_child(test_option_button);
ColorPickerButton *cpb = memnew( ColorPickerButton );
first_vb->add_child(cpb );
first_vb->add_child( memnew( HSeparator ));
first_vb->add_child( memnew( HSlider ));
first_vb->add_child( memnew( HScrollBar ));
first_vb->add_child( memnew( SpinBox ));
ProgressBar *pb=memnew( ProgressBar );
pb->set_val(50);
first_vb->add_child( pb);
Panel *pn=memnew( Panel );
pn->set_custom_minimum_size(Size2(40,40));
first_vb->add_child( pn);
first_vb->add_constant_override("separation",10);
VBoxContainer *second_vb = memnew( VBoxContainer );
second_vb->set_h_size_flags(SIZE_EXPAND_FILL);
main_hb->add_child(second_vb);
second_vb->add_constant_override("separation",10);
LineEdit *le = memnew( LineEdit );
le->set_text("LineEdit");
second_vb->add_child(le);
TextEdit *te = memnew( TextEdit );
te->set_text("TextEdit");
//te->set_v_size_flags(SIZE_EXPAND_FILL);
te->set_custom_minimum_size(Size2(0,160));
second_vb->add_child(te);
Tree *test_tree = memnew(Tree);
second_vb->add_child(test_tree);
test_tree->set_custom_minimum_size(Size2(0,160));
TreeItem *item = test_tree->create_item();
item->set_editable(0,true);
item->set_text(0,"Tree");
item = test_tree->create_item( test_tree->get_root() );
item->set_cell_mode(0, TreeItem::CELL_MODE_CHECK);
item->set_editable(0,true);
item->set_text(0,"check");
item = test_tree->create_item( test_tree->get_root() );
item->set_cell_mode(0, TreeItem::CELL_MODE_RANGE);
item->set_editable(0,true);
item->set_range_config(0,0,20,0.1);
item->set_range(0,2);
item = test_tree->create_item( test_tree->get_root() );
item->set_cell_mode(0, TreeItem::CELL_MODE_RANGE);
item->set_editable(0,true);
item->set_text(0,"Have,Many,Several,Options!");
item->set_range(0,2);
VBoxContainer *third_vb = memnew( VBoxContainer );
third_vb->set_h_size_flags(SIZE_EXPAND_FILL);
third_vb->add_constant_override("separation",10);
main_hb->add_child(third_vb);
HBoxContainer *vhb = memnew( HBoxContainer );
vhb->set_custom_minimum_size(Size2(0,160));
vhb->add_child(memnew(VSeparator));
vhb->add_child(memnew(VSlider));
vhb->add_child(memnew(VScrollBar));
third_vb->add_child(vhb);
TabContainer *tc = memnew( TabContainer );
third_vb->add_child(tc);
tc->set_custom_minimum_size(Size2(0,160));
Control *tcc = memnew( Control );
tcc->set_name("Tab 1");
tc->add_child(tcc);
tcc = memnew( Control );
tcc->set_name("Tab 2");
tc->add_child(tcc);
tcc = memnew( Control );
tcc->set_name("Tab 3");
tc->add_child(tcc);
main_hb->add_constant_override("separation",20);
/*
test_h_scroll = memnew( HScrollBar ); test_h_scroll = memnew( HScrollBar );
test_h_scroll->set_pos( Point2( 25, 225 ) ); test_h_scroll->set_pos( Point2( 25, 225 ) );
test_h_scroll->set_size( Point2( 150, 5 ) ); test_h_scroll->set_size( Point2( 150, 5 ) );
@ -576,21 +718,11 @@ ThemeEditor::ThemeEditor() {
panel->add_child(test_file_dialog); panel->add_child(test_file_dialog);
fd_button->connect("pressed", this,"_open_file_dialog"); fd_button->connect("pressed", this,"_open_file_dialog");
*/
theme_menu = memnew( MenuButton );
theme_menu->set_text("Theme..");
theme_menu->get_popup()->add_item("Add Item",POPUP_ADD);
theme_menu->get_popup()->add_item("Add Class Items",POPUP_CLASS_ADD);
theme_menu->get_popup()->add_item("Remove Item",POPUP_REMOVE);
theme_menu->get_popup()->add_separator();
theme_menu->get_popup()->add_item("Create Template",POPUP_CREATE_TEMPLATE);
main_panel->add_child(theme_menu);
theme_menu->set_pos(Point2(5,5));
theme_menu->get_popup()->connect("item_pressed", this,"_theme_menu_cbk");
add_del_dialog = memnew(ConfirmationDialog); add_del_dialog = memnew(ConfirmationDialog);
add_del_dialog->hide(); add_del_dialog->hide();
main_panel->add_child(add_del_dialog); add_child(add_del_dialog);
Label *l = memnew( Label ); Label *l = memnew( Label );
@ -665,10 +797,12 @@ ThemeEditor::ThemeEditor() {
void ThemeEditorPlugin::edit(Object *p_node) { void ThemeEditorPlugin::edit(Object *p_node) {
if (p_node && p_node->cast_to<Theme>()) { if (p_node && p_node->cast_to<Theme>()) {
theme_editor->edit( p_node->cast_to<Theme>() );
theme_editor->show(); theme_editor->show();
} else theme_editor->edit( p_node->cast_to<Theme>() );
} else {
theme_editor->edit( Ref<Theme>() );
theme_editor->hide(); theme_editor->hide();
}
} }
bool ThemeEditorPlugin::handles(Object *p_node) const{ bool ThemeEditorPlugin::handles(Object *p_node) const{
@ -678,10 +812,13 @@ bool ThemeEditorPlugin::handles(Object *p_node) const{
void ThemeEditorPlugin::make_visible(bool p_visible){ void ThemeEditorPlugin::make_visible(bool p_visible){
if (p_visible) if (p_visible) {
theme_editor->show(); theme_editor->show();
else theme_editor->set_process(true);
} else {
theme_editor->hide(); theme_editor->hide();
theme_editor->set_process(false);
}
} }
ThemeEditorPlugin::ThemeEditorPlugin(EditorNode *p_node) { ThemeEditorPlugin::ThemeEditorPlugin(EditorNode *p_node) {

View file

@ -42,21 +42,13 @@ class ThemeEditor : public Control {
OBJ_TYPE( ThemeEditor, Control ); OBJ_TYPE( ThemeEditor, Control );
Panel *panel;
VBoxContainer *main_vb;
Ref<Theme> theme; Ref<Theme> theme;
FileDialog *file_dialog; FileDialog *file_dialog;
Button *test_button; double time_left;
Label *test_label;
MenuButton *test_menu_button;
OptionButton *test_option_button;
HScrollBar *test_h_scroll;
VScrollBar *test_v_scroll;
LineEdit *line_edit;
FileDialog *test_file_dialog;
MenuButton *theme_menu; MenuButton *theme_menu;
ConfirmationDialog *add_del_dialog; ConfirmationDialog *add_del_dialog;
@ -86,9 +78,12 @@ class ThemeEditor : public Control {
void _name_menu_about_to_show(); void _name_menu_about_to_show();
void _name_menu_cbk(int p_option); void _name_menu_cbk(int p_option);
void _theme_menu_cbk(int p_option); void _theme_menu_cbk(int p_option);
void _open_file_dialog(); void _propagate_redraw(Control *p_at);
void _refresh_interval();
protected: protected:
void _notification(int p_what);
static void _bind_methods(); static void _bind_methods();
public: public:

View file

@ -374,6 +374,24 @@ void ProjectExportDialog::_export_mode_changed(int p_idx) {
void ProjectExportDialog::_export_action(const String& p_file) { void ProjectExportDialog::_export_action(const String& p_file) {
String location = Globals::get_singleton()->globalize_path(p_file).get_base_dir().replace("\\","/");
while(true) {
print_line("TESTING: "+location.plus_file("engine.cfg"));
if (FileAccess::exists(location.plus_file("engine.cfg"))) {
error->set_text("Please export outside the project folder!");
error->popup_centered(Size2(300,70));;
return;
}
String nl = (location+"/..").simplify_path();
if (nl.find("/")==location.find_last("/"))
break;
location=nl;
}
TreeItem *selected = platforms->get_selected(); TreeItem *selected = platforms->get_selected();
if (!selected) if (!selected)
return; return;

View file

View file

@ -0,0 +1,469 @@
// !$*UTF8*$!
{
archiveVersion = 1;
classes = {
};
objectVersion = 46;
objects = {
/* Begin PBXBuildFile section */
D0BCFE3818AEBDA2004A7AAE /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0BCFE3718AEBDA2004A7AAE /* Foundation.framework */; };
D0BCFE3A18AEBDA2004A7AAE /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0BCFE3918AEBDA2004A7AAE /* CoreGraphics.framework */; };
D0BCFE3C18AEBDA2004A7AAE /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0BCFE3B18AEBDA2004A7AAE /* UIKit.framework */; };
D0BCFE3E18AEBDA2004A7AAE /* GLKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0BCFE3D18AEBDA2004A7AAE /* GLKit.framework */; };
D0BCFE4018AEBDA2004A7AAE /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0BCFE3F18AEBDA2004A7AAE /* OpenGLES.framework */; };
D0BCFE4618AEBDA2004A7AAE /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = D0BCFE4418AEBDA2004A7AAE /* InfoPlist.strings */; };
D0BCFE6218AEBDA3004A7AAE /* XCTest.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0BCFE6118AEBDA3004A7AAE /* XCTest.framework */; };
D0BCFE6318AEBDA3004A7AAE /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0BCFE3718AEBDA2004A7AAE /* Foundation.framework */; };
D0BCFE6418AEBDA3004A7AAE /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0BCFE3B18AEBDA2004A7AAE /* UIKit.framework */; };
D0BCFE6C18AEBDA3004A7AAE /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = D0BCFE6A18AEBDA3004A7AAE /* InfoPlist.strings */; };
D0BCFE6E18AEBDA3004A7AAE /* godot_iosTests.m in Sources */ = {isa = PBXBuildFile; fileRef = D0BCFE6D18AEBDA3004A7AAE /* godot_iosTests.m */; };
D0BCFE7818AEBFEB004A7AAE /* data.pck in Resources */ = {isa = PBXBuildFile; fileRef = D0BCFE7718AEBFEB004A7AAE /* data.pck */; };
D0BCFE7A18AEC06A004A7AAE /* godot_opt.iphone in Resources */ = {isa = PBXBuildFile; fileRef = D0BCFE7918AEC06A004A7AAE /* godot_opt.iphone */; };
/* End PBXBuildFile section */
/* Begin PBXContainerItemProxy section */
D0BCFE6518AEBDA3004A7AAE /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = D0BCFE2C18AEBDA2004A7AAE /* Project object */;
proxyType = 1;
remoteGlobalIDString = D0BCFE3318AEBDA2004A7AAE;
remoteInfo = godot_ios;
};
/* End PBXContainerItemProxy section */
/* Begin PBXFileReference section */
D0BCFE3418AEBDA2004A7AAE /* godot_ios.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = godot_ios.app; sourceTree = BUILT_PRODUCTS_DIR; };
D0BCFE3718AEBDA2004A7AAE /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; };
D0BCFE3918AEBDA2004A7AAE /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; };
D0BCFE3B18AEBDA2004A7AAE /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; };
D0BCFE3D18AEBDA2004A7AAE /* GLKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = GLKit.framework; path = System/Library/Frameworks/GLKit.framework; sourceTree = SDKROOT; };
D0BCFE3F18AEBDA2004A7AAE /* OpenGLES.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGLES.framework; path = System/Library/Frameworks/OpenGLES.framework; sourceTree = SDKROOT; };
D0BCFE4318AEBDA2004A7AAE /* godot_ios-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "godot_ios-Info.plist"; sourceTree = "<group>"; };
D0BCFE4518AEBDA2004A7AAE /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = "<group>"; };
D0BCFE4918AEBDA2004A7AAE /* godot_ios-Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "godot_ios-Prefix.pch"; sourceTree = "<group>"; };
D0BCFE6018AEBDA3004A7AAE /* godot_iosTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = godot_iosTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
D0BCFE6118AEBDA3004A7AAE /* XCTest.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = XCTest.framework; path = Library/Frameworks/XCTest.framework; sourceTree = DEVELOPER_DIR; };
D0BCFE6918AEBDA3004A7AAE /* godot_iosTests-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "godot_iosTests-Info.plist"; sourceTree = "<group>"; };
D0BCFE6B18AEBDA3004A7AAE /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = "<group>"; };
D0BCFE6D18AEBDA3004A7AAE /* godot_iosTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = godot_iosTests.m; sourceTree = "<group>"; };
D0BCFE7718AEBFEB004A7AAE /* data.pck */ = {isa = PBXFileReference; lastKnownFileType = file; path = data.pck; sourceTree = "<group>"; };
D0BCFE7918AEC06A004A7AAE /* godot_opt.iphone */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.executable"; path = godot_opt.iphone; sourceTree = "<group>"; };
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
D0BCFE3118AEBDA2004A7AAE /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
D0BCFE4018AEBDA2004A7AAE /* OpenGLES.framework in Frameworks */,
D0BCFE3A18AEBDA2004A7AAE /* CoreGraphics.framework in Frameworks */,
D0BCFE3C18AEBDA2004A7AAE /* UIKit.framework in Frameworks */,
D0BCFE3E18AEBDA2004A7AAE /* GLKit.framework in Frameworks */,
D0BCFE3818AEBDA2004A7AAE /* Foundation.framework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
D0BCFE5D18AEBDA3004A7AAE /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
D0BCFE6218AEBDA3004A7AAE /* XCTest.framework in Frameworks */,
D0BCFE6418AEBDA3004A7AAE /* UIKit.framework in Frameworks */,
D0BCFE6318AEBDA3004A7AAE /* Foundation.framework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXFrameworksBuildPhase section */
/* Begin PBXGroup section */
D0BCFE2B18AEBDA2004A7AAE = {
isa = PBXGroup;
children = (
D0BCFE7918AEC06A004A7AAE /* godot_opt.iphone */,
D0BCFE7718AEBFEB004A7AAE /* data.pck */,
D0BCFE4118AEBDA2004A7AAE /* godot_ios */,
D0BCFE6718AEBDA3004A7AAE /* godot_iosTests */,
D0BCFE3618AEBDA2004A7AAE /* Frameworks */,
D0BCFE3518AEBDA2004A7AAE /* Products */,
);
sourceTree = "<group>";
};
D0BCFE3518AEBDA2004A7AAE /* Products */ = {
isa = PBXGroup;
children = (
D0BCFE3418AEBDA2004A7AAE /* godot_ios.app */,
D0BCFE6018AEBDA3004A7AAE /* godot_iosTests.xctest */,
);
name = Products;
sourceTree = "<group>";
};
D0BCFE3618AEBDA2004A7AAE /* Frameworks */ = {
isa = PBXGroup;
children = (
D0BCFE3718AEBDA2004A7AAE /* Foundation.framework */,
D0BCFE3918AEBDA2004A7AAE /* CoreGraphics.framework */,
D0BCFE3B18AEBDA2004A7AAE /* UIKit.framework */,
D0BCFE3D18AEBDA2004A7AAE /* GLKit.framework */,
D0BCFE3F18AEBDA2004A7AAE /* OpenGLES.framework */,
D0BCFE6118AEBDA3004A7AAE /* XCTest.framework */,
);
name = Frameworks;
sourceTree = "<group>";
};
D0BCFE4118AEBDA2004A7AAE /* godot_ios */ = {
isa = PBXGroup;
children = (
D0BCFE4218AEBDA2004A7AAE /* Supporting Files */,
);
path = godot_ios;
sourceTree = "<group>";
};
D0BCFE4218AEBDA2004A7AAE /* Supporting Files */ = {
isa = PBXGroup;
children = (
D0BCFE4318AEBDA2004A7AAE /* godot_ios-Info.plist */,
D0BCFE4418AEBDA2004A7AAE /* InfoPlist.strings */,
D0BCFE4918AEBDA2004A7AAE /* godot_ios-Prefix.pch */,
);
name = "Supporting Files";
sourceTree = "<group>";
};
D0BCFE6718AEBDA3004A7AAE /* godot_iosTests */ = {
isa = PBXGroup;
children = (
D0BCFE6D18AEBDA3004A7AAE /* godot_iosTests.m */,
D0BCFE6818AEBDA3004A7AAE /* Supporting Files */,
);
path = godot_iosTests;
sourceTree = "<group>";
};
D0BCFE6818AEBDA3004A7AAE /* Supporting Files */ = {
isa = PBXGroup;
children = (
D0BCFE6918AEBDA3004A7AAE /* godot_iosTests-Info.plist */,
D0BCFE6A18AEBDA3004A7AAE /* InfoPlist.strings */,
);
name = "Supporting Files";
sourceTree = "<group>";
};
/* End PBXGroup section */
/* Begin PBXNativeTarget section */
D0BCFE3318AEBDA2004A7AAE /* godot_ios */ = {
isa = PBXNativeTarget;
buildConfigurationList = D0BCFE7118AEBDA3004A7AAE /* Build configuration list for PBXNativeTarget "godot_ios" */;
buildPhases = (
D0BCFE3018AEBDA2004A7AAE /* Sources */,
D0BCFE3118AEBDA2004A7AAE /* Frameworks */,
D0BCFE3218AEBDA2004A7AAE /* Resources */,
);
buildRules = (
);
dependencies = (
);
name = godot_ios;
productName = godot_ios;
productReference = D0BCFE3418AEBDA2004A7AAE /* godot_ios.app */;
productType = "com.apple.product-type.application";
};
D0BCFE5F18AEBDA3004A7AAE /* godot_iosTests */ = {
isa = PBXNativeTarget;
buildConfigurationList = D0BCFE7418AEBDA3004A7AAE /* Build configuration list for PBXNativeTarget "godot_iosTests" */;
buildPhases = (
D0BCFE5C18AEBDA3004A7AAE /* Sources */,
D0BCFE5D18AEBDA3004A7AAE /* Frameworks */,
D0BCFE5E18AEBDA3004A7AAE /* Resources */,
);
buildRules = (
);
dependencies = (
D0BCFE6618AEBDA3004A7AAE /* PBXTargetDependency */,
);
name = godot_iosTests;
productName = godot_iosTests;
productReference = D0BCFE6018AEBDA3004A7AAE /* godot_iosTests.xctest */;
productType = "com.apple.product-type.bundle.unit-test";
};
/* End PBXNativeTarget section */
/* Begin PBXProject section */
D0BCFE2C18AEBDA2004A7AAE /* Project object */ = {
isa = PBXProject;
attributes = {
LastUpgradeCheck = 0500;
ORGANIZATIONNAME = Okam;
TargetAttributes = {
D0BCFE5F18AEBDA3004A7AAE = {
TestTargetID = D0BCFE3318AEBDA2004A7AAE;
};
};
};
buildConfigurationList = D0BCFE2F18AEBDA2004A7AAE /* Build configuration list for PBXProject "godot_ios" */;
compatibilityVersion = "Xcode 3.2";
developmentRegion = English;
hasScannedForEncodings = 0;
knownRegions = (
en,
Base,
);
mainGroup = D0BCFE2B18AEBDA2004A7AAE;
productRefGroup = D0BCFE3518AEBDA2004A7AAE /* Products */;
projectDirPath = "";
projectRoot = "";
targets = (
D0BCFE3318AEBDA2004A7AAE /* godot_ios */,
D0BCFE5F18AEBDA3004A7AAE /* godot_iosTests */,
);
};
/* End PBXProject section */
/* Begin PBXResourcesBuildPhase section */
D0BCFE3218AEBDA2004A7AAE /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
D0BCFE7818AEBFEB004A7AAE /* data.pck in Resources */,
D0BCFE4618AEBDA2004A7AAE /* InfoPlist.strings in Resources */,
D0BCFE7A18AEC06A004A7AAE /* godot_opt.iphone in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
D0BCFE5E18AEBDA3004A7AAE /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
D0BCFE6C18AEBDA3004A7AAE /* InfoPlist.strings in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXResourcesBuildPhase section */
/* Begin PBXSourcesBuildPhase section */
D0BCFE3018AEBDA2004A7AAE /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
);
runOnlyForDeploymentPostprocessing = 0;
};
D0BCFE5C18AEBDA3004A7AAE /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
D0BCFE6E18AEBDA3004A7AAE /* godot_iosTests.m in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXSourcesBuildPhase section */
/* Begin PBXTargetDependency section */
D0BCFE6618AEBDA3004A7AAE /* PBXTargetDependency */ = {
isa = PBXTargetDependency;
target = D0BCFE3318AEBDA2004A7AAE /* godot_ios */;
targetProxy = D0BCFE6518AEBDA3004A7AAE /* PBXContainerItemProxy */;
};
/* End PBXTargetDependency section */
/* Begin PBXVariantGroup section */
D0BCFE4418AEBDA2004A7AAE /* InfoPlist.strings */ = {
isa = PBXVariantGroup;
children = (
D0BCFE4518AEBDA2004A7AAE /* en */,
);
name = InfoPlist.strings;
sourceTree = "<group>";
};
D0BCFE6A18AEBDA3004A7AAE /* InfoPlist.strings */ = {
isa = PBXVariantGroup;
children = (
D0BCFE6B18AEBDA3004A7AAE /* en */,
);
name = InfoPlist.strings;
sourceTree = "<group>";
};
/* End PBXVariantGroup section */
/* Begin XCBuildConfiguration section */
D0BCFE6F18AEBDA3004A7AAE /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
ARCHS = "$(ARCHS_STANDARD_INCLUDING_64_BIT)";
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
CLANG_CXX_LIBRARY = "libc++";
CLANG_ENABLE_MODULES = YES;
CLANG_ENABLE_OBJC_ARC = YES;
CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
COPY_PHASE_STRIP = NO;
GCC_C_LANGUAGE_STANDARD = gnu99;
GCC_DYNAMIC_NO_PIC = NO;
GCC_OPTIMIZATION_LEVEL = 0;
GCC_PREPROCESSOR_DEFINITIONS = (
"DEBUG=1",
"$(inherited)",
);
GCC_SYMBOLS_PRIVATE_EXTERN = NO;
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
GCC_WARN_UNDECLARED_SELECTOR = YES;
GCC_WARN_UNINITIALIZED_AUTOS = YES;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 7.0;
ONLY_ACTIVE_ARCH = YES;
SDKROOT = iphoneos;
TARGETED_DEVICE_FAMILY = "1,2";
};
name = Debug;
};
D0BCFE7018AEBDA3004A7AAE /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
ARCHS = "$(ARCHS_STANDARD_INCLUDING_64_BIT)";
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
CLANG_CXX_LIBRARY = "libc++";
CLANG_ENABLE_MODULES = YES;
CLANG_ENABLE_OBJC_ARC = YES;
CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
COPY_PHASE_STRIP = YES;
ENABLE_NS_ASSERTIONS = NO;
GCC_C_LANGUAGE_STANDARD = gnu99;
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
GCC_WARN_UNDECLARED_SELECTOR = YES;
GCC_WARN_UNINITIALIZED_AUTOS = YES;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 7.0;
SDKROOT = iphoneos;
TARGETED_DEVICE_FAMILY = "1,2";
VALIDATE_PRODUCT = YES;
};
name = Release;
};
D0BCFE7218AEBDA3004A7AAE /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
ARCHS = "$(ARCHS_STANDARD)";
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage;
GCC_PRECOMPILE_PREFIX_HEADER = YES;
GCC_PREFIX_HEADER = "godot_ios/godot_ios-Prefix.pch";
INFOPLIST_FILE = "godot_ios/godot_ios-Info.plist";
IPHONEOS_DEPLOYMENT_TARGET = 4.3;
PRODUCT_NAME = "$(TARGET_NAME)";
TARGETED_DEVICE_FAMILY = "1,2";
VALID_ARCHS = "armv7 armv7s";
WRAPPER_EXTENSION = app;
};
name = Debug;
};
D0BCFE7318AEBDA3004A7AAE /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
ARCHS = "$(ARCHS_STANDARD)";
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage;
GCC_PRECOMPILE_PREFIX_HEADER = YES;
GCC_PREFIX_HEADER = "godot_ios/godot_ios-Prefix.pch";
INFOPLIST_FILE = "godot_ios/godot_ios-Info.plist";
IPHONEOS_DEPLOYMENT_TARGET = 4.3;
PRODUCT_NAME = "$(TARGET_NAME)";
TARGETED_DEVICE_FAMILY = "1,2";
VALID_ARCHS = "armv7 armv7s";
WRAPPER_EXTENSION = app;
};
name = Release;
};
D0BCFE7518AEBDA3004A7AAE /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
ARCHS = "$(ARCHS_STANDARD_INCLUDING_64_BIT)";
BUNDLE_LOADER = "$(BUILT_PRODUCTS_DIR)/godot_ios.app/godot_ios";
FRAMEWORK_SEARCH_PATHS = (
"$(SDKROOT)/Developer/Library/Frameworks",
"$(inherited)",
"$(DEVELOPER_FRAMEWORKS_DIR)",
);
GCC_PRECOMPILE_PREFIX_HEADER = YES;
GCC_PREFIX_HEADER = "godot_ios/godot_ios-Prefix.pch";
GCC_PREPROCESSOR_DEFINITIONS = (
"DEBUG=1",
"$(inherited)",
);
INFOPLIST_FILE = "godot_iosTests/godot_iosTests-Info.plist";
PRODUCT_NAME = "$(TARGET_NAME)";
TEST_HOST = "$(BUNDLE_LOADER)";
WRAPPER_EXTENSION = xctest;
};
name = Debug;
};
D0BCFE7618AEBDA3004A7AAE /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
ARCHS = "$(ARCHS_STANDARD_INCLUDING_64_BIT)";
BUNDLE_LOADER = "$(BUILT_PRODUCTS_DIR)/godot_ios.app/godot_ios";
FRAMEWORK_SEARCH_PATHS = (
"$(SDKROOT)/Developer/Library/Frameworks",
"$(inherited)",
"$(DEVELOPER_FRAMEWORKS_DIR)",
);
GCC_PRECOMPILE_PREFIX_HEADER = YES;
GCC_PREFIX_HEADER = "godot_ios/godot_ios-Prefix.pch";
INFOPLIST_FILE = "godot_iosTests/godot_iosTests-Info.plist";
PRODUCT_NAME = "$(TARGET_NAME)";
TEST_HOST = "$(BUNDLE_LOADER)";
WRAPPER_EXTENSION = xctest;
};
name = Release;
};
/* End XCBuildConfiguration section */
/* Begin XCConfigurationList section */
D0BCFE2F18AEBDA2004A7AAE /* Build configuration list for PBXProject "godot_ios" */ = {
isa = XCConfigurationList;
buildConfigurations = (
D0BCFE6F18AEBDA3004A7AAE /* Debug */,
D0BCFE7018AEBDA3004A7AAE /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
D0BCFE7118AEBDA3004A7AAE /* Build configuration list for PBXNativeTarget "godot_ios" */ = {
isa = XCConfigurationList;
buildConfigurations = (
D0BCFE7218AEBDA3004A7AAE /* Debug */,
D0BCFE7318AEBDA3004A7AAE /* Release */,
);
defaultConfigurationIsVisible = 0;
};
D0BCFE7418AEBDA3004A7AAE /* Build configuration list for PBXNativeTarget "godot_iosTests" */ = {
isa = XCConfigurationList;
buildConfigurations = (
D0BCFE7518AEBDA3004A7AAE /* Debug */,
D0BCFE7618AEBDA3004A7AAE /* Release */,
);
defaultConfigurationIsVisible = 0;
};
/* End XCConfigurationList section */
};
rootObject = D0BCFE2C18AEBDA2004A7AAE /* Project object */;
}

View file

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<Workspace
version = "1.0">
<FileRef
location = "self:godot_ios.xcodeproj">
</FileRef>
</Workspace>

View file

@ -0,0 +1,96 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "0500"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES">
<BuildActionEntries>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "D0BCFE3318AEBDA2004A7AAE"
BuildableName = "godot_ios.app"
BlueprintName = "godot_ios"
ReferencedContainer = "container:godot_ios.xcodeproj">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES"
buildConfiguration = "Debug">
<Testables>
<TestableReference
skipped = "NO">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "D0BCFE5F18AEBDA3004A7AAE"
BuildableName = "godot_iosTests.xctest"
BlueprintName = "godot_iosTests"
ReferencedContainer = "container:godot_ios.xcodeproj">
</BuildableReference>
</TestableReference>
</Testables>
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "D0BCFE3318AEBDA2004A7AAE"
BuildableName = "godot_ios.app"
BlueprintName = "godot_ios"
ReferencedContainer = "container:godot_ios.xcodeproj">
</BuildableReference>
</MacroExpansion>
</TestAction>
<LaunchAction
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
launchStyle = "0"
useCustomWorkingDirectory = "NO"
buildConfiguration = "Debug"
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
allowLocationSimulation = "YES">
<BuildableProductRunnable>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "D0BCFE3318AEBDA2004A7AAE"
BuildableName = "godot_ios.app"
BlueprintName = "godot_ios"
ReferencedContainer = "container:godot_ios.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>
<AdditionalOptions>
</AdditionalOptions>
</LaunchAction>
<ProfileAction
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
buildConfiguration = "Release"
debugDocumentVersioning = "YES">
<BuildableProductRunnable>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "D0BCFE3318AEBDA2004A7AAE"
BuildableName = "godot_ios.app"
BlueprintName = "godot_ios"
ReferencedContainer = "container:godot_ios.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
</AnalyzeAction>
<ArchiveAction
buildConfiguration = "Release"
revealArchiveInOrganizer = "YES">
</ArchiveAction>
</Scheme>

View file

@ -0,0 +1,27 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>SchemeUserState</key>
<dict>
<key>godot_ios.xcscheme</key>
<dict>
<key>orderHint</key>
<integer>0</integer>
</dict>
</dict>
<key>SuppressBuildableAutocreation</key>
<dict>
<key>D0BCFE3318AEBDA2004A7AAE</key>
<dict>
<key>primary</key>
<true/>
</dict>
<key>D0BCFE5F18AEBDA3004A7AAE</key>
<dict>
<key>primary</key>
<true/>
</dict>
</dict>
</dict>
</plist>

View file

@ -0,0 +1,2 @@
/* Localized versions of Info.plist keys */

View file

@ -0,0 +1,47 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>en</string>
<key>CFBundleDisplayName</key>
<string>${PRODUCT_NAME}</string>
<key>CFBundleExecutable</key>
<string>godot_opt.iphone</string>
<key>CFBundleIdentifier</key>
<string>com.okamstudios.${PRODUCT_NAME:rfc1034identifier}</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>${PRODUCT_NAME}</string>
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleShortVersionString</key>
<string>1.0</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
<string>1.0</string>
<key>LSRequiresIPhoneOS</key>
<true/>
<key>UIRequiredDeviceCapabilities</key>
<array>
<string>armv7</string>
</array>
<key>UIStatusBarHidden</key>
<true/>
<key>UISupportedInterfaceOrientations</key>
<array>
<string>UIInterfaceOrientationPortrait</string>
<string>UIInterfaceOrientationLandscapeLeft</string>
<string>UIInterfaceOrientationLandscapeRight</string>
</array>
<key>UISupportedInterfaceOrientations~ipad</key>
<array>
<string>UIInterfaceOrientationPortrait</string>
<string>UIInterfaceOrientationPortraitUpsideDown</string>
<string>UIInterfaceOrientationLandscapeLeft</string>
<string>UIInterfaceOrientationLandscapeRight</string>
</array>
</dict>
</plist>

View file

@ -0,0 +1,16 @@
//
// Prefix header
//
// The contents of this file are implicitly included at the beginning of every source file.
//
#import <Availability.h>
#ifndef __IPHONE_5_0
#warning "This project uses features only available in iOS SDK 5.0 and later."
#endif
#ifdef __OBJC__
#import <UIKit/UIKit.h>
#import <Foundation/Foundation.h>
#endif

View file

@ -0,0 +1,18 @@
//
// main.m
// godot_ios
//
// Created by Ariel m on 2/14/14.
// Copyright (c) 2014 Okam. All rights reserved.
//
#import <UIKit/UIKit.h>
#import "AppDelegate.h"
int main(int argc, char * argv[])
{
@autoreleasepool {
return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
}
}

View file

@ -0,0 +1,2 @@
/* Localized versions of Info.plist keys */

View file

@ -0,0 +1,22 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>en</string>
<key>CFBundleExecutable</key>
<string>${EXECUTABLE_NAME}</string>
<key>CFBundleIdentifier</key>
<string>com.okamstudios.${PRODUCT_NAME:rfc1034identifier}</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundlePackageType</key>
<string>BNDL</string>
<key>CFBundleShortVersionString</key>
<string>1.0</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
<string>1</string>
</dict>
</plist>

View file

@ -0,0 +1,34 @@
//
// godot_iosTests.m
// godot_iosTests
//
// Created by Ariel m on 2/14/14.
// Copyright (c) 2014 Okam. All rights reserved.
//
#import <XCTest/XCTest.h>
@interface godot_iosTests : XCTestCase
@end
@implementation godot_iosTests
- (void)setUp
{
[super setUp];
// Put setup code here. This method is called before the invocation of each test method in the class.
}
- (void)tearDown
{
// Put teardown code here. This method is called after the invocation of each test method in the class.
[super tearDown];
}
- (void)testExample
{
XCTFail(@"No implementation for \"%s\"", __PRETTY_FUNCTION__);
}
@end