ExtensionCorba/ProjectInterfacesBrowser.py

changeset 37
79e453012ab9
parent 33
782792ab98fb
child 38
aefce8f68439
equal deleted inserted replaced
36:5244b7fecc4d 37:79e453012ab9
15 from PyQt6.QtCore import QProcess, QThread, pyqtSignal 15 from PyQt6.QtCore import QProcess, QThread, pyqtSignal
16 from PyQt6.QtWidgets import QApplication, QDialog, QMenu 16 from PyQt6.QtWidgets import QApplication, QDialog, QMenu
17 17
18 from eric7 import Preferences 18 from eric7 import Preferences
19 from eric7.EricGui import EricPixmapCache 19 from eric7.EricGui import EricPixmapCache
20 from eric7.EricWidgets import EricMessageBox 20 from eric7.EricWidgets import EricMessageBox, EricPathPickerDialog
21 from eric7.EricWidgets.EricApplication import ericApp 21 from eric7.EricWidgets.EricApplication import ericApp
22 from eric7.EricWidgets.EricPathPickerDialog import EricPathPickerModes
22 from eric7.EricWidgets.EricProgressDialog import EricProgressDialog 23 from eric7.EricWidgets.EricProgressDialog import EricProgressDialog
23 from eric7.Project.FileCategoryRepositoryItem import FileCategoryRepositoryItem 24 from eric7.Project.FileCategoryRepositoryItem import FileCategoryRepositoryItem
24 from eric7.Project.ProjectBaseBrowser import ProjectBaseBrowser 25 from eric7.Project.ProjectBaseBrowser import ProjectBaseBrowser
25 from eric7.Project.ProjectBrowserModel import ( 26 from eric7.Project.ProjectBrowserModel import (
26 ProjectBrowserDirectoryItem, 27 ProjectBrowserDirectoryItem,
217 self.menuActions.append(act) 218 self.menuActions.append(act)
218 act = self.sourceMenu.addAction(self.tr("Delete"), self.__deleteFile) 219 act = self.sourceMenu.addAction(self.tr("Delete"), self.__deleteFile)
219 self.menuActions.append(act) 220 self.menuActions.append(act)
220 self.sourceMenu.addSeparator() 221 self.sourceMenu.addSeparator()
221 self.sourceMenu.addAction( 222 self.sourceMenu.addAction(
223 self.tr("New interface file..."), self.__addNewInterfaceFile
224 )
225 self.sourceMenu.addSeparator()
226 self.sourceMenu.addAction(
222 self.tr("Add interfaces..."), self.__addInterfaceFiles 227 self.tr("Add interfaces..."), self.__addInterfaceFiles
223 ) 228 )
224 self.sourceMenu.addAction( 229 self.sourceMenu.addAction(
225 self.tr("Add interfaces directory..."), self.__addInterfacesDirectory 230 self.tr("Add interfaces directory..."), self.__addInterfacesDirectory
226 ) 231 )
250 self.menu.addAction( 255 self.menu.addAction(
251 self.tr("Configure IDL compiler"), self.__configureIdlCompiler 256 self.tr("Configure IDL compiler"), self.__configureIdlCompiler
252 ) 257 )
253 self.menu.addSeparator() 258 self.menu.addSeparator()
254 self.menu.addAction(self.tr("Open"), self._openItem) 259 self.menu.addAction(self.tr("Open"), self._openItem)
260 self.menu.addSeparator()
261 self.menu.addAction(
262 self.tr("New interface file..."), self.__addNewInterfaceFile
263 )
255 self.menu.addSeparator() 264 self.menu.addSeparator()
256 self.menu.addAction(self.tr("Add interfaces..."), self.__addInterfaceFiles) 265 self.menu.addAction(self.tr("Add interfaces..."), self.__addInterfaceFiles)
257 self.menu.addAction( 266 self.menu.addAction(
258 self.tr("Add interfaces directory..."), self.__addInterfacesDirectory 267 self.tr("Add interfaces directory..."), self.__addInterfacesDirectory
259 ) 268 )
273 self.backMenu.addSeparator() 282 self.backMenu.addSeparator()
274 self.backMenu.addAction( 283 self.backMenu.addAction(
275 self.tr("Configure IDL compiler"), self.__configureIdlCompiler 284 self.tr("Configure IDL compiler"), self.__configureIdlCompiler
276 ) 285 )
277 self.backMenu.addSeparator() 286 self.backMenu.addSeparator()
287 self.backMenu.addAction(
288 self.tr("New interface file..."), self.__addNewInterfaceFile
289 )
290 self.backMenu.addSeparator()
278 self.backMenu.addAction( 291 self.backMenu.addAction(
279 self.tr("Add interfaces..."), lambda: self.project.addFiles("INTERFACES") 292 self.tr("Add interfaces..."), lambda: self.project.addFiles("INTERFACES")
280 ) 293 )
281 self.backMenu.addAction( 294 self.backMenu.addAction(
282 self.tr("Add interfaces directory..."), 295 self.tr("Add interfaces directory..."),
332 self.dirMenu.addSeparator() 345 self.dirMenu.addSeparator()
333 act = self.dirMenu.addAction(self.tr("Remove from project"), self._removeFile) 346 act = self.dirMenu.addAction(self.tr("Remove from project"), self._removeFile)
334 self.dirMenuActions.append(act) 347 self.dirMenuActions.append(act)
335 act = self.dirMenu.addAction(self.tr("Delete"), self._deleteDirectory) 348 act = self.dirMenu.addAction(self.tr("Delete"), self._deleteDirectory)
336 self.dirMenuActions.append(act) 349 self.dirMenuActions.append(act)
350 self.dirMenu.addSeparator()
351 self.dirMenu.addAction(
352 self.tr("New interface file..."), self.__addNewInterfaceFile
353 )
337 self.dirMenu.addSeparator() 354 self.dirMenu.addSeparator()
338 self.dirMenu.addAction(self.tr("Add interfaces..."), self.__addInterfaceFiles) 355 self.dirMenu.addAction(self.tr("Add interfaces..."), self.__addInterfaceFiles)
339 self.dirMenu.addAction( 356 self.dirMenu.addAction(
340 self.tr("Add interfaces directory..."), self.__addInterfacesDirectory 357 self.tr("Add interfaces directory..."), self.__addInterfacesDirectory
341 ) 358 )
516 elif isinstance(itm, BrowserClassAttributeItem): 533 elif isinstance(itm, BrowserClassAttributeItem):
517 self.sourceFile[str, int].emit( 534 self.sourceFile[str, int].emit(
518 itm.fileName(), itm.attributeObject().lineno 535 itm.fileName(), itm.attributeObject().lineno
519 ) 536 )
520 537
538 def __addNewInterfaceFile(self):
539 """
540 Private method to add a new interface file to the project.
541 """
542 itm = self.model().item(self.currentIndex())
543 if isinstance(
544 itm, (ProjectBrowserFileItem, BrowserClassItem, BrowserMethodItem)
545 ):
546 dn = os.path.dirname(itm.fileName())
547 elif isinstance(
548 itm, (ProjectBrowserSimpleDirectoryItem, ProjectBrowserDirectoryItem)
549 ):
550 dn = itm.dirName()
551 else:
552 dn = ""
553
554 filename, ok = EricPathPickerDialog.getStrPath(
555 self,
556 self.tr("New interface file"),
557 self.tr("Enter the path of the new interface file:"),
558 mode=EricPathPickerModes.SAVE_FILE_ENSURE_EXTENSION_MODE,
559 strPath=dn,
560 defaultDirectory=dn,
561 filters=self.project.getFileCategoryFilters(
562 categories=["INTERFACES"], withAll=False
563 ),
564 )
565 if ok:
566 if not os.path.splitext(filename)[1]:
567 filename = filename + ".idl"
568
569 if os.path.exists(filename):
570 EricMessageBox.critical(
571 self,
572 self.tr("New interface file"),
573 self.tr(
574 "<p>The file <b>{0}</b> already exists. The action will be"
575 " aborted.</p>"
576 ).format(filename),
577 )
578 return
579
580 try:
581 with open(filename, "w") as f:
582 f.write("// {0}\n".format(self.project.getRelativePath(filename)))
583 except OSError as err:
584 EricMessageBox.critical(
585 self,
586 self.tr("New interface file"),
587 self.tr(
588 "<p>The file <b>{0}</b> could not be created. Aborting...</p>"
589 "<p>Reason: {1}</p>"
590 ).format(filename, str(err)),
591 )
592 return
593
594 self.project.appendFile(filename)
595 self.sourceFile[str].emit(filename)
596
521 def __addInterfaceFiles(self): 597 def __addInterfaceFiles(self):
522 """ 598 """
523 Private method to add interface files to the project. 599 Private method to add interface files to the project.
524 """ 600 """
525 itm = self.model().item(self.currentIndex()) 601 itm = self.model().item(self.currentIndex())

eric ide

mercurial