public Xcls_MainWindow win;
public enum State {
+ NONE,
PREVIEW,
OBJECT,
PROP,
PROJECT // project settings..
}
- public State state;
+ public State state = State.NONE;
public bool children_loaded = false;
public Editor code_editor;
public Xcls_WindowRooView window_rooview;
public Xcls_GtkView window_gladeview;
- public Xcls_DialogNewComponent new_file_dialog;
+ public Xcls_DialogNewComponent new_file_dialog;
+ public Xcls_ClutterFiles clutterfiles;
public Xcls_WindowLeftProjects left_projects; // can not see where this is initialized..
+
+ public DialogTemplateSelect template_select;
+
+ // dialogs??
+ public Xcls_DialogPluginWebkit webkit_plugin;
+
// ctor
public WindowState(Xcls_MainWindow win)
{
- this.win = win;
- // initialize
-
- // left elements..
- this.leftTreeInit();
- this.propsListInit();
-
- // on clutter space...
- this.projectEditInit();
- this.codeEditInit();
- this.projectListInit();
- this.fileViewInit();
-
- // adding stuff
- this.objectAddInit();
- this.propsAddInit();
-
-
- // previews...
- this.gtkViewInit();
- this.webkitViewInit();
+ this.win = win;
+ // initialize
- // dialogs
+ // left elements..
+ this.leftTreeInit();
+ this.propsListInit();
- this.fileNewInit();
+ // on clutter space...
+ this.projectEditInit();
+ this.codeEditInit();
+ this.projectListInit();
+ this.fileViewInit();
- this.children_loaded = true;
+ // adding stuff
+ this.objectAddInit();
+ this.propsAddInit();
+
+
+ // previews...
+ this.gtkViewInit();
+ this.webkitViewInit();
+
+ // dialogs
+
+ this.fileNewInit();
+
+ this.webkit_plugin = new Xcls_DialogPluginWebkit();
+ this.template_select = new DialogTemplateSelect();
+ this.children_loaded = true;
}
this.left_props.changed.connect(() => {
if (this.left_tree.getActiveFile().xtype == "Roo" ) {
- this.win.window_rooview.requestRedraw();
+ this.window_rooview.requestRedraw();
} else {
- this.win.window_gladeview.loadFile(this.left_tree.getActiveFile());
+ this.window_gladeview.loadFile(this.left_tree.getActiveFile());
}
this.left_tree.model.updateSelected();
this.left_tree.model.file.save();
this.vala_projectsettings =new ValaProjectSettings();
this.vala_projectsettings.ref();
- this.vala_projectsettings.window = this;
+ this.vala_projectsettings.window = this.win;
((Gtk.Container)(this.win.projecteditview.el.get_widget())).add(this.projectsettings.el);
//this.projectsettings.el.show_all();
((Gtk.Container)(this.win.objectview.el.get_widget())).add(this.rightpalete.el);
//this.projectsettings.el.show_all();
- stage = _this.win.objectview.el.get_stage();
+ var stage = this.win.objectview.el.get_stage();
stage.set_background_color( Clutter.Color.from_string("#000"));
}
((Gtk.Container)(this.win.addpropsview.el.get_widget())).add(this.add_props.el);
//this.projectsettings.el.show_all();
- var stage = _this.win.addpropsview.el.get_stage();
+ var stage = this.win.addpropsview.el.get_stage();
stage.set_background_color( Clutter.Color.from_string("#000"));
((Gtk.Container)(this.win.codeeditview.el.get_widget())).add(this.code_editor.el);
//this.projectsettings.el.show_all();
- stage = _this.win.codeeditview.el.get_stage();
+ var stage = this.win.codeeditview.el.get_stage();
stage.set_background_color( Clutter.Color.from_string("#000"));
// editor.save...
this.clutterfiles.open.connect((file) => {
this.fileViewOpen(file);
});
+ this.clutterfiles.el.transitions_completed.connect(() => {
+ if (this.state == State.FILES) {
+ this.win.rooview.el.hide();
+ } else {
+ this.clutterfiles.el.hide();
+ }
+
+
+ });
}
public void fileNewInit()
{
this.new_file_dialog = new Xcls_DialogNewComponent();
// force it modal to the main window..
- this.new_file_dialog.el.set_transient_for(this.el);
+ this.new_file_dialog.el.set_transient_for(this.win.el);
this.new_file_dialog.el.set_modal(true);
this.new_file_dialog.success.connect((project,file) =>
public void fileViewOpen(JsRender.JsRender file)
{
this.win.project = file.project;
- this.previewShow();
- this.left_tree.model.loadFile(file);
+ this.switchState (State.PREVIEW);
+
+ this.left_tree.model.loadFile(file);
var ctr= ((Gtk.Container)(this.win.rooview.el.get_widget()));
var ctr_p= ((Gtk.Container)(this.win.projecteditview.el.get_widget()));
this.vala_projectsettings.el.show_all();
}
print("OPEN : " + file.name);
- this.editpane.el.set_position(_this.editpane.el.max_position);
+ this.win.editpane.el.set_position(this.win.editpane.el.max_position);
this.win.setTitle(file.project.name + " : " +file.name);
((Gtk.Container)(this.win.rooview.el.get_widget())).add(this.window_rooview.el);
this.window_rooview.el.show_all();
- stage = this.win.rooview.el.get_stage();
+ var stage = this.win.rooview.el.get_stage();
stage.set_background_color( Clutter.Color.from_string("#000"));
}
this.window_gladeview =new Xcls_GtkView();
this.window_gladeview.ref();
}
-
+
+ public void easingSaveAll()
+ {
+ this.win.addpropsview.el.save_easing_state();
+ this.win.codeeditview.el.save_easing_state();
+ this.win.objectview.el.save_easing_state();
+ this.win.projecteditview.el.save_easing_state();
+ this.win.rooview.el.save_easing_state();
+ this.clutterfiles.el.save_easing_state();
+
+ }
+ public void easingRestoreAll()
+ {
+ this.win.addpropsview.el.restore_easing_state();
+ this.win.codeeditview.el.restore_easing_state();
+ this.win.objectview.el.restore_easing_state();
+ this.win.projecteditview.el.restore_easing_state();
+ this.win.rooview.el.restore_easing_state();
+ this.clutterfiles.el.restore_easing_state();
+
+ }
public void switchState(State new_state)
{
-
+ // save the easing state of everything..
+ this.easingSaveAll();
switch (this.state) {
case State.LISTENER:
case State.PROP:
- this.win.addpropsview.el.save_easing_state();
+
this.win.addpropsview.el.set_scale(0.0f,0.0f);
- this.win.addpropsview.el.restore_easing_state();
- break;
+ break;
case State.CODE:
this.code_editor.saveContents();
- this.win.codeeditview.el.save_easing_state();
+
this.win.codeeditview.el.set_scale(0.0f,0.0f);
- this.win.codeeditview.el.restore_easing_state();
- break;
+ break;
case State.OBJECT:
- this.win.objectview.el.save_easing_state();
+
this.win.objectview.el.set_scale(0.0f,0.0f);
- this.win.objectview.el.restore_easing_state();
- break;
+ break;
case State.PROJECT:
- this.win.projecteditview.el.save_easing_state();
+ if (this.win.project.xtype == "Gtk") {
+ this.vala_projectsettings.save();
+ }
+
this.win.projecteditview.el.set_scale(0.0f,0.0f);
- this.win.projecteditview.el.restore_easing_state();
- break;
+ break;
- case State.FILES:
- this.win.rooview.el.save_easing_state();
+ case State.FILES:
+ // hide files...
+
+ this.win.rooview.el.show_all();
+ this.win.rooview.el.set_easing_duration(1000);
this.win.rooview.el.set_rotation_angle(Clutter.RotateAxis.Y_AXIS, 0.0f);
this.win.rooview.el.set_scale(1.0f,1.0f);
- this.win.rooview.el.restore_easing_state();
+ this.win.rooview.el.set_pivot_point(0.5f,0.5f);
+ this.win.rooview.el.set_opacity(0xff);
+
+
+
+ this.clutterfiles.el.set_easing_duration(1000);
+ this.clutterfiles.el.set_pivot_point(0.5f,0.5f);
+ this.clutterfiles.el.set_rotation_angle(Clutter.RotateAxis.Y_AXIS, -180.0f);
+ this.clutterfiles.el.set_opacity(0);
+
+ //this.clutterfiles.el.hide();
+
- this.win.clutterfiles.el.hide();
break;
}
-
+
var oldstate =this.state;
this.state = new_state;
-
+
+
- this.buttonShowHide();
+ this.buttonsShowHide();
+
switch (this.state) {
case State.PREVIEW: // this is the default state when working...
- this.win.rooview.el.save_easing_state();
- this.win.rooview.el.set_scale(1.0f,1.0f);
- this.win.rooview.el.restore_easing_state();
+ this.win.editpane.el.show(); // holder for tree and properties..
+
+
+ this.left_projects.el.hide();
+ if (oldstate != State.FILES) {
+ // it's handled above..
+ print ("changing state to preview from NOT files..");
+
+
+ this.win.rooview.el.set_scale(1.0f,1.0f);
+ }
break;
case State.LISTENER:
+ // same as prop?
case State.PROP:
var ae = this.left_tree.getActiveElement();
if (ae == null) {
- this.state = this.oldstate;
- this.buttonShowHide();
+ this.state = oldstate;
+ this.buttonsShowHide();
+ this.resizeCanvasElements();
+ this.easingRestoreAll();
return;
}
this.add_props.el.show_all();
- this.win.rooview.el.save_easing_state();
- // -- FIXME? this needs to be State aware?
- this.resizeCanvasElementsA();
- this.win.rooview.el.restore_easing_state();
-
- this.win.addpropsview.el.save_easing_state();
+ // -- FIXME? this needs to be State aware?
+
+ this.win.rooview.el.set_pivot_point(1.0f,0.5f);
+
this.win.addpropsview.el.set_scale(1.0f,1.0f);
- this.win.addpropsview.el.restore_easing_state();
-
-
- case State.CODE:
-
- this.code_editor.el.show_all();
-
- // caller needs to call editor - show....
- this.win.rooview.el.save_easing_state();
- this.resizeCanvasElementsA();
- this.win.rooview.el.restore_easing_state();
-
-
- this.win.codeeditview.el.save_easing_state();
- this.win.codeeditview.el.set_scale(1.0f,1.0f);
- this.win.codeeditview.el.restore_easing_state();
- break;
-
-
- case State.OBJECT:
- var n = _this.left_tree.getActiveElement();
+ break;
+
+ case State.OBJECT:
+ var n = this.left_tree.getActiveElement();
- if (_this.left_tree.model.file == null) {
- this.state = this.oldstate;
- this.buttonShowHide();
+ if (this.left_tree.model.file == null) {
+ this.state =oldstate;
+ this.buttonsShowHide();
+ this.resizeCanvasElements();
+ this.easingRestoreAll();
return;
}
- if (n == null && _this.left_tree.model.file.tree != null) {
- this.state = this.oldstate;
- this.buttonShowHide();
+ if (n == null && this.left_tree.model.file.tree != null) {
+ this.state = oldstate;
+ this.buttonsShowHide();
+ this.resizeCanvasElements();
+ this.easingRestoreAll();
return;
}
this.rightpalete.el.show_all();
- this.rightpalete.load(_this.left_tree.getActiveFile().palete(), n == null ? "*top" : n.fqn());
-
- this.win.rooview.el.save_easing_state();
- this.resizeCanvasElementsA();
- this.win.rooview.el.restore_easing_state();
+ this.rightpalete.load(this.left_tree.getActiveFile().palete(), n == null ? "*top" : n.fqn());
- this.win.objectview.el.save_easing_state();
- this.win.objectview.el.sset_scale(1.0f,1.0f);
- this.win.objectview.el.restore_easing_state();
+
+
+ this.win.objectview.el.set_scale(1.0f,1.0f);
+
break;
+
+
+ case State.CODE:
+
+ this.code_editor.el.show_all();
+
+ // caller needs to call editor - show....
+
+
+ this.win.codeeditview.el.set_scale(1.0f,1.0f);
+ break;
+
+
case State.PROJECT:
- if (this.win.project.xtype == "Roo") {
+ if (this.win.project.xtype == "Roo") {
this.projectsettings.el.show_all();
- this.projectsettings.show(this.project);
+ this.projectsettings.show(this.win.project);
} else {
this.vala_projectsettings.el.show_all();
- this.vala_projectsettings.show((Project.Gtk)this.project);
+ this.vala_projectsettings.show((Project.Gtk)this.win.project);
}
- this.win.rooview.el.save_easing_state();
- this.resizeCanvasElementsA();
- this.win.rooview.el.restore_easing_state();
-
- this.win.projecteditview.el.save_easing_state();
- this.win.projecteditview.el.set_scale(0.0f,0.0f);
- this.win.projecteditview.el.restore_easing_state();
+ this.win.rooview.el.set_pivot_point(1.0f,1.0f); // bottom right..
+
+ this.win.projecteditview.el.set_scale(1.0f,1.0f);
+
+
break;
case State.FILES: // can only get here from PREVIEW state.. in theory..
this.left_projects.el.show();
- var el = this.win.rooview.el;
- el.save_easing_state();
- el.set_easing_duration(1000);
-
- el.set_rotation_angle(Clutter.RotateAxis.Y_AXIS, 360.0f);
- el.set_scale(0.0f,0.0f);
+ this.win.rooview.el.set_easing_duration(1000);
+ this.win.rooview.el.set_pivot_point(0.5f,0.5f);
+ this.win.rooview.el.set_rotation_angle(Clutter.RotateAxis.Y_AXIS, 180.0f);
+ this.win.rooview.el.set_opacity(0);
+ //el.set_scale(0.0f,0.0f);
if (this.win.project != null) {
- this.left_projects.selectProject(_this.project);
+ this.left_projects.selectProject(this.win.project);
}
- el.restore_easing_state();
+
+ this.clutterfiles.el.show_all();
+
+ this.clutterfiles.el.set_easing_duration(1000);
+ this.clutterfiles.el.set_pivot_point(0.5f,0.5f);
+ this.clutterfiles.el.set_rotation_angle(Clutter.RotateAxis.Y_AXIS, 0.0f);
+ this.clutterfiles.el.set_opacity(0xff);
+
+
break;
}
-
+ this.resizeCanvasElements();
+ this.easingRestoreAll();
+
}
+ public int redraw_count = 0;
+ public void resizeCanvas() // called by window resize .. delays redraw
+ {
+ var rc = this.redraw_count;
+ this.redraw_count = 2;
+ if (rc == 0) {
+ GLib.Timeout.add(100, () =>{
+ return this.resizeCanvasQueue();
+ });
+ }
+ }
+ public bool resizeCanvasQueue()
+ {
+ //print("WindowState.resizeCanvasQueue %d\n", this.redraw_count);
+
+ if (this.redraw_count < 1) {
+ return false; // should not really happen...
+ }
+
+
+ this.redraw_count--;
+
+ if (this.redraw_count > 0) {
+ return true; // do it again in 1 second...
+ }
+ // got down to 0 or -1....
+ this.redraw_count = 0;
+ this.resizeCanvasElements();
+ return false;
+
+ }
+ public void resizeCanvasElements()
+ {
+ Gtk.Allocation alloc;
+ this.win.clutterembed.el.get_allocation(out alloc);
+
+ // print("WindowState.resizeCanvasElements\n");
+ if (!this.children_loaded || this.win.clutterembed == null) {
+ print("WindowState.resizeCanvasElements = ingnore not loaded or no clutterfiles\n");
+ return;
+ }
+
+ var avail = alloc.width < 50.0f ? 0 : alloc.width - 50.0f;
+ var palsize = avail < 300.0f ? avail : 300.0f;
+
+
+ // -------- code edit min 600
+
+ var codesize = avail < 800.0f ? avail : 800.0f;
+
+
+ //print("set code size %f\n", codesize);
+
+
+
+ switch ( this.state) {
+ case State.PREVIEW:
+ this.win.rooview.el.set_size(alloc.width-50, alloc.height);
+ break;
+
+ case State.FILES:
+ this.clutterfiles.set_size(alloc.width-50, alloc.height);
+ break;
+
+ case State.PROJECT:
+
+ this.win.projecteditview.el.set_size(alloc.width-50, alloc.height / 2.0f);
+
+ // this.win.rooview.el.save_easing_state();
+ //this.win.rooview.el.set_size(alloc.width / 2.0f, alloc.height / 2.0f);
+ this.win.rooview.el.set_scale(0.5f, 0.5f);
+ //this.win.rooview.el.restore_easing_state();
+ break;
+
+ case State.CODE:
+ this.win.codeeditview.el.set_size(codesize, alloc.height);
+ var scale = avail > 0.0f ? (avail - codesize -10 ) / avail : 0.0f;
+ //this.win.rooview.el.save_easing_state();
+
+ this.win.rooview.el.set_scale(scale,scale);
+ // this.win.rooview.el.restore_easing_state();
+ break;
+
+ case State.PROP:
+ case State.LISTENER:
+ this.win.addpropsview.el.set_size(palsize, alloc.height);
+ var scale = avail > 0.0f ? (avail - palsize -10 ) / avail : 0.0f;
+ this.win.rooview.el.set_scale(scale,scale);
+ break;
+
+ case State.OBJECT:
+ this.win.objectview.el.set_size(palsize, alloc.height);
+ var scale = avail > 0.0f ? (avail - palsize -10 ) / avail : 0.0f;
+ //this.win.rooview.el.save_easing_state();
+ this.win.rooview.el.set_scale(scale,scale);
+ // this.win.rooview.el.restore_easing_state();
+ break;
+ }
+ }
+
// -- buttons show hide.....
public void buttonsShowHide()
this.win.addfilebutton.el.hide();
this.win.delprojectbutton.el.hide();
this.win.new_window.el.hide();
-
+ this.win.reload_resources.el.hide();
switch (this.state) {
this.win.addpropbutton.el.show();
this.win.addlistenerbutton.el.show();
break;
-
+
+ case State.PROJECT:
+ // anything else?
+ this.win.backbutton.el.show();
+ break;
+
+
case State.FILES:
this.win.backbutton.el.show();
this.win.addfilebutton.el.show();
this.win.delprojectbutton.el.show();
this.win.new_window.el.show();
+ this.win.reload_resources.el.show();
break;
}
}
- public void resizeCanvasElementsA()
- {
- Gtk.Allocation alloc;
- this.win.cluttermebed.get_allocation(out alloc);
- this.resizeCanvasElements(alloc);
- }
- public void resizeCanvasElements(Gtk.Allocation alloc)
- {
- if (!_this.children_loaded) {
- return;
- }
-
- this.win.clutterfiles.set_size(alloc.width-50, alloc.height);
-
- // ------- project view appears at top...
- this.win.projecteditview.el.set_size(alloc.width-50, alloc.height / 2.0f);
-
- // ------- add property/object left - max 300px, min 50... (or disapear..)
-
- var avail = alloc.width < 50.0f ? 0 : alloc.width - 50.0f;
- var palsize = avail < 300.0f ? avail : 300.0f;
- //print("set palsize size %f\n", palsize);
- // palate / props : fixed 300 pix
-
- this.win.objectview.el.set_size(palsize, alloc.height);
- this.win.addpropsview.el.set_size(palsize, alloc.height);
-
-
-
- // -------- code edit min 600
-
- var codesize = avail < 800.0f ? avail : 800.0f;
- //print("set code size %f\n", codesize);
-
- this.win.codeeditview.el.set_size(codesize, alloc.height);
- this.win.rooview.el.set_size(alloc.width-50, alloc.height);
-
-
-
- switch ( this.state) {
- case State.CODE:
- var scale = avail > 0.0f ? (avail - codesize -10 ) / avail : 0.0f;
- this.win.rooview.el.set_scale(scale,scale);
- break;
-
- case State.PROP:
- case State.LISTENER:
- case State.OBJECT:
- var scale = avail > 0.0f ? (avail - palsize -10 ) / avail : 0.0f;
- this.win.rooview.el.set_scale(scale,scale);
- break;
- }
- }
}
-
\ No newline at end of file
+