Diff
checker
टेक्स्ट
टेक्स्ट
छवियां
दस्तावेज़
Excel
फ़ोल्डर्स
Legal
Enterprise
डेस्कटॉप
मूल्य
साइन इन करें
Diffchecker डेस्कटॉप डाउनलोड करें
टेक्स्ट की तुलना करें
दो टेक्स्ट फ़ाइलों के बीच अंतर ढूंढें
उपकरण
इतिहास
रियल-टाइम एडिटर
अपरिवर्तित संक्षिप्त करें
लाइन रैप बंद
लेआउट
विभाजित
संयुक्त
परिवर्तन हाइलाइट करें
स्मार्ट
शब्द
अक्षर
सिंटैक्स हाइलाइटिंग
सिंटैक्स चुनें
अनदेखा करें
टेक्स्ट बदलें
पहले अंतर पर जाएँ
इनपुट संपादित करें
Diffchecker Desktop
Diffchecker चलाने का सबसे सुरक्षित तरीका। Diffchecker Desktop ऐप पाएं: आपके diffs कभी आपके कंप्यूटर से बाहर नहीं जाते!
Desktop पाएं
SampleEtoModelessForm
बनाया गया
2 वर्ष पहले
Diff कभी समाप्त नहीं होता
साफ़
निर्यात करें
शेयर करें
समझाएं
9 हटाए गए
लाइनें
कुल
हटाया गया
अक्षर
कुल
हटाया गया
इस सुविधा का उपयोग जारी रखने के लिए, अपग्रेड करें
Diff
checker
Pro
मूल्य देखें
226 लाइनें
सभी को कॉपी करें
36 जोड़े गए
लाइनें
कुल
जोड़ा गया
अक्षर
कुल
जोड़ा गया
इस सुविधा का उपयोग जारी रखने के लिए, अपग्रेड करें
Diff
checker
Pro
मूल्य देखें
251 लाइनें
सभी को कॉपी करें
कॉपी
कॉपी हुआ
कॉपी
कॉपी हुआ
#! python3
################################################################################
################################################################################
# SampleEtoModelessForm.py
# SampleEtoModelessForm.py
# Copyright (c) 2017 Robert McNeel & Associates.
# Copyright (c) 2017 Robert McNeel & Associates.
# See License.md in the root of this repository for details.
# See License.md in the root of this repository for details.
################################################################################
################################################################################
import System
import System
import Rhino
import Rhino
import Rhino.UI
import Rhino.UI
import Eto.Drawing as drawing
import Eto.Drawing as drawing
import Eto.Forms as forms
import Eto.Forms as forms
import scriptcontext as sc
import scriptcontext as sc
################################################################################
################################################################################
# SampleEtoModelessForm class
# SampleEtoModelessForm class
################################################################################
################################################################################
class SampleEtoModelessForm(forms.Form):
class SampleEtoModelessForm(forms.Form):
# Initializer
# Initializer
def __init__(self):
def __init__(self):
कॉपी
कॉपी हुआ
कॉपी
कॉपी हुआ
super().__init__()
self.m_selecting = False
self.m_selecting = False
# Basic form initialization
# Basic form initialization
self.Initialize()
self.Initialize()
# Create the form's controls
# Create the form's controls
self.CreateFormControls()
self.CreateFormControls()
# Fill the form's listbox
# Fill the form's listbox
self.FillListBox()
self.FillListBox()
# Create Rhino event handlers
# Create Rhino event handlers
self.CreateEvents()
self.CreateEvents()
# Basic form initialization
# Basic form initialization
def Initialize(self):
def Initialize(self):
self.Title = 'Sample Modeless Form'
self.Title = 'Sample Modeless Form'
self.Padding = drawing.Padding(5)
self.Padding = drawing.Padding(5)
self.Resizable = True
self.Resizable = True
self.Maximizable = False
self.Maximizable = False
self.Minimizable = False
self.Minimizable = False
self.ShowInTaskbar = False
self.ShowInTaskbar = False
self.MinimumSize = drawing.Size(200, 150)
self.MinimumSize = drawing.Size(200, 150)
# FormClosed event handler
# FormClosed event handler
self.Closed += self.OnFormClosed
self.Closed += self.OnFormClosed
# Adds a listitem to the listbox
# Adds a listitem to the listbox
def AddObject(self, obj):
def AddObject(self, obj):
item = forms.ListItem()
item = forms.ListItem()
item.Text = obj.ShortDescription(False)
item.Text = obj.ShortDescription(False)
if obj.Name:
if obj.Name:
item.Text += " - " + obj.Name
item.Text += " - " + obj.Name
item.Tag = obj.Id
item.Tag = obj.Id
self.m_listbox.Items.Add(item)
self.m_listbox.Items.Add(item)
# Fills the listbox with document objects
# Fills the listbox with document objects
def FillListBox(self):
def FillListBox(self):
iter = Rhino.DocObjects.ObjectEnumeratorSettings()
iter = Rhino.DocObjects.ObjectEnumeratorSettings()
iter.NormalObjects = True
iter.NormalObjects = True
iter.LockedObjects = False
iter.LockedObjects = False
iter.IncludeLights = True
iter.IncludeLights = True
iter.IncludeGrips = False
iter.IncludeGrips = False
objects = sc.doc.Objects.GetObjectList(iter)
objects = sc.doc.Objects.GetObjectList(iter)
for obj in objects:
for obj in objects:
self.AddObject(obj)
self.AddObject(obj)
# CloseDocument event handler
# CloseDocument event handler
def OnCloseDocument(self, sender, e):
def OnCloseDocument(self, sender, e):
self.m_listbox.Items.Clear()
self.m_listbox.Items.Clear()
# NewDocument event handler
# NewDocument event handler
def OnNewDocument(self, sender, e):
def OnNewDocument(self, sender, e):
self.FillListBox()
self.FillListBox()
# EndOpenDocument event handler
# EndOpenDocument event handler
def OnEndOpenDocument(self, sender, e):
def OnEndOpenDocument(self, sender, e):
self.FillListBox()
self.FillListBox()
# OnAddRhinoObject event handler
# OnAddRhinoObject event handler
def OnAddRhinoObject(self, sender, e):
def OnAddRhinoObject(self, sender, e):
self.AddObject(e.TheObject)
self.AddObject(e.TheObject)
# OnDeleteRhinoObject event handler
# OnDeleteRhinoObject event handler
def OnDeleteRhinoObject(self, sender, e):
def OnDeleteRhinoObject(self, sender, e):
for item in self.m_listbox.Items:
for item in self.m_listbox.Items:
if item.Tag == e.ObjectId:
if item.Tag == e.ObjectId:
self.m_listbox.Items.Remove(item)
self.m_listbox.Items.Remove(item)
break
break
# OnSelectObjects event handler
# OnSelectObjects event handler
def OnSelectObjects(self, sender, e):
def OnSelectObjects(self, sender, e):
if self.m_selecting == True:
if self.m_selecting == True:
return
return
if e.RhinoObjects.Length == 1:
if e.RhinoObjects.Length == 1:
i = 0
i = 0
for item in self.m_listbox.Items:
for item in self.m_listbox.Items:
if item.Tag == e.RhinoObjects[0].Id:
if item.Tag == e.RhinoObjects[0].Id:
self.m_listbox.SelectedIndex = i
self.m_listbox.SelectedIndex = i
break
break
else:
else:
i += 1
i += 1
else:
else:
self.m_listbox.SelectedIndex = -1
self.m_listbox.SelectedIndex = -1
# OnDeselectAllObjects event handler
# OnDeselectAllObjects event handler
def OnDeselectAllObjects(self, sender, e):
def OnDeselectAllObjects(self, sender, e):
if self.m_selecting == True:
if self.m_selecting == True:
return
return
self.m_listbox.SelectedIndex = -1
self.m_listbox.SelectedIndex = -1
# Create Rhino event handlers
# Create Rhino event handlers
def CreateEvents(self):
def CreateEvents(self):
Rhino.RhinoDoc.CloseDocument += self.OnCloseDocument
Rhino.RhinoDoc.CloseDocument += self.OnCloseDocument
Rhino.RhinoDoc.NewDocument += self.OnNewDocument
Rhino.RhinoDoc.NewDocument += self.OnNewDocument
Rhino.RhinoDoc.EndOpenDocument += self.OnEndOpenDocument
Rhino.RhinoDoc.EndOpenDocument += self.OnEndOpenDocument
Rhino.RhinoDoc.AddRhinoObject += self.OnAddRhinoObject
Rhino.RhinoDoc.AddRhinoObject += self.OnAddRhinoObject
Rhino.RhinoDoc.DeleteRhinoObject += self.OnDeleteRhinoObject
Rhino.RhinoDoc.DeleteRhinoObject += self.OnDeleteRhinoObject
Rhino.RhinoDoc.SelectObjects += self.OnSelectObjects
Rhino.RhinoDoc.SelectObjects += self.OnSelectObjects
Rhino.RhinoDoc.DeselectAllObjects += self.OnDeselectAllObjects
Rhino.RhinoDoc.DeselectAllObjects += self.OnDeselectAllObjects
# Remove Rhino event handlers
# Remove Rhino event handlers
def RemoveEvents(self):
def RemoveEvents(self):
Rhino.RhinoDoc.CloseDocument -= self.OnCloseDocument
Rhino.RhinoDoc.CloseDocument -= self.OnCloseDocument
Rhino.RhinoDoc.NewDocument -= self.OnNewDocument
Rhino.RhinoDoc.NewDocument -= self.OnNewDocument
Rhino.RhinoDoc.EndOpenDocument -= self.OnEndOpenDocument
Rhino.RhinoDoc.EndOpenDocument -= self.OnEndOpenDocument
Rhino.RhinoDoc.AddRhinoObject -= self.OnAddRhinoObject
Rhino.RhinoDoc.AddRhinoObject -= self.OnAddRhinoObject
Rhino.RhinoDoc.DeleteRhinoObject -= self.OnDeleteRhinoObject
Rhino.RhinoDoc.DeleteRhinoObject -= self.OnDeleteRhinoObject
Rhino.RhinoDoc.SelectObjects -= self.OnSelectObjects
Rhino.RhinoDoc.SelectObjects -= self.OnSelectObjects
Rhino.RhinoDoc.DeselectAllObjects -= self.OnDeselectAllObjects
Rhino.RhinoDoc.DeselectAllObjects -= self.OnDeselectAllObjects
# Create all of the controls used by the form
# Create all of the controls used by the form
def CreateFormControls(self):
def CreateFormControls(self):
# Create table layout
# Create table layout
layout = forms.TableLayout()
layout = forms.TableLayout()
layout.Padding = drawing.Padding(10)
layout.Padding = drawing.Padding(10)
layout.Spacing = drawing.Size(5, 5)
layout.Spacing = drawing.Size(5, 5)
# Add controls to layout
# Add controls to layout
कॉपी
कॉपी हुआ
कॉपी
कॉपी हुआ
layout.Rows.Add(
forms.Label(
Text = 'Rhino Objects:'
))
label =
forms.Label(
)
label.
Text = 'Rhino Objects:'
cell = forms.TableCell()
cell.Control = label
row = forms.TableRow()
row.Cells.Add(cell)
layout.Rows.Add(row)
layout.Rows.Add(self.CreateListBoxRow())
layout.Rows.Add(self.CreateListBoxRow())
layout.Rows.Add(self.CreateButtonRow())
layout.Rows.Add(self.CreateButtonRow())
# Set the content
# Set the content
self.Content = layout
self.Content = layout
# Listbox.SelectedIndexChanged event handler
# Listbox.SelectedIndexChanged event handler
def OnSelectedIndexChanged(self, sender, e):
def OnSelectedIndexChanged(self, sender, e):
index = self.m_listbox.SelectedIndex
index = self.m_listbox.SelectedIndex
if index >= 0:
if index >= 0:
self.m_selecting = True
self.m_selecting = True
item = self.m_listbox.Items[index]
item = self.m_listbox.Items[index]
Rhino.RhinoApp.RunScript("_SelNone", False)
Rhino.RhinoApp.RunScript("_SelNone", False)
Rhino.RhinoApp.RunScript("_SelId " + item.Tag.ToString() + " _Enter", False)
Rhino.RhinoApp.RunScript("_SelId " + item.Tag.ToString() + " _Enter", False)
self.m_selecting = False
self.m_selecting = False
# Called by CreateFormControls to creates the
# Called by CreateFormControls to creates the
# table row that contains the listbox
# table row that contains the listbox
def CreateListBoxRow(self):
def CreateListBoxRow(self):
# Create the listbox
# Create the listbox
self.m_listbox = forms.ListBox()
self.m_listbox = forms.ListBox()
self.m_listbox.Size = drawing.Size(200, 100)
self.m_listbox.Size = drawing.Size(200, 100)
self.m_listbox.SelectedIndexChanged += self.OnSelectedIndexChanged
self.m_listbox.SelectedIndexChanged += self.OnSelectedIndexChanged
# Create the table row
# Create the table row
कॉपी
कॉपी हुआ
कॉपी
कॉपी हुआ
table_cell = forms.TableCell()
table_cell.Control = self.m_listbox
table_row = forms.TableRow()
table_row = forms.TableRow()
table_row.ScaleHeight = True
table_row.ScaleHeight = True
कॉपी
कॉपी हुआ
कॉपी
कॉपी हुआ
table_row.Cells.Add(
self.m_listbox
)
table_row.Cells.Add(
table_cell
)
return table_row
return table_row
# 'Select' button click handler
# 'Select' button click handler
def OnSelectClick(self, sender, e):
def OnSelectClick(self, sender, e):
self.m_selecting = True
self.m_selecting = True
self.m_listbox.SelectedIndex = -1
self.m_listbox.SelectedIndex = -1
Rhino.RhinoApp.RunScript("_SelAll", False)
Rhino.RhinoApp.RunScript("_SelAll", False)
self.m_selecting = False
self.m_selecting = False
# 'Clear' button click handler
# 'Clear' button click handler
def OnClearClick(self, sender, e):
def OnClearClick(self, sender, e):
self.m_selecting = True
self.m_selecting = True
self.m_listbox.SelectedIndex = -1
self.m_listbox.SelectedIndex = -1
Rhino.RhinoApp.RunScript("_SelNone", False)
Rhino.RhinoApp.RunScript("_SelNone", False)
self.m_selecting = False
self.m_selecting = False
# Called by CreateFormControls to creates the
# Called by CreateFormControls to creates the
# table row that contains the button controls.
# table row that contains the button controls.
def CreateButtonRow(self):
def CreateButtonRow(self):
# Select button
# Select button
कॉपी
कॉपी हुआ
कॉपी
कॉपी हुआ
select_button = forms.Button(
Text = 'Select All'
)
select_button = forms.Button(
)
select_button.
Text = 'Select All'
select_button.Click += self.OnSelectClick
select_button.Click += self.OnSelectClick
# Clear button
# Clear button
कॉपी
कॉपी हुआ
कॉपी
कॉपी हुआ
clear_button = forms.Button(
Text = 'Clear'
)
clear_button = forms.Button(
)
clear_button.
Text = 'Clear'
clear_button.Click += self.OnClearClick
clear_button.Click += self.OnClearClick
# Create layout
# Create layout
कॉपी
कॉपी हुआ
कॉपी
कॉपी हुआ
layout = forms.TableLayout(
Spacing = drawing.Size(5, 5)
)
layout = forms.TableLayout(
)
layout.Rows.Add(forms.TableRow(None, select_button, clear_button, None))
layout.
Spacing = drawing.Size(5, 5)
return
layout
cell_a = forms.TableCell()
cell_a.Control = None
cell_b = forms.TableCell()
cell_b.Control = select_button
cell_c = forms.TableCell()
cell_c.Control = clear_button
cell_d = forms.TableCell()
cell_d.Control = None
row = forms.TableRow()
row.Cells.Add(cell_a)
row.Cells.Add(cell_b)
row.Cells.Add(cell_c)
row.Cells.Add(cell_d)
return
row
# Form Closed event handler
# Form Closed event handler
def OnFormClosed(self, sender, e):
def OnFormClosed(self, sender, e):
# Remove the events added in the initializer
# Remove the events added in the initializer
self.RemoveEvents()
self.RemoveEvents()
# Dispose of the form and remove it from the sticky dictionary
# Dispose of the form and remove it from the sticky dictionary
if sc.sticky.has_key('sample_modeless_form'):
if sc.sticky.has_key('sample_modeless_form'):
form = sc.sticky['sample_modeless_form']
form = sc.sticky['sample_modeless_form']
if form:
if form:
form.Dispose()
form.Dispose()
form = None
form = None
कॉपी
कॉपी हुआ
कॉपी
कॉपी हुआ
sc.sticky.
Remove
('sample_modeless_form')
sc.sticky.
pop
('sample_modeless_form')
################################################################################
################################################################################
# TestSampleEtoModelessForm function
# TestSampleEtoModelessForm function
################################################################################
################################################################################
def TestSampleEtoModelessForm():
def TestSampleEtoModelessForm():
# See if the form is already visible
# See if the form is already visible
if sc.sticky.has_key('sample_modeless_form'):
if sc.sticky.has_key('sample_modeless_form'):
return
return
# Create and show form
# Create and show form
form = SampleEtoModelessForm()
form = SampleEtoModelessForm()
form.Owner = Rhino.UI.RhinoEtoApp.MainWindow
form.Owner = Rhino.UI.RhinoEtoApp.MainWindow
form.Show()
form.Show()
# Add the form to the sticky dictionary so it
# Add the form to the sticky dictionary so it
# survives when the main function ends.
# survives when the main function ends.
sc.sticky['sample_modeless_form'] = form
sc.sticky['sample_modeless_form'] = form
################################################################################
################################################################################
# Check to see if this file is being executed as the 'main' python
# Check to see if this file is being executed as the 'main' python
# script instead of being used as a module by some other python script
# script instead of being used as a module by some other python script
# This allows us to use the module which ever way we want.
# This allows us to use the module which ever way we want.
################################################################################
################################################################################
if __name__ == '__main__':
if __name__ == '__main__':
TestSampleEtoModelessForm()
TestSampleEtoModelessForm()
सेव किए गए Diffs
ऑरिजनल टेक्स्ट
फ़ाइल खोलें
################################################################################ # SampleEtoModelessForm.py # Copyright (c) 2017 Robert McNeel & Associates. # See License.md in the root of this repository for details. ################################################################################ import System import Rhino import Rhino.UI import Eto.Drawing as drawing import Eto.Forms as forms import scriptcontext as sc ################################################################################ # SampleEtoModelessForm class ################################################################################ class SampleEtoModelessForm(forms.Form): # Initializer def __init__(self): self.m_selecting = False # Basic form initialization self.Initialize() # Create the form's controls self.CreateFormControls() # Fill the form's listbox self.FillListBox() # Create Rhino event handlers self.CreateEvents() # Basic form initialization def Initialize(self): self.Title = 'Sample Modeless Form' self.Padding = drawing.Padding(5) self.Resizable = True self.Maximizable = False self.Minimizable = False self.ShowInTaskbar = False self.MinimumSize = drawing.Size(200, 150) # FormClosed event handler self.Closed += self.OnFormClosed # Adds a listitem to the listbox def AddObject(self, obj): item = forms.ListItem() item.Text = obj.ShortDescription(False) if obj.Name: item.Text += " - " + obj.Name item.Tag = obj.Id self.m_listbox.Items.Add(item) # Fills the listbox with document objects def FillListBox(self): iter = Rhino.DocObjects.ObjectEnumeratorSettings() iter.NormalObjects = True iter.LockedObjects = False iter.IncludeLights = True iter.IncludeGrips = False objects = sc.doc.Objects.GetObjectList(iter) for obj in objects: self.AddObject(obj) # CloseDocument event handler def OnCloseDocument(self, sender, e): self.m_listbox.Items.Clear() # NewDocument event handler def OnNewDocument(self, sender, e): self.FillListBox() # EndOpenDocument event handler def OnEndOpenDocument(self, sender, e): self.FillListBox() # OnAddRhinoObject event handler def OnAddRhinoObject(self, sender, e): self.AddObject(e.TheObject) # OnDeleteRhinoObject event handler def OnDeleteRhinoObject(self, sender, e): for item in self.m_listbox.Items: if item.Tag == e.ObjectId: self.m_listbox.Items.Remove(item) break # OnSelectObjects event handler def OnSelectObjects(self, sender, e): if self.m_selecting == True: return if e.RhinoObjects.Length == 1: i = 0 for item in self.m_listbox.Items: if item.Tag == e.RhinoObjects[0].Id: self.m_listbox.SelectedIndex = i break else: i += 1 else: self.m_listbox.SelectedIndex = -1 # OnDeselectAllObjects event handler def OnDeselectAllObjects(self, sender, e): if self.m_selecting == True: return self.m_listbox.SelectedIndex = -1 # Create Rhino event handlers def CreateEvents(self): Rhino.RhinoDoc.CloseDocument += self.OnCloseDocument Rhino.RhinoDoc.NewDocument += self.OnNewDocument Rhino.RhinoDoc.EndOpenDocument += self.OnEndOpenDocument Rhino.RhinoDoc.AddRhinoObject += self.OnAddRhinoObject Rhino.RhinoDoc.DeleteRhinoObject += self.OnDeleteRhinoObject Rhino.RhinoDoc.SelectObjects += self.OnSelectObjects Rhino.RhinoDoc.DeselectAllObjects += self.OnDeselectAllObjects # Remove Rhino event handlers def RemoveEvents(self): Rhino.RhinoDoc.CloseDocument -= self.OnCloseDocument Rhino.RhinoDoc.NewDocument -= self.OnNewDocument Rhino.RhinoDoc.EndOpenDocument -= self.OnEndOpenDocument Rhino.RhinoDoc.AddRhinoObject -= self.OnAddRhinoObject Rhino.RhinoDoc.DeleteRhinoObject -= self.OnDeleteRhinoObject Rhino.RhinoDoc.SelectObjects -= self.OnSelectObjects Rhino.RhinoDoc.DeselectAllObjects -= self.OnDeselectAllObjects # Create all of the controls used by the form def CreateFormControls(self): # Create table layout layout = forms.TableLayout() layout.Padding = drawing.Padding(10) layout.Spacing = drawing.Size(5, 5) # Add controls to layout layout.Rows.Add(forms.Label(Text = 'Rhino Objects:')) layout.Rows.Add(self.CreateListBoxRow()) layout.Rows.Add(self.CreateButtonRow()) # Set the content self.Content = layout # Listbox.SelectedIndexChanged event handler def OnSelectedIndexChanged(self, sender, e): index = self.m_listbox.SelectedIndex if index >= 0: self.m_selecting = True item = self.m_listbox.Items[index] Rhino.RhinoApp.RunScript("_SelNone", False) Rhino.RhinoApp.RunScript("_SelId " + item.Tag.ToString() + " _Enter", False) self.m_selecting = False # Called by CreateFormControls to creates the # table row that contains the listbox def CreateListBoxRow(self): # Create the listbox self.m_listbox = forms.ListBox() self.m_listbox.Size = drawing.Size(200, 100) self.m_listbox.SelectedIndexChanged += self.OnSelectedIndexChanged # Create the table row table_row = forms.TableRow() table_row.ScaleHeight = True table_row.Cells.Add(self.m_listbox) return table_row # 'Select' button click handler def OnSelectClick(self, sender, e): self.m_selecting = True self.m_listbox.SelectedIndex = -1 Rhino.RhinoApp.RunScript("_SelAll", False) self.m_selecting = False # 'Clear' button click handler def OnClearClick(self, sender, e): self.m_selecting = True self.m_listbox.SelectedIndex = -1 Rhino.RhinoApp.RunScript("_SelNone", False) self.m_selecting = False # Called by CreateFormControls to creates the # table row that contains the button controls. def CreateButtonRow(self): # Select button select_button = forms.Button(Text = 'Select All') select_button.Click += self.OnSelectClick # Clear button clear_button = forms.Button(Text = 'Clear') clear_button.Click += self.OnClearClick # Create layout layout = forms.TableLayout(Spacing = drawing.Size(5, 5)) layout.Rows.Add(forms.TableRow(None, select_button, clear_button, None)) return layout # Form Closed event handler def OnFormClosed(self, sender, e): # Remove the events added in the initializer self.RemoveEvents() # Dispose of the form and remove it from the sticky dictionary if sc.sticky.has_key('sample_modeless_form'): form = sc.sticky['sample_modeless_form'] if form: form.Dispose() form = None sc.sticky.Remove('sample_modeless_form') ################################################################################ # TestSampleEtoModelessForm function ################################################################################ def TestSampleEtoModelessForm(): # See if the form is already visible if sc.sticky.has_key('sample_modeless_form'): return # Create and show form form = SampleEtoModelessForm() form.Owner = Rhino.UI.RhinoEtoApp.MainWindow form.Show() # Add the form to the sticky dictionary so it # survives when the main function ends. sc.sticky['sample_modeless_form'] = form ################################################################################ # Check to see if this file is being executed as the 'main' python # script instead of being used as a module by some other python script # This allows us to use the module which ever way we want. ################################################################################ if __name__ == '__main__': TestSampleEtoModelessForm()
परिवर्तित टेक्स्ट
फ़ाइल खोलें
#! python3 ################################################################################ # SampleEtoModelessForm.py # Copyright (c) 2017 Robert McNeel & Associates. # See License.md in the root of this repository for details. ################################################################################ import System import Rhino import Rhino.UI import Eto.Drawing as drawing import Eto.Forms as forms import scriptcontext as sc ################################################################################ # SampleEtoModelessForm class ################################################################################ class SampleEtoModelessForm(forms.Form): # Initializer def __init__(self): super().__init__() self.m_selecting = False # Basic form initialization self.Initialize() # Create the form's controls self.CreateFormControls() # Fill the form's listbox self.FillListBox() # Create Rhino event handlers self.CreateEvents() # Basic form initialization def Initialize(self): self.Title = 'Sample Modeless Form' self.Padding = drawing.Padding(5) self.Resizable = True self.Maximizable = False self.Minimizable = False self.ShowInTaskbar = False self.MinimumSize = drawing.Size(200, 150) # FormClosed event handler self.Closed += self.OnFormClosed # Adds a listitem to the listbox def AddObject(self, obj): item = forms.ListItem() item.Text = obj.ShortDescription(False) if obj.Name: item.Text += " - " + obj.Name item.Tag = obj.Id self.m_listbox.Items.Add(item) # Fills the listbox with document objects def FillListBox(self): iter = Rhino.DocObjects.ObjectEnumeratorSettings() iter.NormalObjects = True iter.LockedObjects = False iter.IncludeLights = True iter.IncludeGrips = False objects = sc.doc.Objects.GetObjectList(iter) for obj in objects: self.AddObject(obj) # CloseDocument event handler def OnCloseDocument(self, sender, e): self.m_listbox.Items.Clear() # NewDocument event handler def OnNewDocument(self, sender, e): self.FillListBox() # EndOpenDocument event handler def OnEndOpenDocument(self, sender, e): self.FillListBox() # OnAddRhinoObject event handler def OnAddRhinoObject(self, sender, e): self.AddObject(e.TheObject) # OnDeleteRhinoObject event handler def OnDeleteRhinoObject(self, sender, e): for item in self.m_listbox.Items: if item.Tag == e.ObjectId: self.m_listbox.Items.Remove(item) break # OnSelectObjects event handler def OnSelectObjects(self, sender, e): if self.m_selecting == True: return if e.RhinoObjects.Length == 1: i = 0 for item in self.m_listbox.Items: if item.Tag == e.RhinoObjects[0].Id: self.m_listbox.SelectedIndex = i break else: i += 1 else: self.m_listbox.SelectedIndex = -1 # OnDeselectAllObjects event handler def OnDeselectAllObjects(self, sender, e): if self.m_selecting == True: return self.m_listbox.SelectedIndex = -1 # Create Rhino event handlers def CreateEvents(self): Rhino.RhinoDoc.CloseDocument += self.OnCloseDocument Rhino.RhinoDoc.NewDocument += self.OnNewDocument Rhino.RhinoDoc.EndOpenDocument += self.OnEndOpenDocument Rhino.RhinoDoc.AddRhinoObject += self.OnAddRhinoObject Rhino.RhinoDoc.DeleteRhinoObject += self.OnDeleteRhinoObject Rhino.RhinoDoc.SelectObjects += self.OnSelectObjects Rhino.RhinoDoc.DeselectAllObjects += self.OnDeselectAllObjects # Remove Rhino event handlers def RemoveEvents(self): Rhino.RhinoDoc.CloseDocument -= self.OnCloseDocument Rhino.RhinoDoc.NewDocument -= self.OnNewDocument Rhino.RhinoDoc.EndOpenDocument -= self.OnEndOpenDocument Rhino.RhinoDoc.AddRhinoObject -= self.OnAddRhinoObject Rhino.RhinoDoc.DeleteRhinoObject -= self.OnDeleteRhinoObject Rhino.RhinoDoc.SelectObjects -= self.OnSelectObjects Rhino.RhinoDoc.DeselectAllObjects -= self.OnDeselectAllObjects # Create all of the controls used by the form def CreateFormControls(self): # Create table layout layout = forms.TableLayout() layout.Padding = drawing.Padding(10) layout.Spacing = drawing.Size(5, 5) # Add controls to layout label = forms.Label() label.Text = 'Rhino Objects:' cell = forms.TableCell() cell.Control = label row = forms.TableRow() row.Cells.Add(cell) layout.Rows.Add(row) layout.Rows.Add(self.CreateListBoxRow()) layout.Rows.Add(self.CreateButtonRow()) # Set the content self.Content = layout # Listbox.SelectedIndexChanged event handler def OnSelectedIndexChanged(self, sender, e): index = self.m_listbox.SelectedIndex if index >= 0: self.m_selecting = True item = self.m_listbox.Items[index] Rhino.RhinoApp.RunScript("_SelNone", False) Rhino.RhinoApp.RunScript("_SelId " + item.Tag.ToString() + " _Enter", False) self.m_selecting = False # Called by CreateFormControls to creates the # table row that contains the listbox def CreateListBoxRow(self): # Create the listbox self.m_listbox = forms.ListBox() self.m_listbox.Size = drawing.Size(200, 100) self.m_listbox.SelectedIndexChanged += self.OnSelectedIndexChanged # Create the table row table_cell = forms.TableCell() table_cell.Control = self.m_listbox table_row = forms.TableRow() table_row.ScaleHeight = True table_row.Cells.Add(table_cell) return table_row # 'Select' button click handler def OnSelectClick(self, sender, e): self.m_selecting = True self.m_listbox.SelectedIndex = -1 Rhino.RhinoApp.RunScript("_SelAll", False) self.m_selecting = False # 'Clear' button click handler def OnClearClick(self, sender, e): self.m_selecting = True self.m_listbox.SelectedIndex = -1 Rhino.RhinoApp.RunScript("_SelNone", False) self.m_selecting = False # Called by CreateFormControls to creates the # table row that contains the button controls. def CreateButtonRow(self): # Select button select_button = forms.Button() select_button.Text = 'Select All' select_button.Click += self.OnSelectClick # Clear button clear_button = forms.Button() clear_button.Text = 'Clear' clear_button.Click += self.OnClearClick # Create layout layout = forms.TableLayout() layout.Spacing = drawing.Size(5, 5) cell_a = forms.TableCell() cell_a.Control = None cell_b = forms.TableCell() cell_b.Control = select_button cell_c = forms.TableCell() cell_c.Control = clear_button cell_d = forms.TableCell() cell_d.Control = None row = forms.TableRow() row.Cells.Add(cell_a) row.Cells.Add(cell_b) row.Cells.Add(cell_c) row.Cells.Add(cell_d) return row # Form Closed event handler def OnFormClosed(self, sender, e): # Remove the events added in the initializer self.RemoveEvents() # Dispose of the form and remove it from the sticky dictionary if sc.sticky.has_key('sample_modeless_form'): form = sc.sticky['sample_modeless_form'] if form: form.Dispose() form = None sc.sticky.pop('sample_modeless_form') ################################################################################ # TestSampleEtoModelessForm function ################################################################################ def TestSampleEtoModelessForm(): # See if the form is already visible if sc.sticky.has_key('sample_modeless_form'): return # Create and show form form = SampleEtoModelessForm() form.Owner = Rhino.UI.RhinoEtoApp.MainWindow form.Show() # Add the form to the sticky dictionary so it # survives when the main function ends. sc.sticky['sample_modeless_form'] = form ################################################################################ # Check to see if this file is being executed as the 'main' python # script instead of being used as a module by some other python script # This allows us to use the module which ever way we want. ################################################################################ if __name__ == '__main__': TestSampleEtoModelessForm()
अंतर खोजें