From f4f630e7d08b1a1dfd3b2844a78ad451d608657c Mon Sep 17 00:00:00 2001
From: Campbell Barton <ideasman42@gmail.com>
Date: Wed, 9 Apr 2014 08:30:54 +1000
Subject: [PATCH] Menu item to update the Blender project file

---
 .../externaltools/qtc_project_update.py       | 35 +++++++++++++++++++
 .../externaltools/qtc_project_update.xml      | 10 ++++++
 2 files changed, 45 insertions(+)
 create mode 100755 utils_ide/qtcreator/externaltools/qtc_project_update.py
 create mode 100644 utils_ide/qtcreator/externaltools/qtc_project_update.xml

diff --git a/utils_ide/qtcreator/externaltools/qtc_project_update.py b/utils_ide/qtcreator/externaltools/qtc_project_update.py
new file mode 100755
index 0000000..7ea5b8a
--- /dev/null
+++ b/utils_ide/qtcreator/externaltools/qtc_project_update.py
@@ -0,0 +1,35 @@
+#!/usr/bin/env python3
+
+"""
+This is just a wrapper to run Blender's QtCreator project file generator,
+knowing only the CMake build path.
+
+ qtc_project_update.py <project_path>
+"""
+
+import sys
+import os
+
+PROJECT_DIR = sys.argv[-1]
+
+def cmake_find_source(path):
+    import re
+    match = re.compile(r"^CMAKE_HOME_DIRECTORY\b")
+    cache = os.path.join(path, "CMakeCache.txt")
+    with open(cache, 'r', encoding='utf-8') as f:
+        for l in f:
+            if re.match(match, l):
+                return l[l.index("=") + 1:].strip()
+    return ""
+
+SOURCE_DIR = cmake_find_source(PROJECT_DIR)
+
+cmd = (
+    "python",
+    os.path.join(SOURCE_DIR, "build_files/cmake/cmake_qtcreator_project.py"),
+    PROJECT_DIR,
+    )
+
+print(cmd)
+os.system(" ".join(cmd))
+
diff --git a/utils_ide/qtcreator/externaltools/qtc_project_update.xml b/utils_ide/qtcreator/externaltools/qtc_project_update.xml
new file mode 100644
index 0000000..7dcbf7f
--- /dev/null
+++ b/utils_ide/qtcreator/externaltools/qtc_project_update.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<externaltool id="qtc_project_update">
+    <description>Regenerate the project file</description>
+    <displayname>Project File Regenerate</displayname>
+    <category>Project</category>
+    <executable output="showinpane" error="showinpane" modifiesdocument="no">
+        <path>qtc_project_update.py</path>
+        <arguments>%{CurrentProject:BuildPath}</arguments>
+    </executable>
+</externaltool>
-- 
GitLab