ccCommandLineParser.h 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127
  1. #pragma once
  2. //##########################################################################
  3. //# #
  4. //# CLOUDCOMPARE #
  5. //# #
  6. //# This program is free software; you can redistribute it and/or modify #
  7. //# it under the terms of the GNU General Public License as published by #
  8. //# the Free Software Foundation; version 2 of the License. #
  9. //# #
  10. //# This program is distributed in the hope that it will be useful, #
  11. //# but WITHOUT ANY WARRANTY; without even the implied warranty of #
  12. //# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #
  13. //# GNU General Public License for more details. #
  14. //# #
  15. //# COPYRIGHT: CloudCompare project #
  16. //# #
  17. //##########################################################################
  18. //interface
  19. #include "ccCommandLineInterface.h"
  20. //Local
  21. #include "ccPluginManager.h"
  22. class ccProgressDialog;
  23. class QDialog;
  24. //! Command line parser
  25. class ccCommandLineParser : public ccCommandLineInterface
  26. {
  27. public:
  28. //! Parses the input command
  29. static int Parse(const QStringList& arguments, ccPluginInterfaceList& plugins);
  30. //! Destructor
  31. ~ccCommandLineParser() override;
  32. //inherited from ccCommandLineInterface
  33. QString getExportFilename( const CLEntityDesc& entityDesc,
  34. QString extension = QString(),
  35. QString suffix = QString(),
  36. QString* baseOutputFilename = nullptr,
  37. bool forceNoTimestamp = false) const override;
  38. QString exportEntity( CLEntityDesc& entityDesc,
  39. const QString& suffix = QString(),
  40. QString* baseOutputFilename = nullptr,
  41. ccCommandLineInterface::ExportOptions options = ExportOption::NoOptions) override;
  42. void removeClouds(bool onlyLast = false) override;
  43. void removeMeshes(bool onlyLast = false) override;
  44. bool selectClouds(const SelectEntitiesOptions& options) override;
  45. bool selectMeshes(const SelectEntitiesOptions& options) override;
  46. QStringList& arguments() override { return m_arguments; }
  47. const QStringList& arguments() const override { return m_arguments; }
  48. bool registerCommand(Command::Shared command) override;
  49. QDialog* widgetParent() override { return m_parentWidget; }
  50. void printVerbose(const QString& message) const override;
  51. void print(const QString& message) const override;
  52. void printHigh(const QString& message) const override;
  53. void printDebug(const QString& message) const override;
  54. void warning(const QString& message) const override;
  55. void warningDebug(const QString& message) const override;
  56. bool error(const QString& message) const override; //must always return false!
  57. bool errorDebug(const QString& message) const override; //must always return false!
  58. bool saveClouds(QString suffix = QString(), bool allAtOnce = false, const QString* allAtOnceFileName = nullptr) override;
  59. bool saveMeshes(QString suffix = QString(), bool allAtOnce = false, const QString* allAtOnceFileName = nullptr) override;
  60. bool importFile(QString filename, const GlobalShiftOptions& globalShiftOptions, FileIOFilter::Shared filter = FileIOFilter::Shared(nullptr)) override;
  61. void setGlobalShiftOptions(const GlobalShiftOptions& globalShiftOptions) override;
  62. void updateInteralGlobalShift(const GlobalShiftOptions& globalShiftOptions) override;
  63. QString cloudExportFormat() const override { return m_cloudExportFormat; }
  64. QString cloudExportExt() const override { return m_cloudExportExt; }
  65. QString meshExportFormat() const override { return m_meshExportFormat; }
  66. QString meshExportExt() const override { return m_meshExportExt; }
  67. QString hierarchyExportFormat() const override { return m_hierarchyExportFormat; }
  68. QString hierarchyExportExt() const override { return m_hierarchyExportExt; }
  69. void setCloudExportFormat(QString format, QString ext) override { m_cloudExportFormat = format; m_cloudExportExt = ext; }
  70. void setMeshExportFormat(QString format, QString ext) override { m_meshExportFormat = format; m_meshExportExt = ext; }
  71. void setHierarchyExportFormat(QString format, QString ext) override { m_hierarchyExportFormat = format; m_hierarchyExportExt = ext; }
  72. protected: //other methods
  73. //! Default constructor
  74. /** Shouldn't be called by user.
  75. **/
  76. ccCommandLineParser();
  77. void registerBuiltInCommands();
  78. void cleanup();
  79. //! Parses the command line
  80. int start(QDialog* parent = nullptr);
  81. private: //members
  82. //! Current cloud(s) export format (can be modified with the 'COMMAND_CLOUD_EXPORT_FORMAT' option)
  83. QString m_cloudExportFormat;
  84. //! Current cloud(s) export extension (warning: can be anything)
  85. QString m_cloudExportExt;
  86. //! Current mesh(es) export format (can be modified with the 'COMMAND_MESH_EXPORT_FORMAT' option)
  87. QString m_meshExportFormat;
  88. //! Current mesh(es) export extension (warning: can be anything)
  89. QString m_meshExportExt;
  90. //! Current hierarchy(ies) export format (can be modified with the 'COMMAND_HIERARCHY_EXPORT_FORMAT' option)
  91. QString m_hierarchyExportFormat;
  92. //! Current hierarchy(ies) export extension (warning: can be anything)
  93. QString m_hierarchyExportExt;
  94. //! Mesh filename
  95. QString m_meshFilename;
  96. //! Arguments
  97. QStringList m_arguments;
  98. //! Registered commands
  99. QMap< QString, Command::Shared > m_commands;
  100. //! Oprhan entities
  101. ccHObject m_orphans;
  102. //! Shared progress dialog
  103. ccProgressDialog* m_progressDialog;
  104. //! Widget parent
  105. QDialog* m_parentWidget;
  106. };