gui: add double-click to rename agent nodes in tree view
This commit is contained in:
parent
74d346418d
commit
363b2e95ed
16
gui/main.qml
16
gui/main.qml
|
|
@ -155,7 +155,7 @@ ApplicationWindow {
|
||||||
|
|
||||||
function startRename(index) {
|
function startRename(index) {
|
||||||
var item = sessionTreeModel.get(index)
|
var item = sessionTreeModel.get(index)
|
||||||
if (item.type === "session") {
|
if (item.type === "session" || item.type === "agent") {
|
||||||
renamingIndex = index
|
renamingIndex = index
|
||||||
renamingText = item.displayName
|
renamingText = item.displayName
|
||||||
}
|
}
|
||||||
|
|
@ -165,9 +165,15 @@ ApplicationWindow {
|
||||||
if (renamingIndex < 0) return
|
if (renamingIndex < 0) return
|
||||||
var item = sessionTreeModel.get(renamingIndex)
|
var item = sessionTreeModel.get(renamingIndex)
|
||||||
var newName = renamingText.trim()
|
var newName = renamingText.trim()
|
||||||
if (newName !== "" && newName !== item.id) {
|
if (newName !== "" && newName !== item.displayName) {
|
||||||
if (ollie.renameSession(item.id, newName)) {
|
if (item.type === "session") {
|
||||||
sessionTreeModel.set(renamingIndex, { id: newName, displayName: newName })
|
if (ollie.renameSession(item.id, newName)) {
|
||||||
|
sessionTreeModel.set(renamingIndex, { id: newName, displayName: newName })
|
||||||
|
}
|
||||||
|
} else if (item.type === "agent") {
|
||||||
|
if (ollie.renameAgent(item.parentId, item.agentId, newName)) {
|
||||||
|
sessionTreeModel.set(renamingIndex, { agentId: newName, displayName: newName })
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
renamingIndex = -1
|
renamingIndex = -1
|
||||||
|
|
@ -556,7 +562,7 @@ ApplicationWindow {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
onDoubleClicked: {
|
onDoubleClicked: {
|
||||||
if (type === "session") {
|
if (type === "session" || type === "agent") {
|
||||||
startRename(parent.modelIndex)
|
startRename(parent.modelIndex)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -322,6 +322,38 @@ bool Ollie9pClient::renameSession(const QString &sessionId, const QString &newNa
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool Ollie9pClient::renameAgent(const QString &sessionId, const QString &agentId, const QString &newName)
|
||||||
|
{
|
||||||
|
if (sessionId.isEmpty() || agentId.isEmpty() || newName.isEmpty()) return false;
|
||||||
|
|
||||||
|
QString bin = ollie9pBin();
|
||||||
|
if (bin.isEmpty()) {
|
||||||
|
qDebug() << "renameAgent: ollie-9p not found, cannot rename";
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
QProcess proc;
|
||||||
|
proc.setProgram(bin);
|
||||||
|
proc.setArguments({"-a", serverAddr(), "mv",
|
||||||
|
"session/" + sessionId + "/agent/" + agentId,
|
||||||
|
"session/" + sessionId + "/agent/" + newName});
|
||||||
|
proc.start();
|
||||||
|
proc.waitForFinished(5000);
|
||||||
|
|
||||||
|
if (proc.exitCode() != 0) {
|
||||||
|
qDebug() << "renameAgent failed:" << QString::fromUtf8(proc.readAllStandardError()).trimmed();
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (m_activeSessionId == sessionId && m_agentId == agentId) {
|
||||||
|
m_agentId = newName;
|
||||||
|
emit activeAgentIdChanged();
|
||||||
|
}
|
||||||
|
|
||||||
|
refreshSessions();
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
// --- Root data loading (lazy) ---
|
// --- Root data loading (lazy) ---
|
||||||
|
|
||||||
void Ollie9pClient::ensureRootDataLoaded()
|
void Ollie9pClient::ensureRootDataLoaded()
|
||||||
|
|
|
||||||
|
|
@ -67,6 +67,7 @@ public:
|
||||||
Q_INVOKABLE QStringList getAvailableModels(const QString &backend) const;
|
Q_INVOKABLE QStringList getAvailableModels(const QString &backend) const;
|
||||||
Q_INVOKABLE bool createSession(const QString &cwd, const QString &name, const QString &backend, const QString &model, const QString &agent, const QString &remote);
|
Q_INVOKABLE bool createSession(const QString &cwd, const QString &name, const QString &backend, const QString &model, const QString &agent, const QString &remote);
|
||||||
Q_INVOKABLE bool renameSession(const QString &sessionId, const QString &newName);
|
Q_INVOKABLE bool renameSession(const QString &sessionId, const QString &newName);
|
||||||
|
Q_INVOKABLE bool renameAgent(const QString &sessionId, const QString &agentId, const QString &newName);
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
void sessionsChanged();
|
void sessionsChanged();
|
||||||
|
|
|
||||||
Reference in New Issue