Package mcbase :: Package libs :: Package designeditor :: Module alignmenttoolbar
[hide private]
[frames] | no frames]

Source Code for Module mcbase.libs.designeditor.alignmenttoolbar

  1  # -*- coding: utf-8 -*- 
  2   
  3  ########################################################################## 
  4  # alignmentoolbar.py 
  5  # 
  6  # Alanların yaslanmaları ile ilgili toolbar'dır 
  7  # 
  8  # (C) 2006 Likya Yazılım ve Bilişim Hizmetleri Ltd. Şti. 
  9  ########################################################################## 
 10   
 11  from PyQt4.QtCore import * 
 12  from PyQt4.QtGui import * 
 13   
 14  from toolbar import ToolBar 
 15  from reportitem import ReportItem 
 16  from tools import * 
 17   
 18  import commands as cmd 
 19   
20 -class AlignmentToolBar(ToolBar):
21
22 - def initToolBar(self):
23 ''' 24 ToolBar ile ilgili özel ayarları yapar. 25 ''' 26 self.connect(self.getAction('aligngrid'), SIGNAL('triggered(bool)'), self.alignGrid) 27 self.connect(self.getAction('alignleft'), SIGNAL('triggered(bool)'), self.alignLeft) 28 self.connect(self.getAction('aligntop'), SIGNAL('triggered(bool)'), self.alignTop) 29 self.connect(self.getAction('alignbottom'), SIGNAL('triggered(bool)'), self.alignBottom) 30 self.connect(self.getAction('alignright'), SIGNAL('triggered(bool)'), self.alignRight) 31 self.connect(self.getAction('alignhcenter'), SIGNAL('triggered(bool)'), self.alignHCenter) 32 self.connect(self.getAction('alignvcenter'), SIGNAL('triggered(bool)'), self.alignVCenter) 33 34 self.connect(self._editor, SIGNAL('selectionChanged()'), self.selectionChanged) 35 36 self.selectionChanged()
37
38 - def selectedItems(self):
39 ''' 40 Seçili rapor nesnelerini verir. 41 ''' 42 return filter(lambda x: isinstance(x, ReportItem), self._editor.scene().selectedItems())
43
44 - def undoStack(self):
45 ''' 46 Undo stack'ini döndürür. 47 ''' 48 return self._editor.undoStack()
49
50 - def selectionChanged(self):
51 ''' 52 Seçili nesneler değiştiği zaman silme butonunu enable/disable eder. 53 ''' 54 selectedItemNumber = len(self.selectedItems()) 55 56 if selectedItemNumber >= 2: 57 self.getAction('aligngrid').setEnabled(True) 58 self.getAction('alignleft').setEnabled(True) 59 self.getAction('aligntop').setEnabled(True) 60 self.getAction('alignbottom').setEnabled(True) 61 self.getAction('alignright').setEnabled(True) 62 self.getAction('alignhcenter').setEnabled(True) 63 self.getAction('alignvcenter').setEnabled(True) 64 65 elif selectedItemNumber >= 1: 66 self.getAction('aligngrid').setEnabled(True) 67 self.getAction('alignleft').setEnabled(False) 68 self.getAction('aligntop').setEnabled(False) 69 self.getAction('alignbottom').setEnabled(False) 70 self.getAction('alignright').setEnabled(False) 71 self.getAction('alignhcenter').setEnabled(False) 72 self.getAction('alignvcenter').setEnabled(False) 73 74 else: 75 self.getAction('aligngrid').setEnabled(False) 76 self.getAction('alignleft').setEnabled(False) 77 self.getAction('aligntop').setEnabled(False) 78 self.getAction('alignbottom').setEnabled(False) 79 self.getAction('alignright').setEnabled(False) 80 self.getAction('alignhcenter').setEnabled(False) 81 self.getAction('alignvcenter').setEnabled(False)
82
83 - def alignGrid(self):
84 ''' 85 Seçili nesneleri grid'e yapıştırır. 86 ''' 87 # Undo Stack'imize gerekli komutları atıyoruz. 88 self.undoStack().beginMacro(tr("Grid'e Yapıştır")) 89 90 for item in self.selectedItems(): 91 oldPos = item.pos() 92 newPos = self._plugin.alignToGrid(item.pos(), False) 93 self.undoStack().push(cmd.MoveItem(item, oldPos, newPos)) 94 95 self.undoStack().endMacro()
96
97 - def alignLeft(self):
98 ''' 99 Seçilen nesnelerin en sol noktalarını, en solda bulunan nesneye göre ayarlar 100 ''' 101 x = None 102 103 # En soldaki nesneyi buluyoruz 104 for item in self.selectedItems(): 105 if x is None: 106 x = item.pos().x() 107 108 if item.pos().x() < x: 109 x = item.pos().x() 110 111 # Undo Stack'imize gerekli komutları atıyoruz. 112 self.undoStack().beginMacro(tr("Sola Yasla")) 113 114 for item in self.selectedItems(): 115 oldPos = item.pos() 116 newPos = QPointF(x, item.pos().y()) 117 self.undoStack().push(cmd.MoveItem(item, oldPos, newPos)) 118 119 self.undoStack().endMacro()
120
121 - def alignTop(self):
122 ''' 123 Seçilen nesnelerin üst noktalarını, en üstte bulunan nesneye göre ayarlar 124 ''' 125 y = None 126 127 # En soldaki nesneyi buluyoruz 128 for item in self.selectedItems(): 129 if y is None: 130 y = item.pos().y() 131 132 if item.pos().y() < y: 133 y = item.pos().y() 134 135 # Undo Stack'imize gerekli komutları atıyoruz. 136 self.undoStack().beginMacro(tr("Üste Yasla")) 137 138 for item in self.selectedItems(): 139 oldPos = item.pos() 140 newPos = QPointF(item.pos().x(), y) 141 self.undoStack().push(cmd.MoveItem(item, oldPos, newPos)) 142 143 self.undoStack().endMacro()
144
145 - def alignBottom(self):
146 ''' 147 Seçilen nesnelerin alt noktalarını, en aşağıda bulunan nesneye göre ayarlar 148 ''' 149 y = None 150 151 # En soldaki nesneyi buluyoruz 152 for item in self.selectedItems(): 153 if y is None: 154 y = item.pos().y() + item.height() 155 156 if (item.pos().y() + item.height()) > y: 157 y = item.pos().y() + item.height() 158 159 # Undo Stack'imize gerekli komutları atıyoruz. 160 self.undoStack().beginMacro(tr("Alta Yasla")) 161 162 for item in self.selectedItems(): 163 oldPos = item.pos() 164 newPos = QPointF(item.pos().x(), y - item.height()) 165 self.undoStack().push(cmd.MoveItem(item, oldPos, newPos)) 166 167 self.undoStack().endMacro()
168
169 - def alignRight(self):
170 ''' 171 Seçilen nesnelerin en sağ noktalarını, en sağda bulunan nesneye göre ayarlar 172 ''' 173 x = None 174 175 # En soldaki nesneyi buluyoruz 176 for item in self.selectedItems(): 177 if x is None: 178 x = item.pos().x() + item.width() 179 180 if (item.pos().x() + item.width()) > x: 181 x = item.pos().x() + item.width() 182 183 # Undo Stack'imize gerekli komutları atıyoruz. 184 self.undoStack().beginMacro(tr("Sağa Yasla")) 185 186 for item in self.selectedItems(): 187 oldPos = item.pos() 188 newPos = QPointF(x - item.width(), item.pos().y()) 189 self.undoStack().push(cmd.MoveItem(item, oldPos, newPos)) 190 191 self.undoStack().endMacro()
192
193 - def alignHCenter(self):
194 ''' 195 Seçilen nesnelerin orta noktalarını yatay olarak ortalar 196 ''' 197 smallY = None 198 bigY = None 199 200 for item in self.selectedItems(): 201 if smallY is None: 202 smallY = item.pos().y() 203 204 if bigY is None: 205 bigY = item.pos().y() + item.height() 206 207 if item.pos().y() < smallY: 208 smallY = item.pos().y() 209 210 if (item.pos().y() + item.height()) > bigY: 211 bigY = item.pos().y() + item.height() 212 213 midY = (smallY + bigY) / 2 214 215 # Undo Stack'imize gerekli komutları atıyoruz. 216 self.undoStack().beginMacro(tr("Yatay Ortala")) 217 218 for item in self.selectedItems(): 219 oldPos = item.pos() 220 newPos = QPointF(item.x(), midY - item.height() / 2) 221 self.undoStack().push(cmd.MoveItem(item, oldPos, newPos)) 222 223 self.undoStack().endMacro()
224
225 - def alignVCenter(self):
226 ''' 227 Seçilen nesnelerin orta noktalarını dikey olarak ortalar 228 ''' 229 smallX = None 230 bigX = None 231 232 for item in self.selectedItems(): 233 if smallX is None: 234 smallX = item.pos().x() 235 236 if bigX is None: 237 bigX = item.pos().x() + item.width() 238 239 if item.pos().x() < smallX: 240 smallX = item.pos().x() 241 242 if (item.pos().x() + item.width()) > bigX: 243 bigX = item.pos().x() + item.width() 244 245 midX = (smallX + bigX) / 2 246 247 # Undo Stack'imize gerekli komutları atıyoruz. 248 self.undoStack().beginMacro(tr("Dikey Ortala")) 249 250 for item in self.selectedItems(): 251 oldPos = item.pos() 252 newPos = QPointF(midX - item.width() / 2, item.pos().y()) 253 self.undoStack().push(cmd.MoveItem(item, oldPos, newPos)) 254 255 self.undoStack().endMacro()
256
257 - def getToolbarItems(self):
258 ''' 259 Toolbar'da nelerin olacağını belirler. 260 ''' 261 toolbarItems = [ 262 ('aligngrid', 'Karelere Yasla', 'Ctrl+K', 'Seçilen nesneleri, en yakınlarındaki karelere yaslar'), 263 ('alignleft', 'Sola Yasla', 'Ctrl+L', 'Seçilen nesnelerin en sol noktalarını, en solda bulunan nesneye göre ayarlar'), 264 ('aligntop', 'Üste Yasla', 'Ctrl+U', 'Seçilen nesnelerin üst noktalarını, en üstte bulunan nesneye göre ayarlar'), 265 ('alignbottom', 'Alta Yasla', 'Ctrl+B', 'Seçilen nesnelerin alt noktalarını, en aşağıda bulunan nesneye göre ayarlar'), 266 ('alignright', 'Sağa Yasla', 'Ctrl+R', 'Seçilen nesnelerin en sağ noktalarını, en sağda bulunan nesneye göre ayarlar'), 267 ('alignhcenter', 'Yatay Ortala', 'Ctrl+H', 'Seçilen nesnelerin orta noktalarını yatay olarak ortalar'), 268 ('alignvcenter', 'Dikey Ortala', 'Ctrl+V', 'Seçilen nesnelerin orta noktalarını dikey olarak ortalar'), 269 ] 270 271 return toolbarItems
272