From f33d7bbec8c98a945367d04c2563fd64049bd49b Mon Sep 17 00:00:00 2001 From: david-ajax Date: Wed, 30 Apr 2025 23:40:28 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BD=BF=E7=94=A8=20UV=20=E5=8C=85=E7=AE=A1?= =?UTF-8?q?=E7=90=86=E5=99=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitigore | 2 +- auxiliary/aux.py | 52 ------ auxiliary/index.html | 28 ---- auxiliary/script.js | 152 ------------------ comet/.python-version | 1 + comet/agent_logs.log | 0 comet/main.py | 6 + comet/pyproject.toml | 7 + lib/__init__.py | 0 lib/__pycache__/__init__.cpython-313.pyc | Bin 0 -> 151 bytes lib/agency/__init__.py | 4 + .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 289 bytes .../__pycache__/__init__.cpython-313.pyc | Bin 0 -> 289 bytes lib/agency/__pycache__/main.cpython-312.pyc | Bin 0 -> 5528 bytes lib/agency/__pycache__/main.cpython-313.pyc | Bin 0 -> 5598 bytes lib/{agency.py => agency/main.py} | 0 {pulsar => lib}/vgl | 0 moon/.python-version | 1 + moon/main.py | 6 + moon/pyproject.toml | 7 + pulsar/.python-version | 1 + pulsar/agent_logs.log | 0 .../__pycache__/marker.cpython-312.pyc | Bin 2027 -> 2184 bytes .../__pycache__/marker.cpython-313.pyc | Bin 0 -> 2041 bytes pulsar/components/marker.py | 7 +- pulsar/main.py | 5 +- pulsar/pyproject.toml | 7 + vgl/__pycache__/__init__.cpython-313.pyc | Bin 0 -> 452 bytes .../basic_elements.cpython-312.pyc | Bin 7328 -> 7333 bytes .../basic_elements.cpython-313.pyc | Bin 0 -> 7397 bytes vgl/__pycache__/main.cpython-312.pyc | Bin 16387 -> 16483 bytes vgl/__pycache__/main.cpython-313.pyc | Bin 0 -> 16877 bytes vgl/basic_elements.py | 2 +- 33 files changed, 49 insertions(+), 239 deletions(-) delete mode 100644 auxiliary/aux.py delete mode 100644 auxiliary/index.html delete mode 100644 auxiliary/script.js create mode 100644 comet/.python-version create mode 100644 comet/agent_logs.log create mode 100644 comet/main.py create mode 100644 comet/pyproject.toml create mode 100644 lib/__init__.py create mode 100644 lib/__pycache__/__init__.cpython-313.pyc create mode 100644 lib/agency/__init__.py create mode 100644 lib/agency/__pycache__/__init__.cpython-312.pyc create mode 100644 lib/agency/__pycache__/__init__.cpython-313.pyc create mode 100644 lib/agency/__pycache__/main.cpython-312.pyc create mode 100644 lib/agency/__pycache__/main.cpython-313.pyc rename lib/{agency.py => agency/main.py} (100%) rename {pulsar => lib}/vgl (100%) create mode 100644 moon/.python-version create mode 100644 moon/main.py create mode 100644 moon/pyproject.toml create mode 100644 pulsar/.python-version create mode 100644 pulsar/agent_logs.log create mode 100644 pulsar/components/__pycache__/marker.cpython-313.pyc create mode 100644 pulsar/pyproject.toml create mode 100644 vgl/__pycache__/__init__.cpython-313.pyc create mode 100644 vgl/__pycache__/basic_elements.cpython-313.pyc create mode 100644 vgl/__pycache__/main.cpython-313.pyc diff --git a/.gitigore b/.gitigore index a4be861..03326db 100644 --- a/.gitigore +++ b/.gitigore @@ -12,7 +12,7 @@ venv.bak/ *.egg-info/ dist/ build/ - +.tmp # IDEs and editors .vscode/ .idea/ diff --git a/auxiliary/aux.py b/auxiliary/aux.py deleted file mode 100644 index a1b3329..0000000 --- a/auxiliary/aux.py +++ /dev/null @@ -1,52 +0,0 @@ -import pygame - - -def selector(): - pygame.init() - try: - width = int(input("Frame Width: ")) - height = int(input("Frame Height: ")) - except: - width = 800 - height = 600 - screen = pygame.display.set_mode((width, height)) - pygame.display.set_caption("UI Design Auxiliary Tool") - selecting = False - start_pos = None - end_pos = None - running = True - screen.fill((0,0,0)) - while running: - screen.fill((0,0,0)) - for event in pygame.event.get(): - if event.type == pygame.QUIT: - running = False - elif event.type == pygame.MOUSEBUTTONDOWN: - if event.button == 1: # 左键 - selecting = True - start_pos = event.pos - elif event.type == pygame.MOUSEMOTION: - if selecting: - end_pos = event.pos - elif event.type == pygame.MOUSEBUTTONUP: - if event.button == 1: - selecting = False - if start_pos and end_pos: - rect = pygame.Rect( - start_pos, - (end_pos[0] - start_pos[0], end_pos[1] - start_pos[1]), - ) - - if selecting and start_pos and end_pos: - rect = pygame.Rect( - start_pos, (end_pos[0] - start_pos[0], end_pos[1] - start_pos[1]) - ) - pygame.draw.rect(screen, (255, 0, 0), rect, 2) # 绘制选区矩形 - - pygame.display.flip() - - pygame.quit() - - -if __name__ == "__main__": - main() diff --git a/auxiliary/index.html b/auxiliary/index.html deleted file mode 100644 index 9e4dbd4..0000000 --- a/auxiliary/index.html +++ /dev/null @@ -1,28 +0,0 @@ - - - - 图形参数生成器 - - -

