3 function MotifsPerspective(options){
5 var old_callback = options.callback;
7 options.callback = function(){
10 self.$tag_name = $('#motifs-editor #tag-name');
11 withThemes(function(canonThemes){
12 self.$tag_name.autocomplete(canonThemes, {
20 self.$objects_list = $('#motifs-editor #objects-list');
27 if (!CurrentDocument.readonly) {
28 self.ias = $('#motifs-editor img.area-selectable').imgAreaSelect({ handles: true, onSelectEnd: self._fillCoords(self), instance: true });
29 $('#motifs-editor #add').click(self._addObject(self));
31 $('.delete', self.$objects_list).live('click', function() {
32 $(this).prev().trigger('click');
33 if (window.confirm("Czy na pewno chcesz usunąć ten motyw?")) {
34 $(this).prev().remove();
37 self._resetSelection();
42 $('.image-object', self.$objects_list).live('click', function(){
43 $('.active', self.$objects_list).removeClass('active');
44 $(this).addClass('active');
45 var coords = $(this).data('coords');
47 self.ias.setSelection.apply(self.ias, coords);
48 self.ias.setOptions({ show: true });
51 self._resetSelection();
55 old_callback.call(this);
58 $.wiki.Perspective.call(this, options);
61 MotifsPerspective.prototype = new $.wiki.Perspective();
63 MotifsPerspective.prototype.freezeState = function(){
67 MotifsPerspective.prototype._resetSelection = function() {
69 self.x1 = self.x2 = self.y1 = self.y2 = null;
70 self.ias.setOptions({ hide: true });
74 MotifsPerspective.prototype._push = function(name, x1, y1, x2, y2) {
75 var $e = $('<span class="image-object"></span>')
78 $e.data('coords', [x1, y1, x2, y2]);
79 this.$objects_list.append($e);
80 this.$objects_list.append('<span class="delete">(x)</span>');
84 MotifsPerspective.prototype._addObject = function(self) {
87 chunks = self.$tag_name.val().split(',');
89 item = chunks[i].trim();
92 outputs.push(item.trim());
94 output = outputs.join(', ');
96 self._push(output, self.x1, self.y1, self.x2, self.y2);
97 self._resetSelection();
101 MotifsPerspective.prototype._fillCoords = function(self) {
102 return function(img, selection) {
103 $('.active', self.$objects_list).removeClass('active');
104 if (selection.x1 != selection.x2 && selection.y1 != selection.y2) {
105 self.x1 = selection.x1;
106 self.x2 = selection.x2;
107 self.y1 = selection.y1;
108 self.y2 = selection.y2;
111 self.x1 = self.x2 = self.y1 = self.y2 = null;
116 MotifsPerspective.prototype.onEnter = function(success, failure){
118 this.$objects_list.children().remove();
120 $.each(this.doc.getImageItems('theme'), function(i, e) {
121 self._push.apply(self, e);
124 if (this.x1 !== null)
125 this.ias.setOptions({enable: true, show: true});
127 this.ias.setOptions({enable: true});
129 $.wiki.Perspective.prototype.onEnter.call(this);
133 MotifsPerspective.prototype.onExit = function(success, failure){
136 this.$objects_list.children(".image-object").each(function(i, e) {
137 var args = $(e).data('coords');
139 args = [null, null, null, null];
140 args.unshift($(e).text());
143 self.doc.setImageItems('theme', motifs);
145 this.ias.setOptions({disable: true, hide: true});
149 $.wiki.MotifsPerspective = MotifsPerspective;