forked from 1b-agent/opencadstudio-upstream
navigation: selectable mouse navigation style
Options → User Preferences → Navigation style picks which mouse gestures pan and orbit the model view (#1480): - CAD (default): middle button pans, Shift + middle button orbits. - Blender: middle button orbits, Shift + middle button pans. - CATIA: middle button pans; pressing the left button during it orbits, so 3D navigation needs only the mouse. An armed orbit tool always orbits. The choice is saved with the user settings. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
74df9ff84a
commit
19ecf78bd9
30 files changed
+183
-1
No files matched your search
@@ -1563,6 +1563,10 @@ common =
|
||||
.user-preferences = تفضيلات المستخدم
|
||||
.zoom = التكبير
|
||||
.reverse-mouse-wheel-zoom-zoomwheel = عكس التكبير بعجلة الفأرة (ZOOMWHEEL)
|
||||
.navigation-style = نمط التنقل
|
||||
.nav-style-cad = CAD: Shift + الزر الأوسط للدوران
|
||||
.nav-style-blender = Blender: الزر الأوسط للدوران، Shift للتحريك
|
||||
.nav-style-catia = CATIA: الزر الأوسط + الأيسر للدوران
|
||||
.touchpad-scroll-pans-ctrl-scroll-or-pinch-zooms = لوحة اللمس: التمرير يحرك العرض، Ctrl+تمرير أو القرص يكبّر
|
||||
.interface-scale = مقياس الواجهة
|
||||
.zoom-factor = معامل التكبير
|
||||
|
||||
@@ -1550,6 +1550,10 @@ common =
|
||||
.user-preferences = Потребителски предпочитания
|
||||
.zoom = Мащабиране
|
||||
.reverse-mouse-wheel-zoom-zoomwheel = Обръщане на мащабирането с колелцето (ZOOMWHEEL)
|
||||
.navigation-style = Стил на навигация
|
||||
.nav-style-cad = CAD: Shift + среден бутон завърта
|
||||
.nav-style-blender = Blender: среден бутон завърта, Shift премества
|
||||
.nav-style-catia = CATIA: среден + ляв бутон завърта
|
||||
.touchpad-scroll-pans-ctrl-scroll-or-pinch-zooms = Тъчпад: превъртането мести изгледа, Ctrl+превъртане или щипване мащабира
|
||||
.interface-scale = Мащаб на интерфейса
|
||||
.zoom-factor = Коефициент на мащабиране
|
||||
|
||||
@@ -1550,6 +1550,10 @@ common =
|
||||
.user-preferences = Předvolby uživatele
|
||||
.zoom = Zoom
|
||||
.reverse-mouse-wheel-zoom-zoomwheel = Obrátit zoom kolečkem myši (ZOOMWHEEL)
|
||||
.navigation-style = Styl navigace
|
||||
.nav-style-cad = CAD: Shift + prostřední tlačítko otáčí
|
||||
.nav-style-blender = Blender: prostřední tlačítko otáčí, Shift posouvá
|
||||
.nav-style-catia = CATIA: prostřední + levé tlačítko otáčí
|
||||
.touchpad-scroll-pans-ctrl-scroll-or-pinch-zooms = Touchpad: posun posouvá pohled, Ctrl+posun nebo sevření zvětšuje
|
||||
.interface-scale = Měřítko rozhraní
|
||||
.zoom-factor = Faktor zoomu
|
||||
|
||||
@@ -1551,6 +1551,10 @@ common =
|
||||
.user-preferences = Benutzereinstellungen
|
||||
.zoom = Zoom
|
||||
.reverse-mouse-wheel-zoom-zoomwheel = Mausradzoom umkehren (ZOOMWHEEL)
|
||||
.navigation-style = Navigationsstil
|
||||
.nav-style-cad = CAD: Umschalt + mittlere Taste dreht
|
||||
.nav-style-blender = Blender: mittlere Taste dreht, Umschalt verschiebt
|
||||
.nav-style-catia = CATIA: mittlere + linke Taste dreht
|
||||
.touchpad-scroll-pans-ctrl-scroll-or-pinch-zooms = Touchpad: Scrollen verschiebt, Strg+Scrollen oder Zusammenziehen zoomt
|
||||
.interface-scale = Oberflächenskalierung
|
||||
.zoom-factor = Zoomfaktor
|
||||
|
||||
@@ -1552,6 +1552,10 @@ common =
|
||||
.user-preferences = Προτιμήσεις χρήστη
|
||||
.zoom = Ζουμ
|
||||
.reverse-mouse-wheel-zoom-zoomwheel = Αντιστροφή ζουμ με τον τροχό (ZOOMWHEEL)
|
||||
.navigation-style = Στυλ πλοήγησης
|
||||
.nav-style-cad = CAD: Shift + μεσαίο πλήκτρο περιστρέφει
|
||||
.nav-style-blender = Blender: μεσαίο πλήκτρο περιστρέφει, Shift μετακινεί
|
||||
.nav-style-catia = CATIA: μεσαίο + αριστερό πλήκτρο περιστρέφει
|
||||
.touchpad-scroll-pans-ctrl-scroll-or-pinch-zooms = Επιφάνεια αφής: η κύλιση μετακινεί, Ctrl+κύλιση ή τσίμπημα κάνει ζουμ
|
||||
.interface-scale = Κλίμακα διεπαφής
|
||||
.zoom-factor = Συντελεστής ζουμ
|
||||
|
||||
@@ -1551,6 +1551,10 @@ common =
|
||||
.user-preferences = User Preferences
|
||||
.zoom = Zoom
|
||||
.reverse-mouse-wheel-zoom-zoomwheel = Reverse mouse wheel zoom (ZOOMWHEEL)
|
||||
.navigation-style = Navigation style
|
||||
.nav-style-cad = CAD: Shift + middle button orbits
|
||||
.nav-style-blender = Blender: middle button orbits, Shift pans
|
||||
.nav-style-catia = CATIA: middle + left button orbits
|
||||
.touchpad-scroll-pans-ctrl-scroll-or-pinch-zooms = Touchpad: scroll pans, Ctrl+scroll or pinch zooms
|
||||
.interface-scale = Interface scale
|
||||
.zoom-factor = Zoom factor
|
||||
|
||||
@@ -1551,6 +1551,10 @@ common =
|
||||
.user-preferences = Preferencias de usuario
|
||||
.zoom = Zoom
|
||||
.reverse-mouse-wheel-zoom-zoomwheel = Invertir el zoom de la rueda del ratón (ZOOMWHEEL)
|
||||
.navigation-style = Estilo de navegación
|
||||
.nav-style-cad = CAD: Mayús + botón central orbita
|
||||
.nav-style-blender = Blender: botón central orbita, Mayús desplaza
|
||||
.nav-style-catia = CATIA: botón central + izquierdo orbita
|
||||
.touchpad-scroll-pans-ctrl-scroll-or-pinch-zooms = Panel táctil: el desplazamiento encuadra, Ctrl+desplazamiento o pellizco hace zoom
|
||||
.interface-scale = Escala de la interfaz
|
||||
.zoom-factor = Factor de zoom
|
||||
|
||||
@@ -1550,6 +1550,10 @@ common =
|
||||
.user-preferences = Käyttäjäasetukset
|
||||
.zoom = Zoomaus
|
||||
.reverse-mouse-wheel-zoom-zoomwheel = Käännä hiiren rullan zoomaus (ZOOMWHEEL)
|
||||
.navigation-style = Navigointityyli
|
||||
.nav-style-cad = CAD: Vaihto + keskipainike kiertää
|
||||
.nav-style-blender = Blender: keskipainike kiertää, Vaihto panoroi
|
||||
.nav-style-catia = CATIA: keski- + vasen painike kiertää
|
||||
.touchpad-scroll-pans-ctrl-scroll-or-pinch-zooms = Kosketuslevy: vieritys panoroi, Ctrl+vieritys tai nipistys zoomaa
|
||||
.interface-scale = Käyttöliittymän skaalaus
|
||||
.zoom-factor = Zoomauskerroin
|
||||
|
||||
@@ -1551,6 +1551,10 @@ common =
|
||||
.user-preferences = Préférences utilisateur
|
||||
.zoom = Zoom
|
||||
.reverse-mouse-wheel-zoom-zoomwheel = Inverser le zoom à la molette (ZOOMWHEEL)
|
||||
.navigation-style = Style de navigation
|
||||
.nav-style-cad = CAO : Maj + bouton du milieu fait pivoter
|
||||
.nav-style-blender = Blender : bouton du milieu fait pivoter, Maj déplace
|
||||
.nav-style-catia = CATIA : boutons du milieu + gauche font pivoter
|
||||
.touchpad-scroll-pans-ctrl-scroll-or-pinch-zooms = Pavé tactile : le défilement déplace, Ctrl+défilement ou pincement zoome
|
||||
.interface-scale = Échelle de l'interface
|
||||
.zoom-factor = Facteur de zoom
|
||||
|
||||
@@ -1539,6 +1539,10 @@ common =
|
||||
.user-preferences = उपयोगकर्ता प्राथमिकताएँ
|
||||
.zoom = ज़ूम
|
||||
.reverse-mouse-wheel-zoom-zoomwheel = माउस व्हील ज़ूम उलटें (ZOOMWHEEL)
|
||||
.navigation-style = नेविगेशन शैली
|
||||
.nav-style-cad = CAD: Shift + मध्य बटन घुमाता है
|
||||
.nav-style-blender = Blender: मध्य बटन घुमाता है, Shift खिसकाता है
|
||||
.nav-style-catia = CATIA: मध्य + बायाँ बटन घुमाता है
|
||||
.touchpad-scroll-pans-ctrl-scroll-or-pinch-zooms = टचपैड: स्क्रॉल पैन करता है, Ctrl+स्क्रॉल या पिंच ज़ूम करता है
|
||||
.interface-scale = इंटरफ़ेस स्केल
|
||||
.zoom-factor = ज़ूम गुणक
|
||||
|
||||
@@ -1556,6 +1556,10 @@ common =
|
||||
.user-preferences = Felhasználói beállítások
|
||||
.zoom = Nagyítás
|
||||
.reverse-mouse-wheel-zoom-zoomwheel = Egérgörgős nagyítás megfordítása (ZOOMWHEEL)
|
||||
.navigation-style = Navigációs stílus
|
||||
.nav-style-cad = CAD: Shift + középső gomb forgat
|
||||
.nav-style-blender = Blender: középső gomb forgat, Shift mozgat
|
||||
.nav-style-catia = CATIA: középső + bal gomb forgat
|
||||
.touchpad-scroll-pans-ctrl-scroll-or-pinch-zooms = Érintőpad: a görgetés mozgat, a Ctrl+görgetés vagy csippentés nagyít
|
||||
.interface-scale = Felület mérete
|
||||
.zoom-factor = Nagyítási tényező
|
||||
|
||||
@@ -1550,6 +1550,10 @@ common =
|
||||
.user-preferences = Preferenze utente
|
||||
.zoom = Zoom
|
||||
.reverse-mouse-wheel-zoom-zoomwheel = Inverti lo zoom con la rotellina (ZOOMWHEEL)
|
||||
.navigation-style = Stile di navigazione
|
||||
.nav-style-cad = CAD: Maiusc + tasto centrale ruota
|
||||
.nav-style-blender = Blender: tasto centrale ruota, Maiusc sposta
|
||||
.nav-style-catia = CATIA: tasto centrale + sinistro ruota
|
||||
.touchpad-scroll-pans-ctrl-scroll-or-pinch-zooms = Touchpad: lo scorrimento sposta la vista, Ctrl+scorrimento o pizzico esegue lo zoom
|
||||
.interface-scale = Scala dell'interfaccia
|
||||
.zoom-factor = Fattore di zoom
|
||||
|
||||
@@ -1541,6 +1541,10 @@ common =
|
||||
.user-preferences = ユーザー設定
|
||||
.zoom = ズーム
|
||||
.reverse-mouse-wheel-zoom-zoomwheel = マウス ホイールのズーム方向を反転 (ZOOMWHEEL)
|
||||
.navigation-style = ナビゲーション スタイル
|
||||
.nav-style-cad = CAD: Shift + 中ボタンで回転
|
||||
.nav-style-blender = Blender: 中ボタンで回転、Shift で画面移動
|
||||
.nav-style-catia = CATIA: 中 + 左ボタンで回転
|
||||
.touchpad-scroll-pans-ctrl-scroll-or-pinch-zooms = タッチパッド: スクロールで画面移動、Ctrl+スクロールまたはピンチでズーム
|
||||
.interface-scale = インターフェースの拡大率
|
||||
.zoom-factor = ズーム倍率
|
||||
|
||||
@@ -1550,6 +1550,10 @@ common =
|
||||
.user-preferences = 사용자 환경설정
|
||||
.zoom = 줌
|
||||
.reverse-mouse-wheel-zoom-zoomwheel = 마우스 휠 줌 방향 반전 (ZOOMWHEEL)
|
||||
.navigation-style = 탐색 스타일
|
||||
.nav-style-cad = CAD: Shift + 가운데 버튼으로 회전
|
||||
.nav-style-blender = Blender: 가운데 버튼으로 회전, Shift로 이동
|
||||
.nav-style-catia = CATIA: 가운데 + 왼쪽 버튼으로 회전
|
||||
.touchpad-scroll-pans-ctrl-scroll-or-pinch-zooms = 터치패드: 스크롤은 화면 이동, Ctrl+스크롤 또는 핀치는 확대/축소
|
||||
.interface-scale = 인터페이스 배율
|
||||
.zoom-factor = 줌 배율
|
||||
|
||||
@@ -1556,6 +1556,10 @@ common =
|
||||
.user-preferences = ການຕັ້ງຄ່າສ່ວນຕົວຂອງຜູ້ໃຊ້
|
||||
.zoom = ຊູມ
|
||||
.reverse-mouse-wheel-zoom-zoomwheel = ສະຫຼັບທິດທາງການໝຸນລໍ້ເມົາສ໌ຊູມ (ZOOMWHEEL)
|
||||
.navigation-style = ຮູບແບບການນຳທາງ
|
||||
.nav-style-cad = CAD: Shift + ປຸ່ມກາງ ໝຸນ
|
||||
.nav-style-blender = Blender: ປຸ່ມກາງ ໝຸນ, Shift ເລື່ອນ
|
||||
.nav-style-catia = CATIA: ປຸ່ມກາງ + ຊ້າຍ ໝຸນ
|
||||
.touchpad-scroll-pans-ctrl-scroll-or-pinch-zooms = ທັດແພດ: ເລື່ອນເພື່ອຍ້າຍມຸມມອງ, Ctrl+ເລື່ອນ ຫຼື ບີບເພື່ອຊູມ
|
||||
.interface-scale = ຂະໜາດສ່ວນຕິດຕໍ່
|
||||
.zoom-factor = ຕົວຄູນການຊູມ
|
||||
|
||||
@@ -1549,6 +1549,10 @@ common =
|
||||
.user-preferences = Gebruikersvoorkeuren
|
||||
.zoom = Zoomen
|
||||
.reverse-mouse-wheel-zoom-zoomwheel = Muiswielzoom omkeren (ZOOMWHEEL)
|
||||
.navigation-style = Navigatiestijl
|
||||
.nav-style-cad = CAD: Shift + middelste knop draait
|
||||
.nav-style-blender = Blender: middelste knop draait, Shift verschuift
|
||||
.nav-style-catia = CATIA: middelste + linkerknop draait
|
||||
.touchpad-scroll-pans-ctrl-scroll-or-pinch-zooms = Touchpad: scrollen verschuift, Ctrl+scrollen of knijpen zoomt
|
||||
.interface-scale = Interfaceschaal
|
||||
.zoom-factor = Zoomfactor
|
||||
|
||||
@@ -1550,6 +1550,10 @@ common =
|
||||
.user-preferences = Preferencje użytkownika
|
||||
.zoom = Powiększenie
|
||||
.reverse-mouse-wheel-zoom-zoomwheel = Odwróć powiększanie kółkiem myszy (ZOOMWHEEL)
|
||||
.navigation-style = Styl nawigacji
|
||||
.nav-style-cad = CAD: Shift + środkowy przycisk obraca
|
||||
.nav-style-blender = Blender: środkowy przycisk obraca, Shift przesuwa
|
||||
.nav-style-catia = CATIA: środkowy + lewy przycisk obraca
|
||||
.touchpad-scroll-pans-ctrl-scroll-or-pinch-zooms = Touchpad: przewijanie przesuwa widok, Ctrl+przewijanie lub szczypanie powiększa
|
||||
.interface-scale = Skala interfejsu
|
||||
.zoom-factor = Współczynnik powiększenia
|
||||
|
||||
@@ -1551,6 +1551,10 @@ common =
|
||||
.user-preferences = Preferências do usuário
|
||||
.zoom = Zoom
|
||||
.reverse-mouse-wheel-zoom-zoomwheel = Inverter o zoom da roda do mouse (ZOOMWHEEL)
|
||||
.navigation-style = Estilo de navegação
|
||||
.nav-style-cad = CAD: Shift + botão do meio orbita
|
||||
.nav-style-blender = Blender: botão do meio orbita, Shift desloca
|
||||
.nav-style-catia = CATIA: botão do meio + esquerdo orbita
|
||||
.touchpad-scroll-pans-ctrl-scroll-or-pinch-zooms = Touchpad: rolar move a vista, Ctrl+rolar ou pinçar aplica zoom
|
||||
.interface-scale = Escala da interface
|
||||
.zoom-factor = Fator de zoom
|
||||
|
||||
@@ -1554,6 +1554,10 @@ common =
|
||||
.user-preferences = Пользовательские настройки
|
||||
.zoom = Зумирование
|
||||
.reverse-mouse-wheel-zoom-zoomwheel = Обратить зумирование колесом мыши (ZOOMWHEEL)
|
||||
.navigation-style = Стиль навигации
|
||||
.nav-style-cad = CAD: Shift + средняя кнопка — вращение
|
||||
.nav-style-blender = Blender: средняя кнопка — вращение, Shift — сдвиг
|
||||
.nav-style-catia = CATIA: средняя + левая кнопка — вращение
|
||||
.touchpad-scroll-pans-ctrl-scroll-or-pinch-zooms = Тачпад: прокрутка панорамирует, Ctrl+прокрутка или щипок масштабирует
|
||||
.interface-scale = Масштаб интерфейса
|
||||
.zoom-factor = Коэффициент зумирования
|
||||
|
||||
@@ -1537,6 +1537,10 @@ common =
|
||||
.user-preferences = Kullanıcı tercihleri
|
||||
.zoom = Yakınlaştırma
|
||||
.reverse-mouse-wheel-zoom-zoomwheel = Fare tekerleği yakınlaştırmasını ters çevir (ZOOMWHEEL)
|
||||
.navigation-style = Gezinme stili
|
||||
.nav-style-cad = CAD: Shift + orta tuş döndürür
|
||||
.nav-style-blender = Blender: orta tuş döndürür, Shift kaydırır
|
||||
.nav-style-catia = CATIA: orta + sol tuş döndürür
|
||||
.touchpad-scroll-pans-ctrl-scroll-or-pinch-zooms = Dokunmatik yüzey: kaydırma kaydırır, Ctrl+kaydırma veya sıkıştırma yakınlaştırır
|
||||
.interface-scale = Arayüz ölçeği
|
||||
.zoom-factor = Yakınlaştırma çarpanı
|
||||
|
||||
@@ -1538,6 +1538,10 @@ common =
|
||||
.user-preferences = 用户首选项
|
||||
.zoom = 缩放
|
||||
.reverse-mouse-wheel-zoom-zoomwheel = 反转鼠标滚轮缩放方向 (ZOOMWHEEL)
|
||||
.navigation-style = 导航样式
|
||||
.nav-style-cad = CAD:Shift + 中键旋转
|
||||
.nav-style-blender = Blender:中键旋转,Shift 平移
|
||||
.nav-style-catia = CATIA:中键 + 左键旋转
|
||||
.touchpad-scroll-pans-ctrl-scroll-or-pinch-zooms = 触控板:滚动平移,Ctrl+滚动或捏合缩放
|
||||
.interface-scale = 界面缩放
|
||||
.zoom-factor = 缩放系数
|
||||
|
||||
@@ -1550,6 +1550,10 @@ common =
|
||||
.user-preferences = 使用者偏好設定
|
||||
.zoom = 縮放
|
||||
.reverse-mouse-wheel-zoom-zoomwheel = 反轉滑鼠滾輪縮放方向 (ZOOMWHEEL)
|
||||
.navigation-style = 導覽樣式
|
||||
.nav-style-cad = CAD:Shift + 中鍵旋轉
|
||||
.nav-style-blender = Blender:中鍵旋轉,Shift 平移
|
||||
.nav-style-catia = CATIA:中鍵 + 左鍵旋轉
|
||||
.touchpad-scroll-pans-ctrl-scroll-or-pinch-zooms = 觸控板:捲動平移,Ctrl+捲動或捏合縮放
|
||||
.interface-scale = 介面縮放
|
||||
.zoom-factor = 縮放係數
|
||||
|
||||
@@ -650,6 +650,11 @@ pub(super) struct OpenCADStudio {
|
||||
polar_increment_deg: f32,
|
||||
/// Reverse the mouse-wheel zoom direction when true (ZOOMWHEEL = 1).
|
||||
zoom_wheel_reversed: bool,
|
||||
/// Which mouse gestures pan and orbit the model view.
|
||||
navigation_style: crate::app::settings::NavigationStyle,
|
||||
/// CATIA navigation: the left button went down while the middle one was
|
||||
/// held, so the middle drag orbits until it is released.
|
||||
nav_left_with_middle: bool,
|
||||
/// Scroll pans and Ctrl+scroll zooms (touchpads); see `scroll_intent`.
|
||||
touchpad_pan: bool,
|
||||
/// Multi-finger gestures on a touch screen.
|
||||
@@ -2657,6 +2662,7 @@ pub enum Message {
|
||||
CommandLineOpacityChanged(u8),
|
||||
/// Toggle reversing the mouse-wheel zoom direction (ZOOMWHEEL).
|
||||
ZoomWheelReversedChanged(bool),
|
||||
NavigationStyleChanged(crate::app::settings::NavigationStyle),
|
||||
TouchpadPanChanged(bool),
|
||||
/// Options: show the pull-down menus (MENUBAR).
|
||||
MenuBarChanged(bool),
|
||||
@@ -4632,6 +4638,8 @@ impl OpenCADStudio {
|
||||
polar_mode: false,
|
||||
polar_increment_deg: 45.0,
|
||||
zoom_wheel_reversed: false,
|
||||
navigation_style: Default::default(),
|
||||
nav_left_with_middle: false,
|
||||
touchpad_pan: false,
|
||||
touch: Default::default(),
|
||||
touch_offset: None,
|
||||
|
||||
@@ -204,6 +204,33 @@ pub fn zoom_notch_percent(factor: i32) -> f32 {
|
||||
(1.0 - ratio) * 100.0
|
||||
}
|
||||
|
||||
/// Which mouse gestures pan and orbit the model view.
|
||||
#[derive(Clone, Copy, Debug, Default, PartialEq, Eq, Serialize, Deserialize)]
|
||||
#[serde(rename_all = "snake_case")]
|
||||
pub enum NavigationStyle {
|
||||
/// Middle button pans; Shift + middle button orbits.
|
||||
#[default]
|
||||
Cad,
|
||||
/// Middle button orbits; Shift + middle button pans.
|
||||
Blender,
|
||||
/// Middle button pans; middle and left buttons together orbit.
|
||||
Catia,
|
||||
}
|
||||
|
||||
impl NavigationStyle {
|
||||
pub const ALL: [NavigationStyle; 3] = [Self::Cad, Self::Blender, Self::Catia];
|
||||
}
|
||||
|
||||
impl std::fmt::Display for NavigationStyle {
|
||||
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
|
||||
f.write_str(&match self {
|
||||
Self::Cad => crate::t!("CAD: Shift + middle button orbits"),
|
||||
Self::Blender => crate::t!("Blender: middle button orbits, Shift pans"),
|
||||
Self::Catia => crate::t!("CATIA: middle + left button orbits"),
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
/// Active pair of axes while isometric drafting is enabled.
|
||||
#[derive(Clone, Copy, Debug, Default, PartialEq, Eq, Serialize, Deserialize)]
|
||||
pub enum IsoPlane {
|
||||
@@ -388,6 +415,7 @@ pub struct UserSettings {
|
||||
pub polar: bool,
|
||||
pub polar_increment_deg: f32,
|
||||
pub zoom_wheel_reversed: bool,
|
||||
pub navigation_style: NavigationStyle,
|
||||
/// Scrolling pans and Ctrl+scroll (a touchpad pinch) zooms, for a
|
||||
/// touchpad that reports two-finger drags as wheel scrolls.
|
||||
pub touchpad_pan: bool,
|
||||
@@ -891,6 +919,7 @@ impl Default for UserSettings {
|
||||
polar: false,
|
||||
polar_increment_deg: 45.0,
|
||||
zoom_wheel_reversed: false,
|
||||
navigation_style: NavigationStyle::Cad,
|
||||
touchpad_pan: false,
|
||||
ui_scale_percent: 100,
|
||||
zoom_factor: 60,
|
||||
|
||||
@@ -778,6 +778,7 @@ impl OpenCADStudio {
|
||||
polar: self.polar_mode,
|
||||
polar_increment_deg: self.polar_increment_deg,
|
||||
zoom_wheel_reversed: self.zoom_wheel_reversed,
|
||||
navigation_style: self.navigation_style,
|
||||
touchpad_pan: self.touchpad_pan,
|
||||
ui_scale_percent: self.ui_scale_percent,
|
||||
zoom_factor: self.zoom_factor,
|
||||
@@ -913,6 +914,7 @@ impl OpenCADStudio {
|
||||
self.polar_mode = s.polar;
|
||||
self.polar_increment_deg = s.polar_increment_deg;
|
||||
self.zoom_wheel_reversed = s.zoom_wheel_reversed;
|
||||
self.navigation_style = s.navigation_style;
|
||||
self.touchpad_pan = s.touchpad_pan;
|
||||
self.ui_scale_percent = crate::app::settings::clamp_ui_scale(s.ui_scale_percent);
|
||||
self.zoom_factor = crate::app::settings::clamp_zoom_factor(s.zoom_factor);
|
||||
|
||||
@@ -4482,6 +4482,25 @@ impl OpenCADStudio {
|
||||
Task::none()
|
||||
}
|
||||
|
||||
// CATIA navigation: the left button pressed during a middle drag
|
||||
// turns the drag into an orbit instead of starting a pick.
|
||||
Message::ViewportLeftPressAt(_) | Message::ViewportLeftPress | Message::PanePress(_)
|
||||
if self.navigation_style == crate::app::settings::NavigationStyle::Catia
|
||||
&& self.tabs[self.active_tab]
|
||||
.scene
|
||||
.selection
|
||||
.borrow()
|
||||
.input
|
||||
.middle_down =>
|
||||
{
|
||||
self.nav_left_with_middle = true;
|
||||
Task::none()
|
||||
}
|
||||
Message::ViewportLeftRelease | Message::PaneRelease(_) if self.nav_left_with_middle => {
|
||||
self.nav_left_with_middle = false;
|
||||
Task::none()
|
||||
}
|
||||
|
||||
Message::ViewportMove(p) => self.on_viewport_move(p),
|
||||
|
||||
Message::ViewportExit => self.on_viewport_exit(),
|
||||
@@ -4686,6 +4705,7 @@ impl OpenCADStudio {
|
||||
}
|
||||
|
||||
Message::ViewportMiddleRelease => {
|
||||
self.nav_left_with_middle = false;
|
||||
let i = self.active_tab;
|
||||
let mut sel = self.tabs[i].scene.selection.borrow_mut();
|
||||
sel.input.middle_down = false;
|
||||
@@ -9225,6 +9245,12 @@ impl OpenCADStudio {
|
||||
Task::none()
|
||||
}
|
||||
|
||||
Message::NavigationStyleChanged(style) => {
|
||||
self.navigation_style = style;
|
||||
self.persist_settings_if_changed();
|
||||
Task::none()
|
||||
}
|
||||
|
||||
Message::MenuBarChanged(shown) => {
|
||||
self.show_menu_bar = shown;
|
||||
self.persist_settings_if_changed();
|
||||
|
||||
@@ -1416,7 +1416,7 @@ impl OpenCADStudio {
|
||||
// — the requested Zoom=wheel / Pan=MMB / Rotate=Shift+MMB
|
||||
// scheme (#229). Floating viewports and paper keep the
|
||||
// plain MMB pan.
|
||||
if self.shift_down || self.tabs[i].orbit_mode {
|
||||
if self.middle_drag_orbits(i) {
|
||||
if self.tabs[i].scene.active_viewport.is_some() {
|
||||
// Orbit the floating viewport's own model view.
|
||||
drop(sel);
|
||||
@@ -3165,6 +3165,18 @@ impl OpenCADStudio {
|
||||
Task::none()
|
||||
}
|
||||
|
||||
/// Whether a middle-button drag orbits rather than pans, by the
|
||||
/// navigation style (an armed orbit tool always orbits).
|
||||
fn middle_drag_orbits(&self, i: usize) -> bool {
|
||||
use crate::app::settings::NavigationStyle;
|
||||
self.tabs[i].orbit_mode
|
||||
|| match self.navigation_style {
|
||||
NavigationStyle::Cad => self.shift_down,
|
||||
NavigationStyle::Blender => !self.shift_down,
|
||||
NavigationStyle::Catia => self.nav_left_with_middle,
|
||||
}
|
||||
}
|
||||
|
||||
pub(crate) fn on_viewport_exit(&mut self) -> Task<Message> {
|
||||
let i = self.active_tab;
|
||||
self.tabs[i].measurement.live_visible = false;
|
||||
|
||||
@@ -312,6 +312,7 @@ impl OpenCADStudio {
|
||||
show_ribbon: !self.ribbon_closed,
|
||||
hatch_associative: self.hatch_associative,
|
||||
zoom_wheel_reversed: self.zoom_wheel_reversed,
|
||||
navigation_style: self.navigation_style,
|
||||
touchpad_pan: self.touchpad_pan,
|
||||
ui_scale_percent: self.ui_scale_percent,
|
||||
zoom_factor: self.zoom_factor,
|
||||
|
||||
@@ -5070,6 +5070,10 @@ pub(super) fn message_attribute(source: &str) -> Option<(&'static str, &'static
|
||||
"User Preferences" => Some(("common", "user-preferences")),
|
||||
"Zoom" => Some(("common", "zoom")),
|
||||
"Reverse mouse wheel zoom (ZOOMWHEEL)" => Some(("common", "reverse-mouse-wheel-zoom-zoomwheel")),
|
||||
"Navigation style" => Some(("common", "navigation-style")),
|
||||
"CAD: Shift + middle button orbits" => Some(("common", "nav-style-cad")),
|
||||
"Blender: middle button orbits, Shift pans" => Some(("common", "nav-style-blender")),
|
||||
"CATIA: middle + left button orbits" => Some(("common", "nav-style-catia")),
|
||||
"Touchpad: scroll pans, Ctrl+scroll or pinch zooms" => Some(("common", "touchpad-scroll-pans-ctrl-scroll-or-pinch-zooms")),
|
||||
"Interface scale" => Some(("common", "interface-scale")),
|
||||
"Zoom factor" => Some(("common", "zoom-factor")),
|
||||
|
||||
@@ -63,6 +63,8 @@ pub struct AppPrefs {
|
||||
pub hatch_associative: bool,
|
||||
/// ZOOMWHEEL: reverse the mouse-wheel zoom direction.
|
||||
pub zoom_wheel_reversed: bool,
|
||||
/// Which mouse gestures pan and orbit the model view.
|
||||
pub navigation_style: crate::app::settings::NavigationStyle,
|
||||
/// Scroll pans and Ctrl+scroll zooms (touchpads).
|
||||
pub touchpad_pan: bool,
|
||||
/// Interface scale in percent.
|
||||
@@ -1274,6 +1276,16 @@ pub fn view_window<'a>(
|
||||
Space::new().height(10),
|
||||
spacemouse,
|
||||
Space::new().height(12),
|
||||
text(crate::t!("Navigation style")).size(15),
|
||||
Space::new().height(10),
|
||||
iced::widget::pick_list(
|
||||
Some(prefs.navigation_style),
|
||||
crate::app::settings::NavigationStyle::ALL,
|
||||
|style| style.to_string(),
|
||||
)
|
||||
.on_select(Message::NavigationStyleChanged)
|
||||
.text_size(12),
|
||||
Space::new().height(12),
|
||||
text(crate::t!("Zoom")).size(15),
|
||||
Space::new().height(10),
|
||||
row![
|
||||
|
||||
Reference in new issue
Block a user