MoleditPy-linux 1.17.0__py3-none-any.whl → 1.18.0__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.
Files changed (53) hide show
  1. moleditpy_linux/__init__.py +1 -1
  2. moleditpy_linux/__main__.py +1 -1
  3. moleditpy_linux/main.py +1 -1
  4. moleditpy_linux/modules/__init__.py +1 -1
  5. moleditpy_linux/modules/about_dialog.py +1 -1
  6. moleditpy_linux/modules/align_plane_dialog.py +1 -1
  7. moleditpy_linux/modules/alignment_dialog.py +1 -1
  8. moleditpy_linux/modules/analysis_window.py +1 -1
  9. moleditpy_linux/modules/angle_dialog.py +1 -1
  10. moleditpy_linux/modules/atom_item.py +1 -1
  11. moleditpy_linux/modules/bond_item.py +97 -6
  12. moleditpy_linux/modules/bond_length_dialog.py +1 -1
  13. moleditpy_linux/modules/calculation_worker.py +1 -1
  14. moleditpy_linux/modules/color_settings_dialog.py +1 -1
  15. moleditpy_linux/modules/constants.py +2 -2
  16. moleditpy_linux/modules/constrained_optimization_dialog.py +1 -1
  17. moleditpy_linux/modules/custom_interactor_style.py +1 -1
  18. moleditpy_linux/modules/custom_qt_interactor.py +1 -1
  19. moleditpy_linux/modules/dialog3_d_picking_mixin.py +1 -1
  20. moleditpy_linux/modules/dihedral_dialog.py +1 -1
  21. moleditpy_linux/modules/main_window.py +1 -1
  22. moleditpy_linux/modules/main_window_app_state.py +9 -0
  23. moleditpy_linux/modules/main_window_compute.py +7 -1
  24. moleditpy_linux/modules/main_window_dialog_manager.py +1 -1
  25. moleditpy_linux/modules/main_window_edit_3d.py +1 -1
  26. moleditpy_linux/modules/main_window_edit_actions.py +1 -1
  27. moleditpy_linux/modules/main_window_export.py +1 -1
  28. moleditpy_linux/modules/main_window_main_init.py +1 -1
  29. moleditpy_linux/modules/main_window_molecular_parsers.py +1 -1
  30. moleditpy_linux/modules/main_window_project_io.py +1 -1
  31. moleditpy_linux/modules/main_window_string_importers.py +1 -1
  32. moleditpy_linux/modules/main_window_ui_manager.py +1 -1
  33. moleditpy_linux/modules/main_window_view_3d.py +349 -122
  34. moleditpy_linux/modules/main_window_view_loaders.py +1 -1
  35. moleditpy_linux/modules/mirror_dialog.py +1 -1
  36. moleditpy_linux/modules/molecular_data.py +1 -1
  37. moleditpy_linux/modules/molecule_scene.py +8 -4
  38. moleditpy_linux/modules/move_group_dialog.py +1 -1
  39. moleditpy_linux/modules/periodic_table_dialog.py +1 -1
  40. moleditpy_linux/modules/planarize_dialog.py +1 -1
  41. moleditpy_linux/modules/settings_dialog.py +86 -2
  42. moleditpy_linux/modules/template_preview_item.py +1 -1
  43. moleditpy_linux/modules/template_preview_view.py +1 -1
  44. moleditpy_linux/modules/translation_dialog.py +1 -1
  45. moleditpy_linux/modules/user_template_dialog.py +1 -1
  46. moleditpy_linux/modules/zoomable_view.py +22 -2
  47. {moleditpy_linux-1.17.0.dist-info → moleditpy_linux-1.18.0.dist-info}/METADATA +1 -1
  48. moleditpy_linux-1.18.0.dist-info/RECORD +55 -0
  49. moleditpy_linux-1.17.0.dist-info/RECORD +0 -55
  50. {moleditpy_linux-1.17.0.dist-info → moleditpy_linux-1.18.0.dist-info}/WHEEL +0 -0
  51. {moleditpy_linux-1.17.0.dist-info → moleditpy_linux-1.18.0.dist-info}/entry_points.txt +0 -0
  52. {moleditpy_linux-1.17.0.dist-info → moleditpy_linux-1.18.0.dist-info}/licenses/LICENSE +0 -0
  53. {moleditpy_linux-1.17.0.dist-info → moleditpy_linux-1.18.0.dist-info}/top_level.txt +0 -0
@@ -7,7 +7,7 @@ MoleditPy — A Python-based molecular editing software
7
7
  Author: Hiromichi Yokoyama
8
8
  License: GPL-3.0 license
9
9
  Repo: https://github.com/HiroYokoyama/python_molecular_editor
