ProjectDjangoTagsMenu/DjangoTagsMenuHandler.py

changeset 10
ef5694c0bf3a
parent 9
1b11bf54b3b2
child 11
7e3e1ee102c5
equal deleted inserted replaced
9:1b11bf54b3b2 10:ef5694c0bf3a
4 # 4 #
5 5
6 """ 6 """
7 Module implementing the Django tags menu handler. 7 Module implementing the Django tags menu handler.
8 """ 8 """
9
10 from __future__ import unicode_literals # __IGNORE_WARNING__
11 try:
12 str = unicode
13 except NameError:
14 pass
9 15
10 import os 16 import os
11 import datetime 17 import datetime
12 18
13 from PyQt4.QtCore import QObject 19 from PyQt4.QtCore import QObject
57 mainMenu.addMenu(self.__initFiltersMenu()) 63 mainMenu.addMenu(self.__initFiltersMenu())
58 mainMenu.addMenu(self.__initHumanizeMenu()) 64 mainMenu.addMenu(self.__initHumanizeMenu())
59 mainMenu.addMenu(self.__initWebDesignMenu()) 65 mainMenu.addMenu(self.__initWebDesignMenu())
60 mainMenu.addMenu(self.__initStaticMenu()) 66 mainMenu.addMenu(self.__initStaticMenu())
61 mainMenu.addMenu(self.__initCommentsMenu()) 67 mainMenu.addMenu(self.__initCommentsMenu())
62 # TODO: add internationalization tags/filters menu 68 mainMenu.addMenu(self.__initInternationalizationMenu())
63 # TODO: add localization tags/filters menu 69 # TODO: add localization tags/filters menu
70 mainMenu.addMenu(self.__initlocalizationMenu())
64 # TODO: add timezone tags/filters menu 71 # TODO: add timezone tags/filters menu
72 mainMenu.addMenu(self.__initTimezoneMenu())
65 73
66 def __initTagsMenu(self): 74 def __initTagsMenu(self):
67 """ 75 """
68 Private method to initialize the tags menu. 76 Private method to initialize the tags menu.
69 77
185 """ 193 """
186 Private method to initialize the filters menu. 194 Private method to initialize the filters menu.
187 195
188 @return generated menu (QMenu) 196 @return generated menu (QMenu)
189 """ 197 """
190 # TODO: subdivide into even parts a-i,j-r,s-z
191 mainMenu = QMenu(self.tr("Filters")) 198 mainMenu = QMenu(self.tr("Filters"))
192 199
193 menu = QMenu(self.tr("A-I"), mainMenu) 200 menu = QMenu(self.tr("A-I"), mainMenu)
194 menu.addAction( 201 menu.addAction(
195 self.tr("add - Add variable or string"), 202 self.tr("add - Add variable or string"),
470 self.__staticMenu = menu 477 self.__staticMenu = menu
471 return menu 478 return menu
472 479
473 def __initCommentsMenu(self): 480 def __initCommentsMenu(self):
474 """ 481 """
475 Private method to initialize the static menu. 482 Private method to initialize the comments menu.
476 483
477 @return generated menu (QMenu) 484 @return generated menu (QMenu)
478 """ 485 """
479 menu = QMenu(self.tr("Comment")) 486 menu = QMenu(self.tr("Comment"))
480 menu.addAction( 487 menu.addAction(
512 menu.addAction( 519 menu.addAction(
513 self.tr("MS IE Conditional Comment Selected Text"), 520 self.tr("MS IE Conditional Comment Selected Text"),
514 lambda: self.__applyTemplate("iecomment")) 521 lambda: self.__applyTemplate("iecomment"))
515 522
516 self.__commentsMenu = menu 523 self.__commentsMenu = menu
524 return menu
525
526 def __initInternationalizationMenu(self):
527 """
528 Private method to initialize the static menu.
529
530 @return generated menu (QMenu)
531 """
532 mainMenu = QMenu(self.tr("Internationalization (i18n)"))
533 mainMenu.addAction(
534 self.tr("Load Package"),
535 lambda: self.__applyTemplate("loadi18n"))
536 mainMenu.addSeparator()
537
538 menu = QMenu(self.tr("Tags"), mainMenu)
539 menu.addAction(
540 self.tr("trans - Translate String or Variable"),
541 lambda: self.__applyTemplate("trans"))
542 menu.addAction(
543 self.tr("trans..as - Translate String into Variable"),
544 lambda: self.__applyTemplate("trans..as"))
545 menu.addSeparator()
546 menu.addAction(
547 self.tr("blocktrans - Translate Block"),
548 lambda: self.__applyTemplate("blocktrans"))
549 menu.addAction(
550 self.tr("blocktrans..with - Translate Block with Attributes"),
551 lambda: self.__applyTemplate("blocktrans..with"))
552 menu.addAction(
553 self.tr("plural - Plural Block"),
554 lambda: self.__applyTemplate("plural"))
555 menu.addAction(
556 self.tr("language - Switch language"),
557 lambda: self.__applyTemplate("language"))
558 menu.addSeparator()
559 menu.addAction(
560 self.tr("get_current_language - Current language"),
561 lambda: self.__applyTemplate("get_current_language"))
562 menu.addAction(
563 self.tr("get_available_languages - Available languages"),
564 lambda: self.__applyTemplate("get_available_languages"))
565 menu.addAction(
566 self.tr("get_current_language_bidi - Current language's"
567 " direction"),
568 lambda: self.__applyTemplate("get_current_language_bidi"))
569 menu.addAction(
570 self.tr("get_language_info - Language Information"),
571 lambda: self.__applyTemplate("get_language_info"))
572 menu.addAction(
573 self.tr("get_language_info_list - Language Information for a list"
574 " of languages"),
575 lambda: self.__applyTemplate("get_language_info_list"))
576 mainMenu.addMenu(menu)
577
578 menu = QMenu(self.tr("Filters"), mainMenu)
579 menu.addAction(
580 self.tr("language_name - Language name"),
581 lambda: self.__applyTemplate("language_name"))
582 menu.addAction(
583 self.tr("language_name_local - Language name translated"),
584 lambda: self.__applyTemplate("language_name_local"))
585 menu.addAction(
586 self.tr("bidi - Language's direction"),
587 lambda: self.__applyTemplate("bidi"))
588 mainMenu.addMenu(menu)
589
590 self.__internationalizationMenu = mainMenu
591 return mainMenu
592
593 def __initlocalizationMenu(self):
594 """
595 Private method to initialize the static menu.
596
597 @return generated menu (QMenu)
598 """
599 mainMenu = QMenu(self.tr("Localization (l10n)"))
600 mainMenu.addAction(
601 self.tr("Load Package"),
602 lambda: self.__applyTemplate("loadl10n"))
603 mainMenu.addSeparator()
604
605 menu = QMenu(self.tr("Tags"), mainMenu)
606
607 menu = QMenu(self.tr("Filters"), mainMenu)
608
609 self.__localizationMenu = mainMenu
610 return mainMenu
611
612 def __initTimezoneMenu(self):
613 """
614 Private method to initialize the static menu.
615
616 @return generated menu (QMenu)
617 """
618 menu = QMenu(self.tr("Timezone (tz)"))
619 menu.addAction(
620 self.tr("Load Package"),
621 lambda: self.__applyTemplate("loadtz"))
622 menu.addSeparator()
623
624 self.__timezoneMenu = menu
517 return menu 625 return menu
518 626
519 def __findTemplateTag(self): 627 def __findTemplateTag(self):
520 """ 628 """
521 Private slot to find a template tag and insert its text. 629 Private slot to find a template tag and insert its text.
1248 E5MessageBox.critical( 1356 E5MessageBox.critical(
1249 None, 1357 None,
1250 self.tr("Comment File"), 1358 self.tr("Comment File"),
1251 self.tr("""<p>The file <b>{0}</b> could not be""" 1359 self.tr("""<p>The file <b>{0}</b> could not be"""
1252 """ read.</p><p>Reason: {1}</p>""").format( 1360 """ read.</p><p>Reason: {1}</p>""").format(
1253 str(err))) 1361 str(err)))
1254 elif tag == "singlelinecommentdatetime": 1362 elif tag == "singlelinecommentdatetime":
1255 templateText = '{{# {0} by {1} #}}'.format( 1363 templateText = '{{# {0} by {1} #}}'.format(
1256 datetime.datetime.now().isoformat().split(), 1364 datetime.datetime.now().isoformat().split(),
1257 Utilities.getUserName()) 1365 Utilities.getUserName())
1258 elif tag == "htmlcomment": 1366 elif tag == "htmlcomment":
1263 tag, ok = IeCommentDialog.getTag(selectedText) 1371 tag, ok = IeCommentDialog.getTag(selectedText)
1264 if ok: 1372 if ok:
1265 templateText = '<!--{0}-->'.format(tag) 1373 templateText = '<!--{0}-->'.format(tag)
1266 replace = True 1374 replace = True
1267 1375
1268 # TODO: add internationalization tags/filters 1376 ####################################################
1377 ## Internationalization ##
1378 ####################################################
1379
1380 elif tag == "loadi18n":
1381 templateText = '{% load i18n %}'
1382 ## Tags ##
1383 elif tag == "trans":
1384 if ' ' in selectedText:
1385 selectedText = '"{0}"'.format(selectedText)
1386 templateText = '{{% trans {0} %}}'.format(selectedText)
1387 replace = True
1388 elif tag == "trans..as":
1389 data, ok = DjangoTagInputDialog.getText(
1390 None,
1391 self.tr("Translate String into Variable"),
1392 [self.tr("Enter variable receiving translation:")],
1393 ["translation"])
1394 if ok:
1395 templateText = '{{% trans "{0}" as {1} %}}'.format(
1396 selectedText, data[0])
1397 replace = True
1398 elif tag == "blocktrans":
1399 templateText = '{{% blocktrans %}}{0}{{% endblocktrans %}}'.format(
1400 selectedText)
1401 replace = True
1402 elif tag == "blocktrans..with":
1403 data, ok = DjangoTagInputDialog.getText(
1404 None,
1405 self.tr("Translate Block with Attributes"),
1406 [self.tr("Enter attribute binding expressions"
1407 " (space separated):")],
1408 ["myvar1=value1 myvar2=value2"])
1409 if ok:
1410 templateText = (
1411 '{{% blocktrans with {0} %}}{1}{{% endblocktrans %}}'
1412 .format(data[0], selectedText))
1413 replace = True
1414 elif tag == "plural":
1415 templateText = '{{% plural %}} {0}'.format(selectedText)
1416 replace = True
1417 elif tag == "language":
1418 data, ok = DjangoTagInputDialog.getText(
1419 None,
1420 self.tr("Switch language"),
1421 [self.tr("Enter language:")],
1422 ["en"])
1423 if ok:
1424 templateText = (
1425 "{{% language '{0}' %}}{1}{{% endlanguage %}}"
1426 .format(data[0], selectedText))
1427 replace = True
1428 elif tag == "get_current_language":
1429 templateText = '{% get_current_language as LANGUAGE_CODE %}'
1430 elif tag == "get_available_languages":
1431 templateText = '{% get_available_languages as LANGUAGES %}'
1432 elif tag == "get_current_language_bidi":
1433 templateText = '{% get_current_language_bidi as LANGUAGE_BIDI %}'
1434 elif tag == "get_language_info":
1435 data, ok = DjangoTagInputDialog.getText(
1436 None,
1437 self.tr("Language Information"),
1438 [self.tr("Enter language string or variable (empty for"
1439 " LANGUAGE_CODE):")],
1440 ['"en"'])
1441 if ok:
1442 if data[0]:
1443 templateText = (
1444 '{{% get_language_info for "{0}" as lang %}}'
1445 .format(data[0]))
1446 else:
1447 templateText = ("{% get_language_info for LANGUAGE_CODE"
1448 " as lang %}")
1449 elif tag == "get_language_info_list":
1450 data, ok = DjangoTagInputDialog.getText(
1451 None,
1452 self.tr("Language Information for a list of languages"),
1453 [self.tr("Enter language list variable (empty for"
1454 " LANGUAGES):")],
1455 ["available_languages"])
1456 if ok:
1457 if data[0]:
1458 templateText = (
1459 '{{% get_language_info_list for {0} as langs %}}'
1460 .format(data[0]))
1461 else:
1462 templateText = ("{% get_language_info_list for LANGUAGES"
1463 " as langs %}")
1464 ## Filters ##
1465 elif tag == "language_name":
1466 templateText = '|language_name'
1467 elif tag == "language_name_local":
1468 templateText = '|language_name_local'
1469 elif tag == "bidi":
1470 templateText = '|bidi'
1471
1269 # TODO: add localization tags/filters 1472 # TODO: add localization tags/filters
1473 ####################################################
1474 ## Localization ##
1475 ####################################################
1476
1477 elif tag == "loadl10n":
1478 templateText = '{% load l10n %}'
1479
1270 # TODO: add timezone tags/filters 1480 # TODO: add timezone tags/filters
1481 ####################################################
1482 ## Timezone ##
1483 ####################################################
1484
1485 elif tag == "loadtz":
1486 templateText = '{% load tz %}'
1487
1271 #################################################### 1488 ####################################################
1272 ## Fallback: return just the tag name ## 1489 ## Fallback: return just the tag name ##
1273 #################################################### 1490 ####################################################
1274 1491
1275 else: 1492 else:

eric ide

mercurial