图形参数生成器

- -

- -

- -

- -
- - - - \ No newline at end of file diff --git a/auxiliary/script.js b/auxiliary/script.js deleted file mode 100644 index dd95c68..0000000 --- a/auxiliary/script.js +++ /dev/null @@ -1,152 +0,0 @@ -function generateShapeDict(shape, params) { - if (shape === 'rect') { - return { - method: 'rect', - pos: params.pos || [0, 0], - size: params.size || [1, 1], - color: params.color || [255, 255, 255], - width: params.width || 0 - }; - } else if (shape === 'line') { - return { - method: 'line', - start_pos: params.start_pos || [0, 0], - end_pos: params.end_pos || [1, 1], - color: params.color || [255, 255, 255] - }; - } else if (shape === 'circle') { - return { - method: 'circle', - center: params.center || [0, 0], - radius: params.radius || 1, - color: params.color || [255, 255, 255] - }; - } else if (shape === 'ellipse') { - return { - method: 'ellipse', - pos: params.pos || [0, 0], - size: params.size || [1, 1], - color: params.color || [255, 255, 255] - }; - } else if (shape === 'polygon') { - return { - method: 'polygon', - pointlist: params.pointlist || [], - color: params.color || [255, 255, 255] - }; - } else if (shape === 'arc') { - return { - method: 'arc', - pos: params.pos || [0, 0], - size: params.size || [1, 1], - color: params.color || [255, 255, 255], - start_angle: params.start_angle || 0, - stop_angle: params.stop_angle || 3.14 - }; - } else if (shape === 'point') { - return { - method: 'point', - pos: params.pos || [0, 0], - color: params.color || [255, 255, 255] - }; - } else if (shape === 'lines') { - return { - method: 'lines', - pointlist: params.pointlist || [], - color: params.color || [255, 255, 255] - }; - } else { - throw new Error("Unsupported shape type"); - } -} - -document.addEventListener('DOMContentLoaded', function() { - const shapeSelect = document.getElementById('shape'); - const paramsDiv = document.getElementById('params'); - const generateButton = document.getElementById('generate'); - const resultDiv = document.getElementById('result'); - - function createInput(label, id, type = 'text') { - const input = document.createElement('input'); - input.type = type; - input.id = id; - const labelElement = document.createElement('label'); - labelElement.textContent = label + ': '; - labelElement.setAttribute('for', id); - paramsDiv.appendChild(labelElement); - paramsDiv.appendChild(input); - paramsDiv.appendChild(document.createElement('br')); - return input; - } - - function updateParamsInputs() { - paramsDiv.innerHTML = ''; - const shape = shapeSelect.value; - - if (shape === 'rect') { - createInput('矩形位置 (x y)', 'pos'); - createInput('矩形大小 (width height)', 'size'); - createInput('矩形颜色 (R G B)', 'color'); - createInput('矩形边框宽度', 'width', 'number'); - } else if (shape === 'line') { - createInput('起始位置 (x y)', 'start_pos'); - createInput('结束位置 (x y)', 'end_pos'); - createInput('线条颜色 (R G B)', 'color'); - } else if (shape === 'circle') { - createInput('圆心位置 (x y)', 'center'); - createInput('圆的半径', 'radius', 'number'); - createInput('圆的颜色 (R G B)', 'color'); - } else if (shape === 'ellipse') { - createInput('椭圆位置 (x y)', 'pos'); - createInput('椭圆大小 (width height)', 'size'); - createInput('椭圆颜色 (R G B)', 'color'); - } else if (shape === 'polygon') { - createInput('多边形的点 (x1 y1 x2 y2 ...)', 'pointlist'); - createInput('多边形颜色 (R G B)', 'color'); - } else if (shape === 'arc') { - createInput('弧的位置 (x y)', 'pos'); - createInput('弧的大小 (width height)', 'size'); - createInput('弧的颜色 (R G B)', 'color'); - createInput('弧的起始角度 (弧度制)', 'start_angle', 'number'); - createInput('弧的结束角度 (弧度制)', 'stop_angle', 'number'); - } else if (shape === 'point') { - createInput('点的位置 (x y)', 'pos'); - createInput('点的颜色 (R G B)', 'color'); - } else if (shape === 'lines') { - createInput('线段的点 (x1 y1 x2 y2 ...)', 'pointlist'); - createInput('线段颜色 (R G B)', 'color'); - } - } - - shapeSelect.addEventListener('change', updateParamsInputs); - updateParamsInputs(); - - generateButton.addEventListener('click', function() { - const shape = shapeSelect.value; - const params = {}; - const inputs = paramsDiv.querySelectorAll('input'); - - inputs.forEach(input => { - if (input.id === 'pointlist') { - const points = input.value.split(' ').map(Number); - params.pointlist = []; - for (let i = 0; i < points.length; i += 2) { - params.pointlist.push([points[i], points[i + 1]]); - } - } else if (input.id === 'pos' || input.id === 'size' || input.id === 'start_pos' || input.id === 'end_pos' || input.id === 'center' || input.id === 'color') { - params[input.id] = input.value.split(' ').map(Number); - } else if (input.type === 'number') { - params[input.id] = parseFloat(input.value); - } else { - params[input.id] = input.value; - } - }); - - try { - const shapeDict = generateShapeDict(shape, params); - resultDiv.innerHTML = '
' + JSON.stringify(shapeDict, null, 2) + '
'; - } catch (error) { - resultDiv.innerHTML = '

错误: ' + error.message + '

'; - } - }); -}); \ No newline at end of file diff --git a/comet/.python-version b/comet/.python-version new file mode 100644 index 0000000..24ee5b1 --- /dev/null +++ b/comet/.python-version @@ -0,0 +1 @@ +3.13 diff --git a/comet/agent_logs.log b/comet/agent_logs.log new file mode 100644 index 0000000..e69de29 diff --git a/comet/main.py b/comet/main.py new file mode 100644 index 0000000..bbff66f --- /dev/null +++ b/comet/main.py @@ -0,0 +1,6 @@ +def main(): + print("Hello from comet!") + + +if __name__ == "__main__": + main() diff --git a/comet/pyproject.toml b/comet/pyproject.toml new file mode 100644 index 0000000..48f4670 --- /dev/null +++ b/comet/pyproject.toml @@ -0,0 +1,7 @@ +[project] +name = "Comet" +version = "0.1.0" +description = "A onboard controller implementation of AiraPulsar Flight Control System" +readme = "README.md" +requires-python = ">=3.13" +dependencies = [] diff --git a/lib/__init__.py b/lib/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/lib/__pycache__/__init__.cpython-313.pyc b/lib/__pycache__/__init__.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..a2907bae161c860708d0da94abdbcdc02a4a7d47 GIT binary patch literal 151 zcmey&%ge<81gFzjGC=fW5CH>>P{wB#AY&>+I)f&o-%5reCLr%KNa~iEenx(7s(xZt zVuij-esXDUYFV-N=hSfGs08bHQ$h7^Vr#vF#VOpFXEOi_$X45>^h%&CmC z8RjyrW`w9@WT<4(WPJ(ZX)@ko)T&}N&@O;JdyRPfEu&ns4NOi#^A zuGCQ|OD!tS%+FKs(`3HIlAD;BcZ(e=bc?m1C^N5QCBtWs*}rV{GxBp&^%JuaEA(CR zlS^|`^Gb^K9g8v(14?s>6N~fV-N=hSfGs08bHQWhG2$ZMsEglCIyCIrXt1|CMAYo<`_mk z24f~uMugMqykZ5%^whlM zN*#r=)S}|d{5%CeP3BuHxrv#1x7eXVw^$2`GV@ASGJFP^ealuqBR@A)KQSw@Lf<7n zximL5ucTPtu_!Y!pfsmAu}HrFLgi#8=_i5>*N>0S%*!l^kJl@xyv1RYo1apelWJE4 u@-E1M#j-%+12ZEd;~fU!2V8;;>^B)$FK}qCP+uW=fz9|TgGmtwPz3-;0!!xr literal 0 HcmV?d00001 diff --git a/lib/agency/__pycache__/main.cpython-312.pyc b/lib/agency/__pycache__/main.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..23f6ce1aae8f8e05ad778eaa9ad91a07ea79b879 GIT binary patch literal 5528 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 a<9j9^jZc%KUvf_}Ok;M>R|IRi#Qy-02jPeS literal 0 HcmV?d00001 diff --git a/lib/agency/__pycache__/main.cpython-313.pyc b/lib/agency/__pycache__/main.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..d83787a4365ca0dae63177fbe16200bb10e8d65d GIT binary patch literal 5598 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 delta 320 zcmeAWe9iB1nwOW00SG=9|4LuY%)sy%#DM`ODC4sjkTIPhg&~D8harj~g(-?Lg}H?x zim8%OljS8yk>5lsRS^N8`gWG-3?+$y5Y#LJ`yC)l3$QOq-uDEoEe6n%u>*m630< z1M3eaP0q=4+1!{kStq|{lTwuhsx4*(5(+@zP$UOr-D1g2%*-p&0W#S@vY!|x8?b+p zYV|5o0CF{%ixh#>Etb5*+*Gilm6HQG#MJbGf*?N>ivWoa%#4hTw;8xTurY9mH?VwW K5n|*A>jnTYLO%Zh diff --git a/pulsar/components/__pycache__/marker.cpython-313.pyc b/pulsar/components/__pycache__/marker.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..1187088b8ebdccea460a29fbe3497dde4c7d8cc7 GIT binary patch literal 2041 zcmcIkO>7%g5Pti1*FW*PPMkU^L8PXsQjADUD@P*GhUT}VrU7~DiYRH4jlFR;S?`*+ zPD3MsazSb+BB?|~4jjrYy@i{5gIkWaib(VnB&2d6;*!<~I3eb(y>Z$ifsh!<^XARp zj%U7kWxu};0SylXXMg4qddMyg;i^z>0bw1u{mbn^x`=638(L{=DMU$aRTWU;H7zY)DPjF5q^3JITMuboHgk!o5;N(3CKcFIB$ z%VG!QiecGRlcQL6%bsrhx0Q3Ux0~y#b|#Fj#1ZnLFnXfmy8o+UsIiXKD+@7vD7#|# zzf_z=iTYYE94RTpIN8^N<~+_c3_i)%rWr;V6p=4=$ zb80G2-8s`rDY{DQQo3oVlZKL2?ZEvLkYb;;l8PCkszwA;K{e7A6;q~e5EYH90~W)Zj9-5bAq84BRvi@rTWxHIe!T7XJhRF?i+l-wjFg5a zV`ah4D>7coa}@(9M*);vl1s4lc#34#7z?lozEH{GwljGce@f@IEp;7mbUbUdBV?ar zm8A|>t(L^$8dbi=xa@Z-W!W4VKnuIVKntThHbTX;s^=BT&#O0~@w%3pr>@iju}nfB zKcZY4^}qM^G+mE2GXZOST|(Rp4s0dQ7Nr=w>Ng7piqKbFytzQCG$<-*3` z1K*2#Qp4KmPvg5))uji%w%tJE+NISG_v%Ay>5bR!7%(yC#{-qyAiE9Wc;#jvr{hfb4(vJjwSiuOv97a%POGu8^sV!#apT_h(#q5_)(VW<)_ElI7L*9yt)kBU-jQJPpD+>`2W55eINuAN<*{%rgfx9jn*N-NUm z@)zTG#&<&PrBM5(vemG4?(5^5qlJb-Z(;iWK*3vlrEmL8G1OiRC3ZrirO;?GqZfgP zvfq1*M?5;#^3y-%#P`x$y>`xX_m3Ce|2H`gT*xKuh|MLj`B&@_r*N4^t`i5g_$Y`( z|HqffDfrtXuoS$mO;_e1*pDCU%ROY9EA8@}&zk84UF{)f!NguHD+ug>=Q!>M)VS+z NS{BMekPFx`e*tHTtjhoZ literal 0 HcmV?d00001 diff --git a/pulsar/components/marker.py b/pulsar/components/marker.py index ed7a86c..5feb531 100644 --- a/pulsar/components/marker.py +++ b/pulsar/components/marker.py @@ -1,6 +1,4 @@ -import vgl - - +from lib import vgl name = "Marking Lines" def main(window): @@ -22,3 +20,6 @@ def main(window): for i in lines: i.set_color('#' + str((info['cursor']['position'][0] + info['cursor']['position'][1]*100 + info['cursor']['position'][0]*10000) % 999999).zfill(6)) observer() + #@vgl.loop # TODO + #def toloop(): + # pass \ No newline at end of file diff --git a/pulsar/main.py b/pulsar/main.py index 312643b..76361bb 100644 --- a/pulsar/main.py +++ b/pulsar/main.py @@ -1,9 +1,10 @@ -import vgl +from lib import vgl +from lib import agency import colorama import os import importlib.util -window = vgl.Window(title="Pulsar", size=(1024, 768)) +window = vgl.Window(title="Pulsar", size=(1600, 1000)) def loader(): components_dir = "components" diff --git a/pulsar/pyproject.toml b/pulsar/pyproject.toml new file mode 100644 index 0000000..bd4d8cd --- /dev/null +++ b/pulsar/pyproject.toml @@ -0,0 +1,7 @@ +[project] +name = "Pulsar" +version = "0.1.0" +description = "A client implementation of AiraPulsar Flight Control System" +readme = "README.md" +requires-python = ">=3.13" +dependencies = [] diff --git a/vgl/__pycache__/__init__.cpython-313.pyc b/vgl/__pycache__/__init__.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..96e33080a8afa923db7f7625d78a061c0622a102 GIT binary patch literal 452 zcmYLE%Syvg5S^q+lSULDD_sRQZB-hph@c_}ma6p;nkp!TOWI!AD`^sL+G<_Zm0#e} z4{+Dda9J0EUKIpa?!^9pH)?SfbIyS|XJ-1t!y51!zxk@(aeNQOprk+2KjGvWEU<(e zP_V=z?0KW zOe)YOW>e;Ic4IGtwzfAj$T~F5gM0y*`GY;P@DaL_0uyF<8!6cVDI@IQI(8eug*=~H zOwC^;P45g-T+vHy{Ro#E9@Vqd_G_f9@7irl=kyk)0r6ZtsWQ=?p-#n9jO5DaR^uue}ic$0G*sxFSb7RvhH-C;WHYl;prW4rI@PEM}C8Je! z41|bF8VIHQHdEK?UZv^abvn+Y!l!}--aaFOAUs3taW>r%ue3|8Hx$2z#0yNkLgGyu X>nKkk_tbPZ-kt14S07-Fj&j>Ki3fQ} literal 0 HcmV?d00001 diff --git a/vgl/__pycache__/basic_elements.cpython-312.pyc b/vgl/__pycache__/basic_elements.cpython-312.pyc index e31f818bd40df5637c3d8a19ebbeda6800cfffb2..bbf9eeb602939019669af70bc98b8d417d09dafa 100644 GIT binary patch delta 1242 zcmZ`&TTc@~6z*)dyR>xe9jJ0Cc!8x6-YSaC z1mBq{ak_d@sh<=ybCiq|4gbQpAec^>H1WDgv*_j}Gb&A{agnnUu<{Pp!r3BVtxLkD zQkpZXwhaO^l^CRc1L?(kVOJ6SbHe8b_wifnr8ZVXLY{rVQUxG|D+L09pM7ke)S9D_ zN%n+fkJy1#30J5Bb->K9#`VlZI1x?I6s{QvP$wG@nuwb%SQG4{FkFE$T8?l4;9q6x zM5c@lo7+Gew5{86;s`C{S~extkt%jq3^@53B(hz5Rn)lNpYO4B5J|)Yfz3;8o!B?6 z0x+z}$gCcXWOYh$M}{MmPKUzNx;BxC#I-~wM|kfkv<3V9D!qo9&*fmyg*AK#ypu*8 zbphl|)Qw}_w1gvx{gT@xPD-q!=*4g|u&SARV^}f~Ej?|BR1c?BOTj2Po|#A{Qei_* z>3qPY^dzLEECAp(nuoPrtiw9Y9ZViCMWOPU zrB;Bfe6XphwXLa@;!&tFJ%N#KgdPO$=x#GAdCpg=R( zs-xYAio#DBXQ{!^vj-3O{`?uVqA zReKt7+a5pc^^ymxuXz?A`>eO#yWPW%C2o6rLG;f13X*U5f{^^ucNmh_edmF1FPVkp z<&wI6ytU021=sCUNf(4`N>}y&&0t|AzGO!x+Le*$`u)NSwC7 l#1PYwm~O~}Q9Y)|)0AKQeyobpUB@_7UPC-AUfv*LslOym_@Dp) delta 1168 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 delta 309 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 WXB2*)t=LG@mHqp^r0`47;Qs>uxV8!a literal 0 HcmV?d00001 diff --git a/vgl/basic_elements.py b/vgl/basic_elements.py index b4d4a65..c0e2ae1 100644 --- a/vgl/basic_elements.py +++ b/vgl/basic_elements.py @@ -1,4 +1,4 @@ -from vgl.main import * +from .main import * import pygame import time