10
- DOI 10.5281/zenodo.17268532
10
+ DOI: 10.5281/zenodo.17268532
11
11
  """
12
12
 
13
13
  import traceback
@@ -1712,7 +1712,11 @@ class MoleculeScene(QGraphicsScene):
1712
1712
  return
1713
1713
 
1714
1714
  # --- 3. Atomに対する操作 (原子の追加 - マージされた機能) ---
1715
- if key == Qt.Key.Key_1:
1715
+ if key in [Qt.Key.Key_1, Qt.Key.Key_2, Qt.Key.Key_3]:
1716
+ target_order = 1
1717
+ if key == Qt.Key.Key_2: target_order = 2
1718
+ elif key == Qt.Key.Key_3: target_order = 3
1719
+
1716
1720
  start_atom = None
1717
1721
  if isinstance(item_at_cursor, AtomItem):
1718
1722
  start_atom = item_at_cursor
@@ -1802,12 +1806,12 @@ class MoleculeScene(QGraphicsScene):
1802
1806
 
1803
1807
  if near_atom and near_atom is not start_atom:
1804
1808
  # 近くに既存原子があれば結合
1805
- self.create_bond(start_atom, near_atom)
1809
+ self.create_bond(start_atom, near_atom, bond_order=target_order, bond_stereo=0)
1806
1810
  else:
1807
1811
  # 新規原子を作成し結合
1808
1812
  new_atom_id = self.create_atom('C', target_pos)
1809
1813
  new_atom_item = self.data.atoms[new_atom_id]['item']
1810
- self.create_bond(start_atom, new_atom_item)
1814
+ self.create_bond(start_atom, new_atom_item, bond_order=target_order, bond_stereo=0)
1811
1815
 
1812
1816
  self.clearSelection()
1813
1817
  self.window.push_undo_state()
@@ -7,7 +7,7 @@ MoleditPy — A Python-based molecular editing software
7
7
  Author: Hiromichi Yokoyama
8
8
  License: GPL-3.0 license
9
9
  Repo: https://github.com/HiroYokoyama/python_molecular_editor
10
- DOI 10.5281/zenodo.17268532
10
+ DOI: 10.5281/zenodo.17268532
11
11
  """
12
12
 
