96 |
96 |
97 def vcsShutdown(self): |
97 def vcsShutdown(self): |
98 """ |
98 """ |
99 Public method used to shutdown the vcs interface. |
99 Public method used to shutdown the vcs interface. |
100 |
100 |
101 @exception RuntimeError to indicate that this method must be |
101 @exception NotImplementedError to indicate that this method must be |
102 implemented by a subclass |
102 implemented by a subclass |
103 """ |
103 """ |
104 raise RuntimeError("Not implemented") |
104 raise NotImplementedError("Not implemented") |
105 |
105 |
106 def vcsExists(self): |
106 def vcsExists(self): |
107 """ |
107 """ |
108 Public method used to test for the presence of the vcs. |
108 Public method used to test for the presence of the vcs. |
109 |
109 |
110 @return tuple of flag indicating the existence and a string |
110 @return tuple of flag indicating the existence and a string |
111 giving an error message in case of failure |
111 giving an error message in case of failure |
112 @exception RuntimeError to indicate that this method must be |
112 @exception NotImplementedError to indicate that this method must be |
113 implemented by a subclass |
113 implemented by a subclass |
114 """ |
114 """ |
115 raise RuntimeError("Not implemented") |
115 raise NotImplementedError("Not implemented") |
116 |
116 |
117 return (False, "") |
117 return (False, "") |
118 |
118 |
119 def vcsInit(self, vcsDir, noDialog=False): |
119 def vcsInit(self, vcsDir, noDialog=False): |
120 """ |
120 """ |
121 Public method used to initialize the vcs. |
121 Public method used to initialize the vcs. |
122 |
122 |
123 @param vcsDir name of the VCS directory (string) |
123 @param vcsDir name of the VCS directory (string) |
124 @param noDialog flag indicating quiet operations (boolean) |
124 @param noDialog flag indicating quiet operations (boolean) |
125 @return flag indicating success (boolean) |
125 @return flag indicating success (boolean) |
126 @exception RuntimeError to indicate that this method must be |
126 @exception NotImplementedError to indicate that this method must be |
127 implemented by a subclass |
127 implemented by a subclass |
128 """ |
128 """ |
129 raise RuntimeError("Not implemented") |
129 raise NotImplementedError("Not implemented") |
130 |
130 |
131 return False |
131 return False |
132 |
132 |
133 def vcsConvertProject(self, vcsDataDict, project, addAll=True): |
133 def vcsConvertProject(self, vcsDataDict, project, addAll=True): |
134 """ |
134 """ |
174 |
174 |
175 @param vcsDataDict dictionary of data required for the checkout |
175 @param vcsDataDict dictionary of data required for the checkout |
176 @param projectDir project directory to create (string) |
176 @param projectDir project directory to create (string) |
177 @param noDialog flag indicating quiet operations |
177 @param noDialog flag indicating quiet operations |
178 @return flag indicating an execution without errors (boolean) |
178 @return flag indicating an execution without errors (boolean) |
179 @exception RuntimeError to indicate that this method must be |
179 @exception NotImplementedError to indicate that this method must be |
180 implemented by a subclass |
180 implemented by a subclass |
181 """ |
181 """ |
182 raise RuntimeError("Not implemented") |
182 raise NotImplementedError("Not implemented") |
183 |
183 |
184 return False |
184 return False |
185 |
185 |
186 def vcsExport(self, vcsDataDict, projectDir): |
186 def vcsExport(self, vcsDataDict, projectDir): |
187 """ |
187 """ |
188 Public method used to export a directory from the vcs. |
188 Public method used to export a directory from the vcs. |
189 |
189 |
190 @param vcsDataDict dictionary of data required for the export |
190 @param vcsDataDict dictionary of data required for the export |
191 @param projectDir project directory to create (string) |
191 @param projectDir project directory to create (string) |
192 @return flag indicating an execution without errors (boolean) |
192 @return flag indicating an execution without errors (boolean) |
193 @exception RuntimeError to indicate that this method must be |
193 @exception NotImplementedError to indicate that this method must be |
194 implemented by a subclass |
194 implemented by a subclass |
195 """ |
195 """ |
196 raise RuntimeError("Not implemented") |
196 raise NotImplementedError("Not implemented") |
197 |
197 |
198 return False |
198 return False |
199 |
199 |
200 def vcsCommit(self, name, message, noDialog=False): |
200 def vcsCommit(self, name, message, noDialog=False): |
201 """ |
201 """ |
204 |
204 |
205 @param name file/directory name to be committed (string) |
205 @param name file/directory name to be committed (string) |
206 @param message message for this operation (string) |
206 @param message message for this operation (string) |
207 @param noDialog flag indicating quiet operations (boolean) |
207 @param noDialog flag indicating quiet operations (boolean) |
208 @return flag indicating success (boolean) |
208 @return flag indicating success (boolean) |
209 @exception RuntimeError to indicate that this method must be |
209 @exception NotImplementedError to indicate that this method must be |
210 implemented by a subclass |
210 implemented by a subclass |
211 """ |
211 """ |
212 raise RuntimeError("Not implemented") |
212 raise NotImplementedError("Not implemented") |
213 |
213 |
214 return False |
214 return False |
215 |
215 |
216 def vcsCommitMessages(self): |
216 def vcsCommitMessages(self): |
217 """ |
217 """ |
218 Public method to get the list of saved commit messages. |
218 Public method to get the list of saved commit messages. |
219 |
219 |
220 @return list of saved commit messages |
220 @return list of saved commit messages |
221 @rtype list of str |
221 @rtype list of str |
222 @exception RuntimeError to indicate that this method must be |
222 @exception NotImplementedError to indicate that this method must be |
223 implemented by a subclass |
223 implemented by a subclass |
224 """ |
224 """ |
225 raise RuntimeError("Not implemented") |
225 raise NotImplementedError("Not implemented") |
226 |
226 |
227 return [] |
227 return [] |
228 |
228 |
229 def _vcsProjectCommitMessages(self): |
229 def _vcsProjectCommitMessages(self): |
230 """ |
230 """ |
331 |
331 |
332 @param name file/directory name to be updated (string) |
332 @param name file/directory name to be updated (string) |
333 @param noDialog flag indicating quiet operations (boolean) |
333 @param noDialog flag indicating quiet operations (boolean) |
334 @return flag indicating, that the update contained an add |
334 @return flag indicating, that the update contained an add |
335 or delete (boolean) |
335 or delete (boolean) |
336 @exception RuntimeError to indicate that this method must be |
336 @exception NotImplementedError to indicate that this method must be |
337 implemented by a subclass |
337 implemented by a subclass |
338 """ |
338 """ |
339 raise RuntimeError("Not implemented") |
339 raise NotImplementedError("Not implemented") |
340 |
340 |
341 return False |
341 return False |
342 |
342 |
343 def vcsAdd(self, name, isDir=False, noDialog=False): |
343 def vcsAdd(self, name, isDir=False, noDialog=False): |
344 """ |
344 """ |
345 Public method used to add a file/directory in the vcs. |
345 Public method used to add a file/directory in the vcs. |
346 |
346 |
347 @param name file/directory name to be added (string) |
347 @param name file/directory name to be added (string) |
348 @param isDir flag indicating name is a directory (boolean) |
348 @param isDir flag indicating name is a directory (boolean) |
349 @param noDialog flag indicating quiet operations (boolean) |
349 @param noDialog flag indicating quiet operations (boolean) |
350 @exception RuntimeError to indicate that this method must be |
350 @exception NotImplementedError to indicate that this method must be |
351 implemented by a subclass |
351 implemented by a subclass |
352 """ |
352 """ |
353 raise RuntimeError("Not implemented") |
353 raise NotImplementedError("Not implemented") |
354 |
354 |
355 def vcsAddBinary(self, name, isDir=False): |
355 def vcsAddBinary(self, name, isDir=False): |
356 """ |
356 """ |
357 Public method used to add a file/directory in binary mode in the vcs. |
357 Public method used to add a file/directory in binary mode in the vcs. |
358 |
358 |
359 @param name file/directory name to be added (string) |
359 @param name file/directory name to be added (string) |
360 @param isDir flag indicating name is a directory (boolean) |
360 @param isDir flag indicating name is a directory (boolean) |
361 @exception RuntimeError to indicate that this method must be |
361 @exception NotImplementedError to indicate that this method must be |
362 implemented by a subclass |
362 implemented by a subclass |
363 """ |
363 """ |
364 raise RuntimeError("Not implemented") |
364 raise NotImplementedError("Not implemented") |
365 |
365 |
366 def vcsAddTree(self, path): |
366 def vcsAddTree(self, path): |
367 """ |
367 """ |
368 Public method to add a directory tree rooted at path in the vcs. |
368 Public method to add a directory tree rooted at path in the vcs. |
369 |
369 |
370 @param path root directory of the tree to be added (string) |
370 @param path root directory of the tree to be added (string) |
371 @exception RuntimeError to indicate that this method must be |
371 @exception NotImplementedError to indicate that this method must be |
372 implemented by a subclass |
372 implemented by a subclass |
373 """ |
373 """ |
374 raise RuntimeError("Not implemented") |
374 raise NotImplementedError("Not implemented") |
375 |
375 |
376 def vcsRemove(self, name, project=False, noDialog=False): |
376 def vcsRemove(self, name, project=False, noDialog=False): |
377 """ |
377 """ |
378 Public method used to add a file/directory in the vcs. |
378 Public method used to add a file/directory in the vcs. |
379 |
379 |
380 @param name file/directory name to be removed (string) |
380 @param name file/directory name to be removed (string) |
381 @param project flag indicating deletion of a project tree (boolean) |
381 @param project flag indicating deletion of a project tree (boolean) |
382 @param noDialog flag indicating quiet operations |
382 @param noDialog flag indicating quiet operations |
383 @return flag indicating success (boolean) |
383 @return flag indicating success (boolean) |
384 @exception RuntimeError to indicate that this method must be |
384 @exception NotImplementedError to indicate that this method must be |
385 implemented by a subclass |
385 implemented by a subclass |
386 """ |
386 """ |
387 raise RuntimeError("Not implemented") |
387 raise NotImplementedError("Not implemented") |
388 |
388 |
389 return False |
389 return False |
390 |
390 |
391 def vcsMove(self, name, project, target=None, noDialog=False): |
391 def vcsMove(self, name, project, target=None, noDialog=False): |
392 """ |
392 """ |
410 with a log browser dialog. |
410 with a log browser dialog. |
411 |
411 |
412 @param name file/directory name to show the log for (string) |
412 @param name file/directory name to show the log for (string) |
413 @param isFile flag indicating log for a file is to be shown |
413 @param isFile flag indicating log for a file is to be shown |
414 (boolean) |
414 (boolean) |
415 @exception RuntimeError to indicate that this method must be |
415 @exception NotImplementedError to indicate that this method must be |
416 implemented by a subclass |
416 implemented by a subclass |
417 """ |
417 """ |
418 raise RuntimeError("Not implemented") |
418 raise NotImplementedError("Not implemented") |
419 |
419 |
420 def vcsDiff(self, name): |
420 def vcsDiff(self, name): |
421 """ |
421 """ |
422 Public method used to view the diff of a file/directory in the vcs. |
422 Public method used to view the diff of a file/directory in the vcs. |
423 |
423 |
424 @param name file/directory name to be diffed (string) |
424 @param name file/directory name to be diffed (string) |
425 @exception RuntimeError to indicate that this method must be |
425 @exception NotImplementedError to indicate that this method must be |
426 implemented by a subclass |
426 implemented by a subclass |
427 """ |
427 """ |
428 raise RuntimeError("Not implemented") |
428 raise NotImplementedError("Not implemented") |
429 |
429 |
430 def vcsSbsDiff(self, name, extended=False, revisions=None): |
430 def vcsSbsDiff(self, name, extended=False, revisions=None): |
431 """ |
431 """ |
432 Public method used to view the difference of a file to the Mercurial |
432 Public method used to view the difference of a file to the Mercurial |
433 repository side-by-side. |
433 repository side-by-side. |
436 @type str |
436 @type str |
437 @param extended flag indicating the extended variant |
437 @param extended flag indicating the extended variant |
438 @type bool |
438 @type bool |
439 @param revisions tuple of two revisions |
439 @param revisions tuple of two revisions |
440 @type tuple of two str |
440 @type tuple of two str |
441 @exception RuntimeError to indicate that this method must be |
441 @exception NotImplementedError to indicate that this method must be |
442 implemented by a subclass |
442 implemented by a subclass |
443 """ |
443 """ |
444 raise RuntimeError("Not implemented") |
444 raise NotImplementedError("Not implemented") |
445 |
445 |
446 def vcsStatus(self, name): |
446 def vcsStatus(self, name): |
447 """ |
447 """ |
448 Public method used to view the status of a file/directory in the vcs. |
448 Public method used to view the status of a file/directory in the vcs. |
449 |
449 |
450 @param name file/directory name to show the status for (string) |
450 @param name file/directory name to show the status for (string) |
451 @exception RuntimeError to indicate that this method must be |
451 @exception NotImplementedError to indicate that this method must be |
452 implemented by a subclass |
452 implemented by a subclass |
453 """ |
453 """ |
454 raise RuntimeError("Not implemented") |
454 raise NotImplementedError("Not implemented") |
455 |
455 |
456 def vcsTag(self, name): |
456 def vcsTag(self, name): |
457 """ |
457 """ |
458 Public method used to set the tag of a file/directory in the vcs. |
458 Public method used to set the tag of a file/directory in the vcs. |
459 |
459 |
460 @param name file/directory name to be tagged (string) |
460 @param name file/directory name to be tagged (string) |
461 @exception RuntimeError to indicate that this method must be |
461 @exception NotImplementedError to indicate that this method must be |
462 implemented by a subclass |
462 implemented by a subclass |
463 """ |
463 """ |
464 raise RuntimeError("Not implemented") |
464 raise NotImplementedError("Not implemented") |
465 |
465 |
466 def vcsRevert(self, name): |
466 def vcsRevert(self, name): |
467 """ |
467 """ |
468 Public method used to revert changes made to a file/directory. |
468 Public method used to revert changes made to a file/directory. |
469 |
469 |
470 @param name file/directory name to be reverted |
470 @param name file/directory name to be reverted |
471 @type str |
471 @type str |
472 @return flag indicating, that the update contained an add |
472 @return flag indicating, that the update contained an add |
473 or delete |
473 or delete |
474 @rtype bool |
474 @rtype bool |
475 @exception RuntimeError to indicate that this method must be |
475 @exception NotImplementedError to indicate that this method must be |
476 implemented by a subclass |
476 implemented by a subclass |
477 """ |
477 """ |
478 raise RuntimeError("Not implemented") |
478 raise NotImplementedError("Not implemented") |
479 |
479 |
480 return False |
480 return False |
481 |
481 |
482 def vcsForget(self, name): |
482 def vcsForget(self, name): |
483 """ |
483 """ |
484 Public method used to remove a file from the repository. |
484 Public method used to remove a file from the repository. |
485 |
485 |
486 @param name file/directory name to be removed |
486 @param name file/directory name to be removed |
487 @type str or list of str |
487 @type str or list of str |
488 @exception RuntimeError to indicate that this method must be |
488 @exception NotImplementedError to indicate that this method must be |
489 implemented by a subclass |
489 implemented by a subclass |
490 """ |
490 """ |
491 raise RuntimeError("Not implemented") |
491 raise NotImplementedError("Not implemented") |
492 |
492 |
493 def vcsSwitch(self, name): |
493 def vcsSwitch(self, name): |
494 """ |
494 """ |
495 Public method used to switch a directory to a different tag/branch. |
495 Public method used to switch a directory to a different tag/branch. |
496 |
496 |
497 @param name directory name to be switched (string) |
497 @param name directory name to be switched (string) |
498 @return flag indicating, that the switch contained an add |
498 @return flag indicating, that the switch contained an add |
499 or delete (boolean) |
499 or delete (boolean) |
500 @exception RuntimeError to indicate that this method must be |
500 @exception NotImplementedError to indicate that this method must be |
501 implemented by a subclass |
501 implemented by a subclass |
502 """ |
502 """ |
503 raise RuntimeError("Not implemented") |
503 raise NotImplementedError("Not implemented") |
504 |
504 |
505 return False |
505 return False |
506 |
506 |
507 def vcsMerge(self, name): |
507 def vcsMerge(self, name): |
508 """ |
508 """ |
509 Public method used to merge a tag/branch into the local project. |
509 Public method used to merge a tag/branch into the local project. |
510 |
510 |
511 @param name file/directory name to be merged (string) |
511 @param name file/directory name to be merged (string) |
512 @exception RuntimeError to indicate that this method must be |
512 @exception NotImplementedError to indicate that this method must be |
513 implemented by a subclass |
513 implemented by a subclass |
514 """ |
514 """ |
515 raise RuntimeError("Not implemented") |
515 raise NotImplementedError("Not implemented") |
516 |
516 |
517 def vcsRegisteredState(self, name): |
517 def vcsRegisteredState(self, name): |
518 """ |
518 """ |
519 Public method used to get the registered state of a file in the vcs. |
519 Public method used to get the registered state of a file in the vcs. |
520 |
520 |
521 @param name filename to check (string) |
521 @param name filename to check (string) |
522 @return a combination of canBeCommited and canBeAdded or |
522 @return a combination of canBeCommited and canBeAdded or |
523 0 in order to signal an error |
523 0 in order to signal an error |
524 @exception RuntimeError to indicate that this method must be |
524 @exception NotImplementedError to indicate that this method must be |
525 implemented by a subclass |
525 implemented by a subclass |
526 """ |
526 """ |
527 raise RuntimeError("Not implemented") |
527 raise NotImplementedError("Not implemented") |
528 |
528 |
529 return 0 |
529 return 0 |
530 |
530 |
531 def vcsAllRegisteredStates(self, names, dname): |
531 def vcsAllRegisteredStates(self, names, dname): |
532 """ |
532 """ |
535 |
535 |
536 @param names dictionary with all filenames to be checked as keys |
536 @param names dictionary with all filenames to be checked as keys |
537 @param dname directory to check in (string) |
537 @param dname directory to check in (string) |
538 @return the received dictionary completed with a combination of |
538 @return the received dictionary completed with a combination of |
539 canBeCommited and canBeAdded or None in order to signal an error |
539 canBeCommited and canBeAdded or None in order to signal an error |
540 @exception RuntimeError to indicate that this method must be |
540 @exception NotImplementedError to indicate that this method must be |
541 implemented by a subclass |
541 implemented by a subclass |
542 """ |
542 """ |
543 raise RuntimeError("Not implemented") |
543 raise NotImplementedError("Not implemented") |
544 |
544 |
545 return {} |
545 return {} |
546 |
546 |
547 def vcsName(self): |
547 def vcsName(self): |
548 """ |
548 """ |
549 Public method returning the name of the vcs. |
549 Public method returning the name of the vcs. |
550 |
550 |
551 @return name of the vcs (string) |
551 @return name of the vcs (string) |
552 @exception RuntimeError to indicate that this method must be |
552 @exception NotImplementedError to indicate that this method must be |
553 implemented by a subclass |
553 implemented by a subclass |
554 """ |
554 """ |
555 raise RuntimeError("Not implemented") |
555 raise NotImplementedError("Not implemented") |
556 |
556 |
557 return "" |
557 return "" |
558 |
558 |
559 def vcsCleanup(self, name): |
559 def vcsCleanup(self, name): |
560 """ |
560 """ |
561 Public method used to cleanup the local copy. |
561 Public method used to cleanup the local copy. |
562 |
562 |
563 @param name directory name to be cleaned up (string) |
563 @param name directory name to be cleaned up (string) |
564 @exception RuntimeError to indicate that this method must be |
564 @exception NotImplementedError to indicate that this method must be |
565 implemented by a subclass |
565 implemented by a subclass |
566 """ |
566 """ |
567 raise RuntimeError("Not implemented") |
567 raise NotImplementedError("Not implemented") |
568 |
568 |
569 def vcsCommandLine(self, name): |
569 def vcsCommandLine(self, name): |
570 """ |
570 """ |
571 Public method used to execute arbitrary vcs commands. |
571 Public method used to execute arbitrary vcs commands. |
572 |
572 |
573 @param name directory name of the working directory (string) |
573 @param name directory name of the working directory (string) |
574 @exception RuntimeError to indicate that this method must be |
574 @exception NotImplementedError to indicate that this method must be |
575 implemented by a subclass |
575 implemented by a subclass |
576 """ |
576 """ |
577 raise RuntimeError("Not implemented") |
577 raise NotImplementedError("Not implemented") |
578 |
578 |
579 def vcsOptionsDialog(self, project, archive, editable=False, parent=None): |
579 def vcsOptionsDialog(self, project, archive, editable=False, parent=None): |
580 """ |
580 """ |
581 Public method to get a dialog to enter repository info. |
581 Public method to get a dialog to enter repository info. |
582 |
582 |
583 @param project reference to the project object |
583 @param project reference to the project object |
584 @param archive name of the project in the repository (string) |
584 @param archive name of the project in the repository (string) |
585 @param editable flag indicating that the project name is editable |
585 @param editable flag indicating that the project name is editable |
586 (boolean) |
586 (boolean) |
587 @param parent parent widget (QWidget) |
587 @param parent parent widget (QWidget) |
588 @exception RuntimeError to indicate that this method must be |
588 @exception NotImplementedError to indicate that this method must be |
589 implemented by a subclass |
589 implemented by a subclass |
590 """ |
590 """ |
591 raise RuntimeError("Not implemented") |
591 raise NotImplementedError("Not implemented") |
592 |
592 |
593 def vcsNewProjectOptionsDialog(self, parent=None): |
593 def vcsNewProjectOptionsDialog(self, parent=None): |
594 """ |
594 """ |
595 Public method to get a dialog to enter repository info for getting a |
595 Public method to get a dialog to enter repository info for getting a |
596 new project. |
596 new project. |
597 |
597 |
598 @param parent parent widget (QWidget) |
598 @param parent parent widget (QWidget) |
599 @exception RuntimeError to indicate that this method must be |
599 @exception NotImplementedError to indicate that this method must be |
600 implemented by a subclass |
600 implemented by a subclass |
601 """ |
601 """ |
602 raise RuntimeError("Not implemented") |
602 raise NotImplementedError("Not implemented") |
603 |
603 |
604 def vcsRepositoryInfos(self, ppath): |
604 def vcsRepositoryInfos(self, ppath): |
605 """ |
605 """ |
606 Public method to retrieve information about the repository. |
606 Public method to retrieve information about the repository. |
607 |
607 |
608 @param ppath local path to get the repository infos (string) |
608 @param ppath local path to get the repository infos (string) |
609 @return string with ready formated info for display (string) |
609 @return string with ready formated info for display (string) |
610 @exception RuntimeError to indicate that this method must be |
610 @exception NotImplementedError to indicate that this method must be |
611 implemented by a subclass |
611 implemented by a subclass |
612 """ |
612 """ |
613 raise RuntimeError("Not implemented") |
613 raise NotImplementedError("Not implemented") |
614 |
614 |
615 return "" |
615 return "" |
616 |
616 |
617 def vcsGetProjectBrowserHelper(self, browser, project, isTranslationsBrowser=False): |
617 def vcsGetProjectBrowserHelper(self, browser, project, isTranslationsBrowser=False): |
618 """ |
618 """ |
622 @param browser reference to the project browser object |
622 @param browser reference to the project browser object |
623 @param project reference to the project object |
623 @param project reference to the project object |
624 @param isTranslationsBrowser flag indicating, the helper is requested |
624 @param isTranslationsBrowser flag indicating, the helper is requested |
625 for the translations browser (this needs some special treatment) |
625 for the translations browser (this needs some special treatment) |
626 @return the project browser helper object |
626 @return the project browser helper object |
627 @exception RuntimeError to indicate that this method must be |
627 @exception NotImplementedError to indicate that this method must be |
628 implemented by a subclass |
628 implemented by a subclass |
629 """ |
629 """ |
630 raise RuntimeError("Not implemented") |
630 raise NotImplementedError("Not implemented") |
631 |
631 |
632 return None # __IGNORE_WARNING_M831__ |
632 return None # __IGNORE_WARNING_M831__ |
633 |
633 |
634 def vcsGetProjectHelper(self, project): |
634 def vcsGetProjectHelper(self, project): |
635 """ |
635 """ |
636 Public method to instanciate a helper object for the project. |
636 Public method to instanciate a helper object for the project. |
637 |
637 |
638 @param project reference to the project object |
638 @param project reference to the project object |
639 @return the project helper object |
639 @return the project helper object |
640 @exception RuntimeError to indicate that this method must be |
640 @exception NotImplementedError to indicate that this method must be |
641 implemented by a subclass |
641 implemented by a subclass |
642 """ |
642 """ |
643 raise RuntimeError("Not implemented") |
643 raise NotImplementedError("Not implemented") |
644 |
644 |
645 return None # __IGNORE_WARNING_M831__ |
645 return None # __IGNORE_WARNING_M831__ |
646 |
646 |
647 ##################################################################### |
647 ##################################################################### |
648 ## methods above need to be implemented by a subclass |
648 ## methods above need to be implemented by a subclass |