MoleditPy 1.16.0__py3-none-any.whl → 1.16.0a1__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- moleditpy/main.py +4 -1
- moleditpy/modules/constants.py +1 -1
- moleditpy/modules/main_window.py +7 -10
- moleditpy/modules/main_window_app_state.py +6 -44
- moleditpy/modules/main_window_main_init.py +5 -86
- moleditpy/modules/main_window_project_io.py +2 -15
- {moleditpy-1.16.0.dist-info → moleditpy-1.16.0a1.dist-info}/METADATA +1 -1
- {moleditpy-1.16.0.dist-info → moleditpy-1.16.0a1.dist-info}/RECORD +11 -11
- {moleditpy-1.16.0.dist-info → moleditpy-1.16.0a1.dist-info}/WHEEL +0 -0
- {moleditpy-1.16.0.dist-info → moleditpy-1.16.0a1.dist-info}/entry_points.txt +0 -0
- {moleditpy-1.16.0.dist-info → moleditpy-1.16.0a1.dist-info}/top_level.txt +0 -0
moleditpy/main.py
CHANGED
|
@@ -22,7 +22,10 @@ try:
|
|
|
22
22
|
except Exception:
|
|
23
23
|
# When executed as a standalone script (python main.py) the package-relative
|
|
24
24
|
# import won't work; fall back to absolute import that works with sys.path
|
|
25
|
-
|
|
25
|
+
try:
|
|
26
|
+
from .modules.main_window import MainWindow
|
|
27
|
+
except Exception:
|
|
28
|
+
from modules.main_window import MainWindow
|
|
26
29
|
|
|
27
30
|
def main():
|
|
28
31
|
# --- Windows タスクバーアイコンのための追加処理 ---
|
moleditpy/modules/constants.py
CHANGED
moleditpy/modules/main_window.py
CHANGED
|
@@ -109,9 +109,6 @@ class MainWindow(QMainWindow):
|
|
|
109
109
|
# create a small proxy (BoundFeature) that will forward call to
|
|
110
110
|
# the helper class with the MainWindow instance as the first
|
|
111
111
|
# argument.
|
|
112
|
-
# Undo/Redo操作中に状態復元中であることを示すフラグ
|
|
113
|
-
# 他のモジュールが呼び出される前に初期化する
|
|
114
|
-
self._is_restoring_state = False
|
|
115
112
|
|
|
116
113
|
class BoundFeature:
|
|
117
114
|
"""Bind a feature-class method calls to the MainWindow.
|
|
@@ -398,7 +395,7 @@ class MainWindow(QMainWindow):
|
|
|
398
395
|
|
|
399
396
|
def load_mol_file(self, file_path=None):
|
|
400
397
|
# --- MOVED TO main_window_molecular_parsers.py ---
|
|
401
|
-
return self.main_window_molecular_parsers.load_mol_file(file_path)
|
|
398
|
+
return self.main_window_molecular_parsers.load_mol_file(file_path=None)
|
|
402
399
|
|
|
403
400
|
def load_mol_for_3d_viewing(self):
|
|
404
401
|
# --- MOVED TO main_window_view_loaders.py ---
|
|
@@ -406,9 +403,9 @@ class MainWindow(QMainWindow):
|
|
|
406
403
|
|
|
407
404
|
def load_xyz_for_3d_viewing(self, file_path=None):
|
|
408
405
|
# --- MOVED TO main_window_view_loaders.py ---
|
|
409
|
-
return self.main_window_view_loaders.load_xyz_for_3d_viewing(file_path)
|
|
406
|
+
return self.main_window_view_loaders.load_xyz_for_3d_viewing(file_path=None)
|
|
410
407
|
|
|
411
|
-
def load_xyz_file(self, file_path
|
|
408
|
+
def load_xyz_file(self, file_path):
|
|
412
409
|
# --- MOVED TO main_window_molecular_parsers.py ---
|
|
413
410
|
return self.main_window_molecular_parsers.load_xyz_file(file_path)
|
|
414
411
|
|
|
@@ -430,7 +427,7 @@ class MainWindow(QMainWindow):
|
|
|
430
427
|
|
|
431
428
|
def load_raw_data(self, file_path=None):
|
|
432
429
|
# --- MOVED TO main_window_project_io.py ---
|
|
433
|
-
return self.main_window_project_io.load_raw_data(file_path)
|
|
430
|
+
return self.main_window_project_io.load_raw_data(file_path=None)
|
|
434
431
|
|
|
435
432
|
def save_as_json(self):
|
|
436
433
|
# --- MOVED TO main_window_project_io.py ---
|
|
@@ -442,11 +439,11 @@ class MainWindow(QMainWindow):
|
|
|
442
439
|
|
|
443
440
|
def load_json_data(self, file_path=None):
|
|
444
441
|
# --- MOVED TO main_window_project_io.py ---
|
|
445
|
-
return self.main_window_project_io.load_json_data(file_path)
|
|
442
|
+
return self.main_window_project_io.load_json_data(file_path=None)
|
|
446
443
|
|
|
447
444
|
def open_project_file(self, file_path=None):
|
|
448
445
|
# --- MOVED TO main_window_project_io.py ---
|
|
449
|
-
return self.main_window_project_io.open_project_file(file_path)
|
|
446
|
+
return self.main_window_project_io.open_project_file(file_path=None)
|
|
450
447
|
|
|
451
448
|
def load_from_json_data(self, json_data):
|
|
452
449
|
# --- MOVED TO main_window_app_state.py ---
|
|
@@ -614,7 +611,7 @@ class MainWindow(QMainWindow):
|
|
|
614
611
|
|
|
615
612
|
def load_mol_file_for_3d_viewing(self, file_path=None):
|
|
616
613
|
# --- MOVED TO main_window_view_loaders.py ---
|
|
617
|
-
return self.main_window_view_loaders.load_mol_file_for_3d_viewing(file_path)
|
|
614
|
+
return self.main_window_view_loaders.load_mol_file_for_3d_viewing(file_path=None)
|
|
618
615
|
|
|
619
616
|
def load_command_line_file(self, file_path):
|
|
620
617
|
# --- MOVED TO main_window_main_init.py ---
|
|
@@ -80,13 +80,9 @@ except Exception:
|
|
|
80
80
|
class MainWindowAppState(object):
|
|
81
81
|
""" main_window.py から分離された機能クラス """
|
|
82
82
|
|
|
83
|
-
def __init__(self):
|
|
84
|
-
"""
|
|
85
|
-
|
|
86
|
-
BoundFeature経由で呼ばれるため、'self' には MainWindow インスタンスが渡されます。
|
|
87
|
-
"""
|
|
88
|
-
self.DEBUG_UNDO = False
|
|
89
|
-
|
|
83
|
+
def __init__(self, main_window):
|
|
84
|
+
""" クラスの初期化 """
|
|
85
|
+
self.mw = main_window
|
|
90
86
|
|
|
91
87
|
|
|
92
88
|
def get_current_state(self):
|
|
@@ -238,9 +234,6 @@ class MainWindowAppState(object):
|
|
|
238
234
|
|
|
239
235
|
|
|
240
236
|
def push_undo_state(self):
|
|
241
|
-
if self._is_restoring_state:
|
|
242
|
-
return
|
|
243
|
-
|
|
244
237
|
current_state_for_comparison = {
|
|
245
238
|
'atoms': {k: (v['symbol'], v['item'].pos().x(), v['item'].pos().y(), v.get('charge', 0), v.get('radical', 0)) for k, v in self.data.atoms.items()},
|
|
246
239
|
'bonds': {k: (v['order'], v.get('stereo', 0)) for k, v in self.data.bonds.items()},
|
|
@@ -261,15 +254,8 @@ class MainWindowAppState(object):
|
|
|
261
254
|
}
|
|
262
255
|
|
|
263
256
|
if not last_state_for_comparison or current_state_for_comparison != last_state_for_comparison:
|
|
264
|
-
|
|
265
|
-
# by later modifications to objects referenced from the state.
|
|
266
|
-
state = copy.deepcopy(self.get_current_state())
|
|
257
|
+
state = self.get_current_state()
|
|
267
258
|
self.undo_stack.append(state)
|
|
268
|
-
if getattr(self, 'DEBUG_UNDO', False):
|
|
269
|
-
try:
|
|
270
|
-
print(f"DEBUG_UNDO: push_undo_state -> new stack size: {len(self.undo_stack)}")
|
|
271
|
-
except Exception:
|
|
272
|
-
pass
|
|
273
259
|
self.redo_stack.clear()
|
|
274
260
|
# 初期化完了後のみ変更があったことを記録
|
|
275
261
|
if self.initialization_complete:
|
|
@@ -334,11 +320,6 @@ class MainWindowAppState(object):
|
|
|
334
320
|
self.undo_stack.clear()
|
|
335
321
|
self.redo_stack.clear()
|
|
336
322
|
self.push_undo_state()
|
|
337
|
-
if getattr(self, 'DEBUG_UNDO', False):
|
|
338
|
-
try:
|
|
339
|
-
print(f"DEBUG_UNDO: reset_undo_stack -> undo={len(self.undo_stack)} redo={len(self.redo_stack)}")
|
|
340
|
-
except Exception:
|
|
341
|
-
pass
|
|
342
323
|
|
|
343
324
|
|
|
344
325
|
|
|
@@ -346,12 +327,7 @@ class MainWindowAppState(object):
|
|
|
346
327
|
if len(self.undo_stack) > 1:
|
|
347
328
|
self.redo_stack.append(self.undo_stack.pop())
|
|
348
329
|
state = self.undo_stack[-1]
|
|
349
|
-
self.
|
|
350
|
-
try:
|
|
351
|
-
self.set_state_from_data(state)
|
|
352
|
-
finally:
|
|
353
|
-
self._is_restoring_state = False
|
|
354
|
-
|
|
330
|
+
self.set_state_from_data(state)
|
|
355
331
|
|
|
356
332
|
# Undo後に3D構造の状態に基づいてメニューを再評価
|
|
357
333
|
if self.current_mol and self.current_mol.GetNumAtoms() > 0:
|
|
@@ -361,11 +337,6 @@ class MainWindowAppState(object):
|
|
|
361
337
|
# 3D構造がない場合は3D編集機能を無効化
|
|
362
338
|
self._enable_3d_edit_actions(False)
|
|
363
339
|
|
|
364
|
-
if getattr(self, 'DEBUG_UNDO', False):
|
|
365
|
-
try:
|
|
366
|
-
print(f"DEBUG_UNDO: undo -> undo_stack size: {len(self.undo_stack)}, redo_stack size: {len(self.redo_stack)}")
|
|
367
|
-
except Exception:
|
|
368
|
-
pass
|
|
369
340
|
self.update_undo_redo_actions()
|
|
370
341
|
self.update_realtime_info()
|
|
371
342
|
self.view_2d.setFocus()
|
|
@@ -376,11 +347,7 @@ class MainWindowAppState(object):
|
|
|
376
347
|
if self.redo_stack:
|
|
377
348
|
state = self.redo_stack.pop()
|
|
378
349
|
self.undo_stack.append(state)
|
|
379
|
-
self.
|
|
380
|
-
try:
|
|
381
|
-
self.set_state_from_data(state)
|
|
382
|
-
finally:
|
|
383
|
-
self._is_restoring_state = False
|
|
350
|
+
self.set_state_from_data(state)
|
|
384
351
|
|
|
385
352
|
# Redo後に3D構造の状態に基づいてメニューを再評価
|
|
386
353
|
if self.current_mol and self.current_mol.GetNumAtoms() > 0:
|
|
@@ -390,11 +357,6 @@ class MainWindowAppState(object):
|
|
|
390
357
|
# 3D構造がない場合は3D編集機能を無効化
|
|
391
358
|
self._enable_3d_edit_actions(False)
|
|
392
359
|
|
|
393
|
-
if getattr(self, 'DEBUG_UNDO', False):
|
|
394
|
-
try:
|
|
395
|
-
print(f"DEBUG_UNDO: redo -> undo_stack size: {len(self.undo_stack)}, redo_stack size: {len(self.redo_stack)}")
|
|
396
|
-
except Exception:
|
|
397
|
-
pass
|
|
398
360
|
self.update_undo_redo_actions()
|
|
399
361
|
self.update_realtime_info()
|
|
400
362
|
self.view_2d.setFocus()
|
|
@@ -36,65 +36,6 @@ from PyQt6.QtGui import (
|
|
|
36
36
|
from PyQt6.QtCore import (
|
|
37
37
|
Qt, QPointF, QRectF, QLineF, QUrl, QTimer
|
|
38
38
|
)
|
|
39
|
-
import platform
|
|
40
|
-
import subprocess
|
|
41
|
-
try:
|
|
42
|
-
import winreg
|
|
43
|
-
except Exception:
|
|
44
|
-
winreg = None
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
def detect_system_dark_mode():
|
|
48
|
-
"""Return True if the OS prefers dark app theme, False if light, or None if unknown.
|
|
49
|
-
|
|
50
|
-
This is a best-effort, cross-platform check supporting Windows (registry),
|
|
51
|
-
macOS (defaults read), and GNOME/GTK-based Linux (gsettings). Return
|
|
52
|
-
None if no reliable information is available.
|
|
53
|
-
"""
|
|
54
|
-
try:
|
|
55
|
-
# Windows: read registry AppsUseLightTheme (0 = dark, 1 = light)
|
|
56
|
-
if platform.system() == 'Windows' and winreg is not None:
|
|
57
|
-
try:
|
|
58
|
-
with winreg.OpenKey(winreg.HKEY_CURRENT_USER,
|
|
59
|
-
r'Software\Microsoft\Windows\CurrentVersion\Themes\Personalize') as k:
|
|
60
|
-
val, _ = winreg.QueryValueEx(k, 'AppsUseLightTheme')
|
|
61
|
-
return False if int(val) == 0 else True
|
|
62
|
-
except Exception:
|
|
63
|
-
pass
|
|
64
|
-
|
|
65
|
-
# macOS: 'defaults read -g AppleInterfaceStyle' returns 'Dark' in dark mode
|
|
66
|
-
if platform.system() == 'Darwin':
|
|
67
|
-
try:
|
|
68
|
-
p = subprocess.run(['defaults', 'read', '-g', 'AppleInterfaceStyle'], capture_output=True, text=True)
|
|
69
|
-
if p.returncode == 0 and p.stdout.strip().lower() == 'dark':
|
|
70
|
-
return True
|
|
71
|
-
# Key absence implies light mode
|
|
72
|
-
return False
|
|
73
|
-
except Exception:
|
|
74
|
-
pass
|
|
75
|
-
|
|
76
|
-
# Linux / GNOME: try color-scheme gsetting; fallback to gtk-theme detection
|
|
77
|
-
if platform.system() == 'Linux':
|
|
78
|
-
try:
|
|
79
|
-
p = subprocess.run(['gsettings', 'get', 'org.gnome.desktop.interface', 'color-scheme'], capture_output=True, text=True)
|
|
80
|
-
if p.returncode == 0:
|
|
81
|
-
out = p.stdout.strip().strip("'\n ")
|
|
82
|
-
if 'dark' in out.lower():
|
|
83
|
-
return True
|
|
84
|
-
if 'light' in out.lower():
|
|
85
|
-
return False
|
|
86
|
-
except Exception:
|
|
87
|
-
pass
|
|
88
|
-
|
|
89
|
-
try:
|
|
90
|
-
p = subprocess.run(['gsettings', 'get', 'org.gnome.desktop.interface', 'gtk-theme'], capture_output=True, text=True)
|
|
91
|
-
if p.returncode == 0 and '-dark' in p.stdout.lower():
|
|
92
|
-
return True
|
|
93
|
-
except Exception:
|
|
94
|
-
pass
|
|
95
|
-
except Exception:
|
|
96
|
-
pass
|
|
97
|
-
return None
|
|
98
39
|
|
|
99
40
|
|
|
100
41
|
# Use centralized Open Babel availability from package-level __init__
|
|
@@ -465,19 +406,10 @@ class MainWindowMainInit(object):
|
|
|
465
406
|
toolbar.addSeparator()
|
|
466
407
|
|
|
467
408
|
# --- アイコン前景色を決めるヘルパー(ダーク/ライトモード対応) ---
|
|
468
|
-
# Use module-level detector `detect_system_dark_mode()` so tests and other
|
|
469
|
-
# modules can reuse the logic.
|
|
470
|
-
|
|
471
|
-
|
|
472
409
|
def _icon_foreground_color():
|
|
473
|
-
"""Return a QColor for icon foreground.
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
will be the *opposite* color to the background (i.e., black on dark
|
|
477
|
-
backgrounds, white on light backgrounds). This intentionally reverses
|
|
478
|
-
the previous behavior so button icons don't blend into the 3D-view
|
|
479
|
-
background. Priority: explicit setting in 'icon_foreground' -> OS
|
|
480
|
-
theme preference -> configured 3D background -> application palette.
|
|
410
|
+
"""Return a QColor for icon foreground (black on light backgrounds, white on dark backgrounds).
|
|
411
|
+
|
|
412
|
+
Priority: explicit setting 'icon_foreground' in settings -> infer from configured background color -> infer from application palette.
|
|
481
413
|
"""
|
|
482
414
|
try:
|
|
483
415
|
fg_hex = self.settings.get('icon_foreground')
|
|
@@ -488,25 +420,13 @@ class MainWindowMainInit(object):
|
|
|
488
420
|
except Exception:
|
|
489
421
|
pass
|
|
490
422
|
|
|
491
|
-
# 1) Prefer the system/OS dark-mode preference if available.
|
|
492
|
-
try:
|
|
493
|
-
os_pref = detect_system_dark_mode()
|
|
494
|
-
# Invert the color so in dark-pref OS we return black, in light we return white
|
|
495
|
-
if os_pref is not None:
|
|
496
|
-
return QColor('#000000') if os_pref else QColor('#FFFFFF')
|
|
497
|
-
except Exception:
|
|
498
|
-
pass
|
|
499
|
-
|
|
500
423
|
try:
|
|
501
|
-
# Keep background_color as a fallback: if system preference isn't
|
|
502
|
-
# available we'll use the configured 3D view background from settings.
|
|
503
424
|
bg_hex = self.settings.get('background_color')
|
|
504
425
|
if bg_hex:
|
|
505
426
|
bg = QColor(bg_hex)
|
|
506
427
|
if bg.isValid():
|
|
507
428
|
lum = 0.2126 * bg.redF() + 0.7152 * bg.greenF() + 0.0722 * bg.blueF()
|
|
508
|
-
|
|
509
|
-
return QColor('#000000') if lum < 0.5 else QColor('#FFFFFF')
|
|
429
|
+
return QColor('#FFFFFF') if lum < 0.5 else QColor('#000000')
|
|
510
430
|
except Exception:
|
|
511
431
|
pass
|
|
512
432
|
|
|
@@ -515,8 +435,7 @@ class MainWindowMainInit(object):
|
|
|
515
435
|
# palette.window() returns a QBrush; call color()
|
|
516
436
|
window_bg = pal.window().color()
|
|
517
437
|
lum = 0.2126 * window_bg.redF() + 0.7152 * window_bg.greenF() + 0.0722 * window_bg.blueF()
|
|
518
|
-
#
|
|
519
|
-
return QColor('#000000') if lum < 0.5 else QColor('#FFFFFF')
|
|
438
|
+
return QColor('#FFFFFF') if lum < 0.5 else QColor('#000000')
|
|
520
439
|
except Exception:
|
|
521
440
|
return QColor('#000000')
|
|
522
441
|
|
|
@@ -164,11 +164,6 @@ class MainWindowProjectIo(object):
|
|
|
164
164
|
# Replace current file with the newly saved file so subsequent saves go to this path
|
|
165
165
|
self.current_file_path = file_path
|
|
166
166
|
self.update_window_title()
|
|
167
|
-
# Mark this state as the last saved state for undo tracking
|
|
168
|
-
try:
|
|
169
|
-
self._saved_state = copy.deepcopy(self.get_current_state())
|
|
170
|
-
except Exception:
|
|
171
|
-
pass
|
|
172
167
|
|
|
173
168
|
self.statusBar().showMessage(f"Project saved to {file_path}")
|
|
174
169
|
|
|
@@ -222,10 +217,6 @@ class MainWindowProjectIo(object):
|
|
|
222
217
|
# Update current file to the newly saved raw file
|
|
223
218
|
self.current_file_path = file_path
|
|
224
219
|
self.update_window_title()
|
|
225
|
-
try:
|
|
226
|
-
self._saved_state = copy.deepcopy(self.get_current_state())
|
|
227
|
-
except Exception:
|
|
228
|
-
pass
|
|
229
220
|
|
|
230
221
|
self.statusBar().showMessage(f"Project saved to {file_path}")
|
|
231
222
|
|
|
@@ -258,12 +249,8 @@ class MainWindowProjectIo(object):
|
|
|
258
249
|
self.has_unsaved_changes = False
|
|
259
250
|
self.current_file_path = file_path
|
|
260
251
|
self.update_window_title()
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
except Exception:
|
|
264
|
-
pass
|
|
265
|
-
|
|
266
|
-
self.statusBar.showMessage(f"Project loaded from {file_path}")
|
|
252
|
+
|
|
253
|
+
self.statusBar().showMessage(f"Project loaded from {file_path}")
|
|
267
254
|
|
|
268
255
|
QTimer.singleShot(0, self.fit_to_view)
|
|
269
256
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: MoleditPy
|
|
3
|
-
Version: 1.16.
|
|
3
|
+
Version: 1.16.0a1
|
|
4
4
|
Summary: A cross-platform, simple, and intuitive molecular structure editor built in Python. It allows 2D molecular drawing and 3D structure visualization. It supports exporting structure files for input to DFT calculation software.
|
|
5
5
|
Author-email: HiroYokoyama <titech.yoko.hiro@gmail.com>
|
|
6
6
|
Project-URL: Homepage, https://github.com/HiroYokoyama/python_molecular_editor
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
moleditpy/__init__.py,sha256=QCzpw3P5V_CwDtN4itK4hT9J99JgsH4gmpTfvuus6p8,46
|
|
2
2
|
moleditpy/__main__.py,sha256=az0UrbFsuprbQYycF_bSUXxb0F20DuLvYxrZl1-X5EU,831
|
|
3
|
-
moleditpy/main.py,sha256=
|
|
3
|
+
moleditpy/main.py,sha256=Qh4Q12shHTSh3j5DVBJjpXw7orkdA8siikRzf8dMHl0,1270
|
|
4
4
|
moleditpy/modules/__init__.py,sha256=X2Z0R5XpAoOehXdOv_6VlRm4rjt4zb1KPNSoLYIZsqg,1456
|
|
5
5
|
moleditpy/modules/about_dialog.py,sha256=ZztVzLIQgH5mfMMOD-eAhYUbecUn8JaBtbCUg8O12t4,3409
|
|
6
6
|
moleditpy/modules/align_plane_dialog.py,sha256=D6E0_rM75rKirDkvkJ-diRqNkf8IguqBBLQqDvZJHME,11665
|
|
@@ -12,22 +12,22 @@ moleditpy/modules/bond_item.py,sha256=zjQHa4vb8xhS9B7cYPRM0nak-f7lr5NQ1uAj_J78ah
|
|
|
12
12
|
moleditpy/modules/bond_length_dialog.py,sha256=xlx-bU3tVeLfShdVRw6_Geo5Gl9mztlIfTdT9tJ6WMA,14579
|
|
13
13
|
moleditpy/modules/calculation_worker.py,sha256=detE48BW08a2tvmKjMgz8zCShgARzsRH-ABmWrPcqZA,42055
|
|
14
14
|
moleditpy/modules/color_settings_dialog.py,sha256=h4AOKU8dCTenecI8zOM9GfnmKDm7jfe5C4Fa23Budvs,15205
|
|
15
|
-
moleditpy/modules/constants.py,sha256
|
|
15
|
+
moleditpy/modules/constants.py,sha256=-U7onjl-zb2CylbZsQQ3MsvnJoNHiAIwCVfm84NZg6I,4436
|
|
16
16
|
moleditpy/modules/constrained_optimization_dialog.py,sha256=MlWnPze0JJvnqmHx9n3qZWG_h-2kZymT0PQ6lALbCro,29861
|
|
17
17
|
moleditpy/modules/custom_interactor_style.py,sha256=K_uGM6FezY0kZ3zPqoR6f0nowG40ytt-L4UCAbPlwGM,38184
|
|
18
18
|
moleditpy/modules/custom_qt_interactor.py,sha256=6mzaVb3Mhp-4nryG5AraEvPPgBJpotrzVYwrpCAKmVo,2186
|
|
19
19
|
moleditpy/modules/dialog3_d_picking_mixin.py,sha256=gaF1ATevvvF72aBfAjubRcagT2jnVG5RMpEKos_XdKg,4768
|
|
20
20
|
moleditpy/modules/dihedral_dialog.py,sha256=H6WFvc7NvPHSd5QCMk0NUPhudOzpModXv-42dYL20KM,17809
|
|
21
|
-
moleditpy/modules/main_window.py,sha256=
|
|
22
|
-
moleditpy/modules/main_window_app_state.py,sha256=
|
|
21
|
+
moleditpy/modules/main_window.py,sha256=CcdsfVOazmLlOwKK5INAVBiHAu-tcRQvsQBqmJmosu0,35618
|
|
22
|
+
moleditpy/modules/main_window_app_state.py,sha256=cbzgNw902fizAX1IHf5Y8eN7iNcLY3ssHFnaokYhRwg,31758
|
|
23
23
|
moleditpy/modules/main_window_compute.py,sha256=fiIokVvjzXIwwR3FV3Ltet_K4oL_rT0Z27rPMbvlyyc,51346
|
|
24
24
|
moleditpy/modules/main_window_dialog_manager.py,sha256=5WU6mFABB0aI4XCywP-cLFPkNQSb3bC0OK0I28SQG_w,19845
|
|
25
25
|
moleditpy/modules/main_window_edit_3d.py,sha256=FStBWVeDVAM2MoO-JCTjPM-G7iT8QZUHxsb0dS4MEAI,19553
|
|
26
26
|
moleditpy/modules/main_window_edit_actions.py,sha256=8tR0rYfgWYgdKTxBP4snzpxhiD2DExSKyf4jzSWb6sE,64598
|
|
27
27
|
moleditpy/modules/main_window_export.py,sha256=f_Z4qVYKBTe06lGTFqjd3deluUdkQvHhZYa81h7UpBM,34465
|
|
28
|
-
moleditpy/modules/main_window_main_init.py,sha256=
|
|
28
|
+
moleditpy/modules/main_window_main_init.py,sha256=_xWK8rhOHYGwlEMOnB3zpyA8T0c-X8h-emngsGgcEAg,70922
|
|
29
29
|
moleditpy/modules/main_window_molecular_parsers.py,sha256=8JAIgr1axzmJqX_Ue-Adkl8e_8B2Th9yutQbau8EEWQ,43401
|
|
30
|
-
moleditpy/modules/main_window_project_io.py,sha256=
|
|
30
|
+
moleditpy/modules/main_window_project_io.py,sha256=ix6PmeCzdLRYDovS2UOPwdetoNgs2tdUUDPteP7c4w8,16511
|
|
31
31
|
moleditpy/modules/main_window_string_importers.py,sha256=yrZblvPG840qnqVEJf__XVfNnWl_r3vt68Abfs2aYDQ,10674
|
|
32
32
|
moleditpy/modules/main_window_ui_manager.py,sha256=0jdTZGv5JRtDlDniblPKzLPXdfUBZ3qh12s6pav4ihI,22038
|
|
33
33
|
moleditpy/modules/main_window_view_3d.py,sha256=aU6fI-ZYUV7qOQmucsF5WuafGYyvb4P2xj0oIgsnDaU,55443
|
|
@@ -47,8 +47,8 @@ moleditpy/modules/zoomable_view.py,sha256=ZgAmmWXIKtx7AhMjs6H6PCyvb_kpYuankf8Uxs
|
|
|
47
47
|
moleditpy/modules/assets/icon.icns,sha256=wD5R6-Vw7K662tVKhu2E1ImN0oUuyAP4youesEQsn9c,139863
|
|
48
48
|
moleditpy/modules/assets/icon.ico,sha256=RfgFcx7-dHY_2STdsOQCQziY5SNhDr3gPnjO6jzEDPI,147975
|
|
49
49
|
moleditpy/modules/assets/icon.png,sha256=kCFN1WacYIdy0GN6SFEbNA00ef39pCczBnFdkkBI8Bs,147110
|
|
50
|
-
moleditpy-1.16.
|
|
51
|
-
moleditpy-1.16.
|
|
52
|
-
moleditpy-1.16.
|
|
53
|
-
moleditpy-1.16.
|
|
54
|
-
moleditpy-1.16.
|
|
50
|
+
moleditpy-1.16.0a1.dist-info/METADATA,sha256=371b7dT_tKv4iB-sVSWNwUvPIDCEADEgWFAaoktequM,17422
|
|
51
|
+
moleditpy-1.16.0a1.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
52
|
+
moleditpy-1.16.0a1.dist-info/entry_points.txt,sha256=yH1h9JjALhok1foXT3-hYrC4ufoZt8b7oiBcsdnGNNM,54
|
|
53
|
+
moleditpy-1.16.0a1.dist-info/top_level.txt,sha256=ARICrS4ihlPXqywlKl6o-oJa3Qz3gZRWu_VZsQ3_c44,10
|
|
54
|
+
moleditpy-1.16.0a1.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|