13
13
  from PyQt6.QtWidgets import (
@@ -7,7 +7,7 @@ MoleditPy — A Python-based molecular editing software
7
7
  Author: Hiromichi Yokoyama
8
8
  License: GPL-3.0 license
9
9
  Repo: https://github.com/HiroYokoyama/python_molecular_editor
10
- DOI 10.5281/zenodo.17268532
10
+ DOI: 10.5281/zenodo.17268532
11
11
  """
12
12
 
13
13
  from PyQt6.QtWidgets import QDialog, QGridLayout, QPushButton
@@ -7,7 +7,7 @@ MoleditPy — A Python-based molecular editing software
7
7
  Author: Hiromichi Yokoyama
8
8
  License: GPL-3.0 license
9
9
  Repo: https://github.com/HiroYokoyama/python_molecular_editor
10
- DOI 10.5281/zenodo.17268532
10
+ DOI: 10.5281/zenodo.17268532
11
11
  """
12
12
 
13
13
  from PyQt6.QtWidgets import (
@@ -7,7 +7,7 @@ MoleditPy — A Python-based molecular editing software
7
7
  Author: Hiromichi Yokoyama
8
8
  License: GPL-3.0 license
9
9
  Repo: https://github.com/HiroYokoyama/python_molecular_editor
10
- DOI 10.5281/zenodo.17268532
10
+ DOI: 10.5281/zenodo.17268532
11
11
  """
12
12
 
13
13
  from PyQt6.QtWidgets import (
@@ -69,6 +69,9 @@ class SettingsDialog(QDialog):
69
69
  'stick_triple_bond_offset_factor': 1.0,
70
70
  'stick_double_bond_radius_factor': 0.6,
71
71
  'stick_triple_bond_radius_factor': 0.4,
72
+ 'aromatic_torus_thickness_factor': 0.6,
73
+ # Whether to draw an aromatic circle inside rings in 3D
74
+ 'display_aromatic_circles_3d': False,
72
75
  # If True, attempts to be permissive when RDKit raises chemical/sanitization errors
73
76
  # during file import (useful for viewing malformed XYZ/MOL files). When enabled,
74
77
  # element symbol recognition will be coerced where possible and Chem.SanitizeMol
@@ -86,6 +89,7 @@ class SettingsDialog(QDialog):
86
89
  # If True, RDKit will attempt to kekulize aromatic systems for 3D display
87
90
  # (shows alternating single/double bonds rather than aromatic circles)
88
91
  'display_kekule_3d': False,
92
+ 'ball_stick_use_cpk_bond_color': False,
89
93
  }
90
94
 
91
95
  # --- 選択された色を管理する専用のインスタンス変数 ---
@@ -118,6 +122,13 @@ class SettingsDialog(QDialog):
118
122
 
119
123
  # 渡された設定でUIと内部変数を初期化
120
124
  self.update_ui_from_settings(current_settings)
125
+
126
+ # Initialize aromatic circle checkbox and torus thickness from settings
127
+ self.aromatic_circle_checkbox.setChecked(current_settings.get('display_aromatic_circles_3d', self.default_settings.get('display_aromatic_circles_3d', False)))
128
+ # Thickness factor is stored as a multiplier (e.g., 1.0), slider uses integer 0-300 representing 0.1x-3.0x
129
+ thickness_factor = current_settings.get('aromatic_torus_thickness_factor', self.default_settings.get('aromatic_torus_thickness_factor', 1.0))
130
+ self.aromatic_torus_thickness_slider.setValue(int(thickness_factor * 100))
131
+ self.aromatic_torus_thickness_label.setText(f"{thickness_factor:.1f}")
121
132
 
122
133
  # --- ボタンの配置 ---
123
134
  buttons = QHBoxLayout()
@@ -243,11 +254,42 @@ class SettingsDialog(QDialog):
243
254
  except Exception:
244
255
  pass
245
256
 
257
+ # Add separator after Kekule bonds option
258
+ separator = QFrame()
259
+ separator.setFrameShape(QFrame.Shape.HLine)
260
+ separator.setFrameShadow(QFrame.Shadow.Sunken)
261
+ self.other_form_layout.addRow(separator)
262
+
246
263
  # Place the Kekulé option after the always-ask-charge option
247
264
  try:
248
265
  self.other_form_layout.addRow("Display Kekulé bonds in 3D:", self.kekule_3d_checkbox)
249
266
  except Exception:
250
267
  pass
268
+
269
+
270
+ # Aromatic ring circle display option
271
+ self.aromatic_circle_checkbox = QCheckBox()
272
+ self.aromatic_circle_checkbox.setToolTip("When enabled, aromatic rings will be displayed with a circle inside the ring in 3D view.")
273
+ try:
274
+ self.other_form_layout.addRow("Display aromatic rings as circles in 3D:", self.aromatic_circle_checkbox)
275
+ except Exception:
276
+ pass
277
+
278
+ # Aromatic torus thickness factor
279
+ self.aromatic_torus_thickness_slider = QSlider(Qt.Orientation.Horizontal)
280
+ self.aromatic_torus_thickness_slider.setRange(10, 300) # 0.1x to 3.0x
281
+ self.aromatic_torus_thickness_slider.setValue(100) # Default 1.0x
282
+ self.aromatic_torus_thickness_label = QLabel("1.0")
283
+ self.aromatic_torus_thickness_slider.valueChanged.connect(
284
+ lambda v: self.aromatic_torus_thickness_label.setText(f"{v/100:.1f}")
285
+ )
286
+ thickness_layout = QHBoxLayout()
287
+ thickness_layout.addWidget(self.aromatic_torus_thickness_slider)
288
+ thickness_layout.addWidget(self.aromatic_torus_thickness_label)
289
+ try:
290
+ self.other_form_layout.addRow("Aromatic torus thickness (× bond radius):", thickness_layout)
291
+ except Exception:
292
+ pass
251
293
 
252
294
  # Add Other tab to the tab widget
253
295
  self.tab_widget.addTab(self.other_widget, "Other")
@@ -378,6 +420,12 @@ class SettingsDialog(QDialog):
378
420
  resolution_layout.addWidget(self.bs_resolution_label)
379
421
  form_layout.addRow("Resolution (Quality):", resolution_layout)
380
422
 
423
+ # --- 区切り線(水平ライン) ---
424
+ line = QFrame()
425
+ line.setFrameShape(QFrame.Shape.HLine)
426
+ line.setFrameShadow(QFrame.Shadow.Sunken)
427
+ form_layout.addRow(line)
428
+
381
429
  # --- Ball & Stick bond color ---
382
430
  self.bs_bond_color_button = QPushButton()
383
431
  self.bs_bond_color_button.setFixedSize(36, 24)
@@ -385,6 +433,11 @@ class SettingsDialog(QDialog):
385
433
  self.bs_bond_color_button.setToolTip("Choose the uniform bond color for Ball & Stick model (3D)")
386
434
  form_layout.addRow("Ball & Stick bond color:", self.bs_bond_color_button)
387
435
 
436
+ # Use CPK colors for bonds option
437
+ self.bs_use_cpk_bond_checkbox = QCheckBox()
438
+ self.bs_use_cpk_bond_checkbox.setToolTip("If checked, bonds will be colored using the atom colors (split bonds). If unchecked, a uniform color is used.")
439
+ form_layout.addRow("Use CPK colors for bonds:", self.bs_use_cpk_bond_checkbox)
440
+
388
441
  self.tab_widget.addTab(ball_stick_widget, "Ball & Stick")
389
442
 
390
443
  def create_cpk_tab(self):
@@ -619,6 +672,8 @@ class SettingsDialog(QDialog):
619
672
  'skip_chemistry_checks': self.default_settings.get('skip_chemistry_checks', False),
620
673
  'display_kekule_3d': self.default_settings.get('display_kekule_3d', False),
621
674
  'always_ask_charge': self.default_settings.get('always_ask_charge', False),
675
+ 'display_aromatic_circles_3d': self.default_settings.get('display_aromatic_circles_3d', False),
676
+ 'aromatic_torus_thickness_factor': self.default_settings.get('aromatic_torus_thickness_factor', 1.0),
622
677
  },
623
678
  "Ball & Stick": {
624
679
  'ball_stick_atom_scale': self.default_settings['ball_stick_atom_scale'],
@@ -627,11 +682,14 @@ class SettingsDialog(QDialog):
627
682
  'ball_stick_double_bond_offset_factor': self.default_settings.get('ball_stick_double_bond_offset_factor', 2.0),
628
683
  'ball_stick_triple_bond_offset_factor': self.default_settings.get('ball_stick_triple_bond_offset_factor', 2.0),
629
684
  'ball_stick_double_bond_radius_factor': self.default_settings.get('ball_stick_double_bond_radius_factor', 0.8),
630
- 'ball_stick_triple_bond_radius_factor': self.default_settings.get('ball_stick_triple_bond_radius_factor', 0.75)
685
+ 'ball_stick_triple_bond_radius_factor': self.default_settings.get('ball_stick_triple_bond_radius_factor', 0.75),
686
+ 'ball_stick_use_cpk_bond_color': self.default_settings['ball_stick_use_cpk_bond_color'],
687
+ 'ball_stick_bond_color': self.default_settings.get('ball_stick_bond_color', '#7F7F7F')
631
688
  },
632
689
  "CPK (Space-filling)": {
633
690
  'cpk_atom_scale': self.default_settings['cpk_atom_scale'],
634
691
  'cpk_resolution': self.default_settings['cpk_resolution'],
692
+ 'cpk_colors': {}
635
693
  },
636
694
  "Wireframe": {
637
695
  'wireframe_bond_radius': self.default_settings['wireframe_bond_radius'],
@@ -665,6 +723,7 @@ class SettingsDialog(QDialog):
665
723
 
666
724
  # UIを更新
667
725
  self.update_ui_from_settings(updated_settings)
726
+ # CPK tab: do not change parent/settings immediately; let Apply/OK persist any changes
668
727
 
669
728
  # ユーザーへのフィードバック
670
729
  QMessageBox.information(self, "Reset Complete", f"Settings for '{tab_name}' tab have been reset to defaults.")
@@ -801,6 +860,17 @@ class SettingsDialog(QDialog):
801
860
  'stick_triple_bond_offset_factor': self.stick_triple_offset_slider.value() / 100.0,
802
861
  'stick_double_bond_radius_factor': self.stick_double_radius_slider.value() / 100.0,
803
862
  'stick_triple_bond_radius_factor': self.stick_triple_radius_slider.value() / 100.0,
863
+ # Projection mode
864
+ 'projection_mode': self.projection_combo.currentText(),
865
+ # Kekule / aromatic / torus settings
866
+ 'display_kekule_3d': self.kekule_3d_checkbox.isChecked(),
867
+ 'display_aromatic_circles_3d': self.aromatic_circle_checkbox.isChecked(),
868
+ 'aromatic_torus_thickness_factor': self.aromatic_torus_thickness_slider.value() / 100.0,
869
+ 'skip_chemistry_checks': self.skip_chem_checks_checkbox.isChecked(),
870
+ 'always_ask_charge': self.always_ask_charge_checkbox.isChecked(),
871
+ # Ball & Stick bond color and use-cpk option
872
+ 'ball_stick_bond_color': getattr(self, 'bs_bond_color', self.default_settings.get('ball_stick_bond_color')),
873
+ 'ball_stick_use_cpk_bond_color': self.bs_use_cpk_bond_checkbox.isChecked(),
804
874
  }
805
875
 
806
876
  def reset_to_defaults(self):
@@ -854,6 +924,9 @@ class SettingsDialog(QDialog):
854
924
  except Exception:
855
925
  pass
856
926
 
927
+ # Ball & Stick CPK bond color option
928
+ self.bs_use_cpk_bond_checkbox.setChecked(settings_dict.get('ball_stick_use_cpk_bond_color', self.default_settings['ball_stick_use_cpk_bond_color']))
929
+
857
930
  # CPK設定
858
931
  cpk_atom_scale = int(settings_dict.get('cpk_atom_scale', self.default_settings['cpk_atom_scale']) * 100)
859
932
  self.cpk_atom_scale_slider.setValue(cpk_atom_scale)
@@ -944,6 +1017,14 @@ class SettingsDialog(QDialog):
944
1017
  self.kekule_3d_checkbox.setChecked(settings_dict.get('display_kekule_3d', self.default_settings.get('display_kekule_3d', False)))
945
1018
  # always ask for charge on XYZ imports
946
1019
  self.always_ask_charge_checkbox.setChecked(settings_dict.get('always_ask_charge', self.default_settings.get('always_ask_charge', False)))
1020
+ # Aromatic ring circle display and torus thickness factor
1021
+ self.aromatic_circle_checkbox.setChecked(settings_dict.get('display_aromatic_circles_3d', self.default_settings.get('display_aromatic_circles_3d', False)))
1022
+ thickness_factor = float(settings_dict.get('aromatic_torus_thickness_factor', self.default_settings.get('aromatic_torus_thickness_factor', 1.0)))
1023
+ try:
1024
+ self.aromatic_torus_thickness_slider.setValue(int(thickness_factor * 100))
1025
+ self.aromatic_torus_thickness_label.setText(f"{thickness_factor:.1f}")
1026
+ except Exception:
1027
+ pass
947
1028
 
948
1029
  def select_color(self):
949
1030
  """カラーピッカーを開き、選択された色を内部変数とUIに反映させる"""
@@ -996,10 +1077,13 @@ class SettingsDialog(QDialog):
996
1077
  'stick_double_bond_radius_factor': self.stick_double_radius_slider.value() / 100.0,
997
1078
  'stick_triple_bond_radius_factor': self.stick_triple_radius_slider.value() / 100.0,
998
1079
  'display_kekule_3d': self.kekule_3d_checkbox.isChecked(),
1080
+ 'display_aromatic_circles_3d': self.aromatic_circle_checkbox.isChecked(),
1081
+ 'aromatic_torus_thickness_factor': self.aromatic_torus_thickness_slider.value() / 100.0,
999
1082
  'skip_chemistry_checks': self.skip_chem_checks_checkbox.isChecked(),
1000
1083
  'always_ask_charge': self.always_ask_charge_checkbox.isChecked(),
1001
1084
  # Ball & Stick bond color (3D grey/uniform color)
1002
1085
  'ball_stick_bond_color': getattr(self, 'bs_bond_color', self.default_settings.get('ball_stick_bond_color', '#7F7F7F')),
1086
+ 'ball_stick_use_cpk_bond_color': self.bs_use_cpk_bond_checkbox.isChecked(),
1003
1087
  }
1004
1088
 
1005
1089
  def pick_bs_bond_color(self):
@@ -7,7 +7,7 @@ MoleditPy — A Python-based molecular editing software
7
7
  Author: Hiromichi Yokoyama
8
8
  License: GPL-3.0 license
9
9
  Repo: https://github.com/HiroYokoyama/python_molecular_editor
10
- DOI 10.5281/zenodo.17268532
10
+ DOI: 10.5281/zenodo.17268532
11
11
  """
12
12
 
13
13
  from PyQt6.QtWidgets import (
@@ -7,7 +7,7 @@ MoleditPy — A Python-based molecular editing software
7
7
  Author: Hiromichi Yokoyama
8
8
  License: GPL-3.0 license
9
9
  Repo: https://github.com/HiroYokoyama/python_molecular_editor
10
- DOI 10.5281/zenodo.17268532
10
+ DOI: 10.5281/zenodo.17268532
11
11
  """
12
12
 
13
13
  from PyQt6.QtWidgets import QGraphicsView
@@ -7,7 +7,7 @@ MoleditPy — A Python-based molecular editing software
7
7
  Author: Hiromichi Yokoyama
8
8
  License: GPL-3.0 license
9
9
  Repo: https://github.com/HiroYokoyama/python_molecular_editor
10
- DOI 10.5281/zenodo.17268532
10
+ DOI: 10.5281/zenodo.17268532
11
11
  """
12
12
 
13
13
  from PyQt6.QtWidgets import (
@@ -7,7 +7,7 @@ MoleditPy — A Python-based molecular editing software
7
7
  Author: Hiromichi Yokoyama
8
8
  License: GPL-3.0 license
9
9
  Repo: https://github.com/HiroYokoyama/python_molecular_editor
10
- DOI 10.5281/zenodo.17268532
10
+ DOI: 10.5281/zenodo.17268532
11
11
  """
12
12
 
13
13
  from PyQt6.QtWidgets import (
@@ -7,7 +7,7 @@ MoleditPy — A Python-based molecular editing software
7
7
  Author: Hiromichi Yokoyama
8
8
  License: GPL-3.0 license
9
9
  Repo: https://github.com/HiroYokoyama/python_molecular_editor
10
- DOI 10.5281/zenodo.17268532
10
+ DOI: 10.5281/zenodo.17268532
11
11
  """
12
12
 
13
13
  from PyQt6.QtWidgets import (
@@ -16,7 +16,7 @@ from PyQt6.QtWidgets import (
16
16
 
17
17
 
18
18
  from PyQt6.QtCore import (
19
- Qt, QPointF
19
+ Qt, QPointF, QEvent
20
20
  )
21
21
 
22
22
  class ZoomableView(QGraphicsView):
@@ -107,3 +107,23 @@ class ZoomableView(QGraphicsView):
107
107
  event.accept()
108
108
  else:
109
109
  super().mouseReleaseEvent(event)
110
+
111
+ def viewportEvent(self, event):
112
+ """ Macのトラックパッドなどのネイティブジェスチャー(ピンチ)に対応 """
113
+ if event.type() == QEvent.Type.NativeGesture:
114
+ # ピンチズーム(ZoomNativeGesture)の場合
115
+ if event.gestureType() == Qt.NativeGestureType.ZoomNativeGesture:
116
+ # event.value() は拡大縮小の倍率差分を返します
117
+ # 例: 拡大時は正の値、縮小時は負の値
118
+ factor = 1.0 + event.value()
119
+
120
+ # 既存の最大・最小スケール制限を考慮する場合(オプション)
121
+ current_scale = self.transform().m11()
122
+ min_scale, max_scale = 0.05, 20.0
123
+
124
+ # 制限内であればスケールを適用
125
+ # (厳密に制限を守るならif文でガードしますが、最小実装としては以下で動作します)
126
+ self.scale(factor, factor)
127
+ return True
128
+
129
+ return super().viewportEvent(event)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: MoleditPy-linux
3
- Version: 1.17.0
3
+ Version: 1.18.0
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
  License: GNU GENERAL PUBLIC LICENSE
@@ -0,0 +1,55 @@
1
+ moleditpy_linux/__init__.py,sha256=OWErYK0DbSMVsHrTs7rxzzziUalidJfWPYUaSWm2lLY,317
2
+ moleditpy_linux/__main__.py,sha256=bYu_h7lhc6PIl1-I_VI4_Q5MdBHmVrMiO4DYsy9jbiY,829
3
+ moleditpy_linux/main.py,sha256=0D8_CXe4xdgqlu2TWoT2pi35K9y2b4ilFj6LWD9Qk7w,1178
4
+ moleditpy_linux/modules/__init__.py,sha256=PFwvuEKXsgQlHTYL8oT5sTeo22gR0XmQcySp7kOTtqk,1396
5
+ moleditpy_linux/modules/about_dialog.py,sha256=zkR-w0vtqLH1Y0baQaoTb0tYmVamT4ztEMBdIANKKvc,3693
6
+ moleditpy_linux/modules/align_plane_dialog.py,sha256=ULqc0Ik1ju0HSnkkr0f-VLQw7TJbV9PdjDirYYpBXL0,11934
7
+ moleditpy_linux/modules/alignment_dialog.py,sha256=Oikb5lzTxrRX2MJXoeziYqBc9hckVR0PbuBb4KJUCCc,11409
8
+ moleditpy_linux/modules/analysis_window.py,sha256=zjP5ipSTpKw8oLr1eKdoxW8Bk1SslGlPqsVucD-x_5w,9403
9
+ moleditpy_linux/modules/angle_dialog.py,sha256=e06-Bw2E9khyjC3209HuGc5FDS3Pj0StV8u5bO1gKFw,17817
10
+ moleditpy_linux/modules/atom_item.py,sha256=u8ge6B1M9sOGobfzg3tp1-EGXtEUmvdee7Fx6msg8Wk,15566
11
+ moleditpy_linux/modules/bond_item.py,sha256=eVkEeKvM4igYI67DYxpey3FllqDyt_iWDo4VPYMhaPk,19137
12
+ moleditpy_linux/modules/bond_length_dialog.py,sha256=Gaiu4XN3CmMXl-hHl_C5_-ADEA_0VhL5GlAmIKYGRLw,14848
13
+ moleditpy_linux/modules/calculation_worker.py,sha256=KiGQY7i-QCQofEoE0r65KoQgpEGFcbhmxWv6egfkUdc,42324
14
+ moleditpy_linux/modules/color_settings_dialog.py,sha256=Ow44BhCOLo0AFb6klO001k6B4drOgKX9DeNBQhZLp5o,15474
15
+ moleditpy_linux/modules/constants.py,sha256=lbPijXuicncVftXmGiESbdbJ0Ufq_NvziOxOQTEwq50,4703
16
+ moleditpy_linux/modules/constrained_optimization_dialog.py,sha256=OFWJ715N92XLKlJwEnvCa-y01GHst_VoiyzURS9WGvM,30130
17
+ moleditpy_linux/modules/custom_interactor_style.py,sha256=NjsXE2a43IDNEanZBlcG9eR4ZIERT1MsQC6lbfesapQ,38453
18
+ moleditpy_linux/modules/custom_qt_interactor.py,sha256=MFaTuDh-FPeFBS4303CqxsxmsOIOW4QXUz6USwI8PHQ,2451
19
+ moleditpy_linux/modules/dialog3_d_picking_mixin.py,sha256=2Sut0J5ltXMtrUJ9R3o1oZ4ysed27mdSIqLpWxmGdyM,5037
20
+ moleditpy_linux/modules/dihedral_dialog.py,sha256=J_Ri71gkqYzBWK3MFaQv9Uq_iN6caTsEtFCTz4hr4Mk,18078
21
+ moleditpy_linux/modules/main_window.py,sha256=bWgYP3EMOAcy1fnjg5DTXHb2d7Xm6zKQtFcleYjg7Ac,35789
22
+ moleditpy_linux/modules/main_window_app_state.py,sha256=4iwmnaiKu7uJ98r1KpdWgZ1_GBCGsM38hf7DNTFXEZE,33592
23
+ moleditpy_linux/modules/main_window_compute.py,sha256=DsyMvGD2gnB-9XC6SU-ICuScyyQxubfaDYAk8hkY-vk,51911
24
+ moleditpy_linux/modules/main_window_dialog_manager.py,sha256=S1ROCWqzB2uVSKHY4o5CbTtJAEjSyEXGPC1AgmdVgK4,20065
25
+ moleditpy_linux/modules/main_window_edit_3d.py,sha256=xBZxqzkTSUFqY2-WrTGEpTNIgzHdT_oMK5NcHaU2XVQ,19771
26
+ moleditpy_linux/modules/main_window_edit_actions.py,sha256=lUFxNFTUQzeXN8CNlb4_4S9j4M1EEq8kpJmh9dCzM3M,64818
27
+ moleditpy_linux/modules/main_window_export.py,sha256=piWCXSdC2Qfd1BgNvSlAOgCrce7n8YH99GexuTifhlg,34683
28
+ moleditpy_linux/modules/main_window_main_init.py,sha256=rgPCUGB6yto0wTaMvWw721wNurGQ5hHpg0rpa3a1fPI,75595
29
+ moleditpy_linux/modules/main_window_molecular_parsers.py,sha256=yac8DMa4zL35o7fCZFz_qwqLUvkzpzZBITheNO8PM8A,48394
30
+ moleditpy_linux/modules/main_window_project_io.py,sha256=mj6rqLMziNb8YDEBtlt2FLJ3eylmz1pTokjaQ3F1r8k,17239
31
+ moleditpy_linux/modules/main_window_string_importers.py,sha256=mQVDv2Dj4MwnPgMRe2IqdAAKnB_quE6QfYeAgCjfv28,10892
32
+ moleditpy_linux/modules/main_window_ui_manager.py,sha256=p2KPzAj0GK9ZWP7SbAg0jGrmKeLaLC0X7l9ISC4GVu4,22256
33
+ moleditpy_linux/modules/main_window_view_3d.py,sha256=uvH8L3ksDKLzBYGF2BzJLIfvRYk_Vv67stoDjB3yOik,69484
34
+ moleditpy_linux/modules/main_window_view_loaders.py,sha256=DbsjW-C6XymIaqd0wsGQckOX8Qqx8UKwIOvtKeoUkfc,14452
35
+ moleditpy_linux/modules/mirror_dialog.py,sha256=c3v4qY6R4FAljzk4EPaDjL9ZdZMjLQSFLqDMXz2fBUk,4696
36
+ moleditpy_linux/modules/molecular_data.py,sha256=8gE9ByYg3kSBfb1zANsyad_BVBTm6WOLF7NsZIYuG2E,13250
37
+ moleditpy_linux/modules/molecule_scene.py,sha256=V61_-zPPGBLDWKYdZdaRMxu_Y9Lq9qIAAWo1Le7czh4,95133
38
+ moleditpy_linux/modules/move_group_dialog.py,sha256=65HVXTJSaQ9lp03XFhI1l7OzUsXmH_aqd8OgwjpjfGg,27174
39
+ moleditpy_linux/modules/periodic_table_dialog.py,sha256=ItEZUts1XCietz9paY-spvbzxh6SXak3GnikwqkHZCw,4006
40
+ moleditpy_linux/modules/planarize_dialog.py,sha256=uwd4zU1YWfG8lgEYr6_pMjX1nPKjeQEHAtvHC7IuC-s,8671
41
+ moleditpy_linux/modules/settings_dialog.py,sha256=fsMcpQDETL1c86RLjagC6NS2q7km8o_PwOr5uuY4Mps,66475
42
+ moleditpy_linux/modules/template_preview_item.py,sha256=Ks3C35pYFuLT5G4fsloI7ljE6ESXoYyGvLkM22qcmt0,6673
43
+ moleditpy_linux/modules/template_preview_view.py,sha256=4OCHZDO51BvJpKdfrBWJ4_4WfLfFSKxsVIyf7I-Kj2E,3350
44
+ moleditpy_linux/modules/translation_dialog.py,sha256=aWlgTR9mtEMbzGIY1SoQhDltsX-01LtCxjqy5NWtGuA,14663
45
+ moleditpy_linux/modules/user_template_dialog.py,sha256=0AOnJpxqOL4iGeZAmbuicXUB5wguEbSq-MlFFByJpGQ,28224
46
+ moleditpy_linux/modules/zoomable_view.py,sha256=hjwljui13QpvjvxJHY4Evot4jMQvxRBQUNH5HUlyFOk,5966
47
+ moleditpy_linux/modules/assets/icon.icns,sha256=wD5R6-Vw7K662tVKhu2E1ImN0oUuyAP4youesEQsn9c,139863
48
+ moleditpy_linux/modules/assets/icon.ico,sha256=RfgFcx7-dHY_2STdsOQCQziY5SNhDr3gPnjO6jzEDPI,147975
49
+ moleditpy_linux/modules/assets/icon.png,sha256=kCFN1WacYIdy0GN6SFEbNA00ef39pCczBnFdkkBI8Bs,147110
50
+ moleditpy_linux-1.18.0.dist-info/licenses/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
51
+ moleditpy_linux-1.18.0.dist-info/METADATA,sha256=X4cu0KRmadAgRPsNYSQv5VtfnADk6WbLpBMqFCPa2CM,58734
52
+ moleditpy_linux-1.18.0.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
53
+ moleditpy_linux-1.18.0.dist-info/entry_points.txt,sha256=-OzipSi__yVwlimNtu3eiRP5t5UMg55Cs0udyhXYiyw,60
54
+ moleditpy_linux-1.18.0.dist-info/top_level.txt,sha256=qyqe-hDYL6CXyin9E5Me5rVl3PG84VqiOjf9bQvfJLs,16
55
+ moleditpy_linux-1.18.0.dist-info/RECORD,,
@@ -1,55 +0,0 @@
1
- moleditpy_linux/__init__.py,sha256=KzAbwgdouR0WcuVPsq10M3egIQPNm3xS9jN1bF7KGhQ,316
2
- moleditpy_linux/__main__.py,sha256=P4BoaqZ-SgKGoErMZIWRKhzH6CbR8q34ipQ6RtQUEko,828
3
- moleditpy_linux/main.py,sha256=fI7A2zxlhrtXsyDCLJ3iiGeAc28FSaAj4MPnqBoA8GU,1177
4
- moleditpy_linux/modules/__init__.py,sha256=uhZXwojRHFyZTj1dR89OvgPGj6O6ZSo-1ZK3zSc86Ks,1395
5
- moleditpy_linux/modules/about_dialog.py,sha256=mcEpGFRKBCiQkmrmb6RvllyWuuS0o7VOFBO9_YcKt0k,3692
6
- moleditpy_linux/modules/align_plane_dialog.py,sha256=qk2p1za_SgDZ_EMm0BIe-Asi-5rfP3yw3MkrH8qdilk,11933
7
- moleditpy_linux/modules/alignment_dialog.py,sha256=ImL03lRirOP596jp4h4Gkwb3-kNpNarg5f9nEAow388,11408
8
- moleditpy_linux/modules/analysis_window.py,sha256=bFSE4yj1YRiAunLzFovzI2znh8pQ0i34AMcyw5xRz_Q,9402
9
- moleditpy_linux/modules/angle_dialog.py,sha256=0ERs8n3WGAvrjH3tSX3SFkfsxM0rqre5WQqtBR42ZRc,17816
10
- moleditpy_linux/modules/atom_item.py,sha256=rn_BhPb7K_VoJjCbe6yaE5seOIhSAxmzFcT9MprJw_Y,15565
11
- moleditpy_linux/modules/bond_item.py,sha256=6YhLyXp9VjyEydiY71iG9xUTCHC3zD5HkyJkOyRXwPw,13046
12
- moleditpy_linux/modules/bond_length_dialog.py,sha256=G6eRFcIlYQHsFMejczgmGqJA6zESjXyEnDScRGePS5Q,14847
13
- moleditpy_linux/modules/calculation_worker.py,sha256=UsxlSLd2Xts_qDqwPgWG7ibRhtPx3RYemkxivQZ6m6M,42323
14
- moleditpy_linux/modules/color_settings_dialog.py,sha256=GuLhv0plClhdVoJ2B6RLt9587KOsu98zv_DDxonpU1A,15473
15
- moleditpy_linux/modules/constants.py,sha256=4_QxKnxL_CZDLhbCiHI6H0lEvHXlc6iQgElWC8Nvo_k,4702
16
- moleditpy_linux/modules/constrained_optimization_dialog.py,sha256=xTjg30gcKx7n0trDmnaDHA9dnTOKN4DJ60rECS-DVpQ,30129
17
- moleditpy_linux/modules/custom_interactor_style.py,sha256=o1rw9z7hxgqEcii3hkk-YbSxZKf9P4_-5OZjYMvL2H8,38452
18
- moleditpy_linux/modules/custom_qt_interactor.py,sha256=_s5JHsCppM3hHT2LnhpyeHl-IeN8YP86wgvnvGvye3c,2450
19
- moleditpy_linux/modules/dialog3_d_picking_mixin.py,sha256=6S3Wg54Noiz7bPKe1WnklLnJXrk4O6LpZDoptowQ3TM,5036
20
- moleditpy_linux/modules/dihedral_dialog.py,sha256=6r8-TFxoixT_XiUyVEV5IQhKNjBfsFlmVehoObtkweU,18077
21
- moleditpy_linux/modules/main_window.py,sha256=mYxSk_KbiRNP0snhiJNN7plzzXNg3B7i-UJSW2q_Kk4,35788
22
- moleditpy_linux/modules/main_window_app_state.py,sha256=f9f3JVuC46ijlea2DR8ADa0Jn5r2dgedPPdg8OkmNAU,33374
23
- moleditpy_linux/modules/main_window_compute.py,sha256=lwtFq_PLybj141ndCyNEDj_hMKxbZbuCTW3EIa7scTA,51563
24
- moleditpy_linux/modules/main_window_dialog_manager.py,sha256=5xNIee_bIjCIwUBbQevS99a1eGI_nPqLBgFvlmGUyuU,20064
25
- moleditpy_linux/modules/main_window_edit_3d.py,sha256=rsfnw2KprNoX5Luhnf0rX9Y2OJOmprtLcewFPYEx2zA,19770
26
- moleditpy_linux/modules/main_window_edit_actions.py,sha256=UOhjsph7rT9UeAfERw20BcvNSoCOg9SZQs10tev0vmk,64817
27
- moleditpy_linux/modules/main_window_export.py,sha256=HJlUphsPU_foPIPiqJVIe03rFXpVvTol_C8ldYPkzzE,34682
28
- moleditpy_linux/modules/main_window_main_init.py,sha256=ksSj2bkBCK9SqhdM3dSv5TbIvDuGnQFsN3g-hATHua0,75594
29
- moleditpy_linux/modules/main_window_molecular_parsers.py,sha256=Cu3pOc4csgBXj_vTAUT6tr41XgbLFE5fmaVhytJBVo0,48393
30
- moleditpy_linux/modules/main_window_project_io.py,sha256=9LtybfjFzA9SBJbFvhT3OW7RoPf3-niwuda-deDwLTM,17238
31
- moleditpy_linux/modules/main_window_string_importers.py,sha256=Trn7xZE6unJem8q0Pb2UQVEc_lLPm_LNk9nxjO79F7w,10891
32
- moleditpy_linux/modules/main_window_ui_manager.py,sha256=_eikt0v2EMpvC0xxuCO1fEyK4Ad7RBVhC6F9X4pxCq8,22255
33
- moleditpy_linux/modules/main_window_view_3d.py,sha256=rL2ySTR92Iy2j4ov4QvqKxeY-9pgFyRxJAQ4e8ialg8,58207
34
- moleditpy_linux/modules/main_window_view_loaders.py,sha256=QfvP3fqvay4_y3m7gXOd4gL7fxRvTyeq3ZeXzm1pvr8,14451
35
- moleditpy_linux/modules/mirror_dialog.py,sha256=mivxkhXLqqgabLhXCnIs-zLOG81vlsbccTcYZHrCpGg,4695
36
- moleditpy_linux/modules/molecular_data.py,sha256=q303QaggkP9mepUlRU2wVabMh_i76hwbKI0SPWF7iNM,13249
37
- moleditpy_linux/modules/molecule_scene.py,sha256=vD4wQItpk8owqCyYoMfyBj_1l9QOX2NKAOzBrGM4VWQ,94880
38
- moleditpy_linux/modules/move_group_dialog.py,sha256=pNv6RkSRsLoYN6bFxJOD9BuzydDKty1rCwLS-lqlGfg,27173
39
- moleditpy_linux/modules/periodic_table_dialog.py,sha256=VZRvHLoebYhZT0vjQ2E7MvXwNPbnOkLdgb2gR8ixWA8,4005
40
- moleditpy_linux/modules/planarize_dialog.py,sha256=OqcEd5eer_XNqZmy0vKCHImwh9RpenVmF2VmN4Is3as,8670
41
- moleditpy_linux/modules/settings_dialog.py,sha256=WVbFpB7BPHER3UqmP2L3CctvbJDUg3MDRElbxQYViMM,60926
42
- moleditpy_linux/modules/template_preview_item.py,sha256=QrGyzXngNQEnKZpgGFRBNzb_C3bIfOvRrzwUZ5qqn94,6672
43
- moleditpy_linux/modules/template_preview_view.py,sha256=avhwnNBMl0zimp115bBWOwah3wnNukSGeshNN2BY0sA,3349
44
- moleditpy_linux/modules/translation_dialog.py,sha256=gTJLk0Rk2b-IsgiWLiQFzg4_dm_NtJhe203IuYYsYGw,14662
45
- moleditpy_linux/modules/user_template_dialog.py,sha256=7KQBT5PGScTUZhaQmrI4eCiWXORKrDXFsb--RiOxVm8,28223
46
- moleditpy_linux/modules/zoomable_view.py,sha256=1HaaVtyVP2P2cdPDpCvxW0Pyq5EFsKzrUutILaTDNRk,4835
47
- moleditpy_linux/modules/assets/icon.icns,sha256=wD5R6-Vw7K662tVKhu2E1ImN0oUuyAP4youesEQsn9c,139863
48
- moleditpy_linux/modules/assets/icon.ico,sha256=RfgFcx7-dHY_2STdsOQCQziY5SNhDr3gPnjO6jzEDPI,147975
49
- moleditpy_linux/modules/assets/icon.png,sha256=kCFN1WacYIdy0GN6SFEbNA00ef39pCczBnFdkkBI8Bs,147110
50
- moleditpy_linux-1.17.0.dist-info/licenses/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
51
- moleditpy_linux-1.17.0.dist-info/METADATA,sha256=4VVKVLWJAQBa2bpnROr2491R759fRrwmLcHoNkWvzCo,58734
52
- moleditpy_linux-1.17.0.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
53
- moleditpy_linux-1.17.0.dist-info/entry_points.txt,sha256=-OzipSi__yVwlimNtu3eiRP5t5UMg55Cs0udyhXYiyw,60
54
- moleditpy_linux-1.17.0.dist-info/top_level.txt,sha256=qyqe-hDYL6CXyin9E5Me5rVl3PG84VqiOjf9bQvfJLs,16
55
- moleditpy_linux-1.17.0.dist-info/RECORD,,