Skip to content

Commit d236d89

Browse files
committed
feat(components): standardize fluent setters and align base signatures
1 parent 86e4ffc commit d236d89

14 files changed

+70
-42
lines changed

src/pythonnative/date_picker.py

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ def __init__(self) -> None:
1414
super().__init__()
1515

1616
@abstractmethod
17-
def set_date(self, year: int, month: int, day: int) -> None:
17+
def set_date(self, year: int, month: int, day: int) -> "DatePickerBase":
1818
pass
1919

2020
@abstractmethod
@@ -39,8 +39,9 @@ def __init__(self, context: Any, year: int = 0, month: int = 0, day: int = 0) ->
3939
self.native_instance = self.native_class(context)
4040
self.set_date(year, month, day)
4141

42-
def set_date(self, year: int, month: int, day: int) -> None:
42+
def set_date(self, year: int, month: int, day: int) -> "DatePicker":
4343
self.native_instance.updateDate(year, month, day)
44+
return self
4445

4546
def get_date(self) -> tuple:
4647
year = self.native_instance.getYear()
@@ -65,9 +66,10 @@ def __init__(self, year: int = 0, month: int = 0, day: int = 0) -> None:
6566
self.native_instance = self.native_class.alloc().init()
6667
self.set_date(year, month, day)
6768

68-
def set_date(self, year: int, month: int, day: int) -> None:
69+
def set_date(self, year: int, month: int, day: int) -> "DatePicker":
6970
date = datetime(year, month, day)
7071
self.native_instance.setDate_(date)
72+
return self
7173

7274
def get_date(self) -> tuple:
7375
date = self.native_instance.date()

src/pythonnative/image_view.py

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ def __init__(self) -> None:
1414
super().__init__()
1515

1616
@abstractmethod
17-
def set_image(self, image: str) -> None:
17+
def set_image(self, image: str) -> "ImageViewBase":
1818
pass
1919

2020
@abstractmethod
@@ -40,9 +40,10 @@ def __init__(self, image: str = "") -> None:
4040
if image:
4141
self.set_image(image)
4242

43-
def set_image(self, image: str) -> None:
43+
def set_image(self, image: str) -> "ImageView":
4444
bitmap = BitmapFactory.decodeFile(image)
4545
self.native_instance.setImageBitmap(bitmap)
46+
return self
4647

4748
def get_image(self) -> str:
4849
# Please note that this is a simplistic representation, getting image from ImageView
@@ -66,10 +67,11 @@ def __init__(self, image: str = "") -> None:
6667
if image:
6768
self.set_image(image)
6869

69-
def set_image(self, image: str) -> None:
70+
def set_image(self, image: str) -> "ImageView":
7071
ns_str = NSString.alloc().initWithUTF8String_(image)
7172
ui_image = UIImage.imageNamed_(ns_str)
7273
self.native_instance.setImage_(ui_image)
74+
return self
7375

7476
def get_image(self) -> str:
7577
# Similar to Android, getting the image from UIImageView isn't straightforward.

src/pythonnative/material_button.py

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ def __init__(self) -> None:
1414
super().__init__()
1515

1616
@abstractmethod
17-
def set_title(self, title: str) -> None:
17+
def set_title(self, title: str) -> "MaterialButtonBase":
1818
pass
1919

2020
@abstractmethod
@@ -39,8 +39,9 @@ def __init__(self, context: Any, title: str = "") -> None:
3939
self.native_instance = self.native_class(context)
4040
self.set_title(title)
4141

42-
def set_title(self, title: str) -> None:
42+
def set_title(self, title: str) -> "MaterialButton":
4343
self.native_instance.setText(title)
44+
return self
4445

4546
def get_title(self) -> str:
4647
return self.native_instance.getText().toString()
@@ -60,8 +61,9 @@ def __init__(self, title: str = "") -> None:
6061
self.native_instance = self.native_class.alloc().init()
6162
self.set_title(title)
6263

63-
def set_title(self, title: str) -> None:
64+
def set_title(self, title: str) -> "MaterialButton":
6465
self.native_instance.setTitle_forState_(title, 0)
66+
return self
6567

6668
def get_title(self) -> str:
6769
return self.native_instance.titleForState_(0)

src/pythonnative/material_date_picker.py

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ def __init__(self) -> None:
1414
super().__init__()
1515

1616
@abstractmethod
17-
def set_date(self, year: int, month: int, day: int) -> None:
17+
def set_date(self, year: int, month: int, day: int) -> "MaterialDatePickerBase":
1818
pass
1919

2020
@abstractmethod
@@ -38,14 +38,15 @@ def __init__(self, year: int = 0, month: int = 0, day: int = 0) -> None:
3838
self.set_date(year, month, day)
3939
self.native_instance = self.builder.build()
4040

41-
def set_date(self, year: int, month: int, day: int) -> None:
41+
def set_date(self, year: int, month: int, day: int) -> "MaterialDatePicker":
4242
# MaterialDatePicker uses milliseconds since epoch to set date
4343
from java.util import Calendar
4444

4545
cal = Calendar.getInstance()
4646
cal.set(year, month, day)
4747
milliseconds = cal.getTimeInMillis()
4848
self.builder.setSelection(milliseconds)
49+
return self
4950

5051
def get_date(self) -> tuple:
5152
# Convert selection (milliseconds since epoch) back to a date
@@ -76,9 +77,10 @@ def __init__(self, year: int = 0, month: int = 0, day: int = 0) -> None:
7677
self.native_instance = self.native_class.alloc().init()
7778
self.set_date(year, month, day)
7879

79-
def set_date(self, year: int, month: int, day: int) -> None:
80+
def set_date(self, year: int, month: int, day: int) -> "MaterialDatePicker":
8081
date = datetime(year, month, day)
8182
self.native_instance.setDate_(date)
83+
return self
8284

8385
def get_date(self) -> tuple:
8486
date = self.native_instance.date()

src/pythonnative/material_progress_view.py

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ def __init__(self) -> None:
1414
super().__init__()
1515

1616
@abstractmethod
17-
def set_progress(self, progress: float) -> None:
17+
def set_progress(self, progress: float) -> "MaterialProgressViewBase":
1818
pass
1919

2020
@abstractmethod
@@ -39,8 +39,9 @@ def __init__(self, context: Any) -> None:
3939
self.native_instance = self.native_class(context)
4040
self.native_instance.setIndeterminate(False)
4141

42-
def set_progress(self, progress: float) -> None:
42+
def set_progress(self, progress: float) -> "MaterialProgressView":
4343
self.native_instance.setProgress(int(progress * 100))
44+
return self
4445

4546
def get_progress(self) -> float:
4647
return self.native_instance.getProgress() / 100.0
@@ -61,8 +62,9 @@ def __init__(self) -> None:
6162
0
6263
) # 0: UIProgressViewStyleDefault
6364

64-
def set_progress(self, progress: float) -> None:
65+
def set_progress(self, progress: float) -> "MaterialProgressView":
6566
self.native_instance.setProgress_animated_(progress, False)
67+
return self
6668

6769
def get_progress(self) -> float:
6870
return self.native_instance.progress()

src/pythonnative/material_search_bar.py

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ def __init__(self) -> None:
1414
super().__init__()
1515

1616
@abstractmethod
17-
def set_query(self, query: str) -> None:
17+
def set_query(self, query: str) -> "MaterialSearchBarBase":
1818
pass
1919

2020
@abstractmethod
@@ -39,8 +39,9 @@ def __init__(self, context: Any, query: str = "") -> None:
3939
self.native_instance = self.native_class(context)
4040
self.set_query(query)
4141

42-
def set_query(self, query: str) -> None:
42+
def set_query(self, query: str) -> "MaterialSearchBar":
4343
self.native_instance.setQuery(query, False)
44+
return self
4445

4546
def get_query(self) -> str:
4647
return self.native_instance.getQuery().toString()
@@ -60,8 +61,9 @@ def __init__(self, query: str = "") -> None:
6061
self.native_instance = self.native_class.alloc().init()
6162
self.set_query(query)
6263

63-
def set_query(self, query: str) -> None:
64+
def set_query(self, query: str) -> "MaterialSearchBar":
6465
self.native_instance.set_searchText_(query)
66+
return self
6567

6668
def get_query(self) -> str:
6769
return self.native_instance.searchText()

src/pythonnative/material_switch.py

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ def __init__(self) -> None:
1414
super().__init__()
1515

1616
@abstractmethod
17-
def set_on(self, value: bool) -> None:
17+
def set_on(self, value: bool) -> "MaterialSwitchBase":
1818
pass
1919

2020
@abstractmethod
@@ -39,8 +39,9 @@ def __init__(self, context: Any, value: bool = False) -> None:
3939
self.native_instance = self.native_class(context)
4040
self.set_on(value)
4141

42-
def set_on(self, value: bool) -> None:
42+
def set_on(self, value: bool) -> "MaterialSwitch":
4343
self.native_instance.setChecked(value)
44+
return self
4445

4546
def is_on(self) -> bool:
4647
return self.native_instance.isChecked()
@@ -60,8 +61,9 @@ def __init__(self, value: bool = False) -> None:
6061
self.native_instance = self.native_class.alloc().init()
6162
self.set_on(value)
6263

63-
def set_on(self, value: bool) -> None:
64+
def set_on(self, value: bool) -> "MaterialSwitch":
6465
self.native_instance.setOn_animated_(value, False)
66+
return self
6567

6668
def is_on(self) -> bool:
6769
return self.native_instance.isOn()

src/pythonnative/material_time_picker.py

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ def __init__(self) -> None:
1414
super().__init__()
1515

1616
@abstractmethod
17-
def set_time(self, hour: int, minute: int) -> None:
17+
def set_time(self, hour: int, minute: int) -> "MaterialTimePickerBase":
1818
pass
1919

2020
@abstractmethod
@@ -39,8 +39,9 @@ def __init__(self, context: Any, hour: int = 0, minute: int = 0) -> None:
3939
self.native_instance = self.native_class(context)
4040
self.set_time(hour, minute)
4141

42-
def set_time(self, hour: int, minute: int) -> None:
42+
def set_time(self, hour: int, minute: int) -> "MaterialTimePicker":
4343
self.native_instance.setTime(hour, minute)
44+
return self
4445

4546
def get_time(self) -> tuple:
4647
hour = self.native_instance.getHour()
@@ -65,9 +66,10 @@ def __init__(self, hour: int = 0, minute: int = 0) -> None:
6566
self.native_instance.setDatePickerMode_(1) # Setting mode to Time
6667
self.set_time(hour, minute)
6768

68-
def set_time(self, hour: int, minute: int) -> None:
69+
def set_time(self, hour: int, minute: int) -> "MaterialTimePicker":
6970
t = time(hour, minute)
7071
self.native_instance.setTime_(t)
72+
return self
7173

7274
def get_time(self) -> tuple:
7375
t = self.native_instance.time()

src/pythonnative/picker_view.py

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ def __init__(self) -> None:
1414
super().__init__()
1515

1616
@abstractmethod
17-
def set_selected(self, index: int) -> None:
17+
def set_selected(self, index: int) -> "PickerViewBase":
1818
pass
1919

2020
@abstractmethod
@@ -39,8 +39,9 @@ def __init__(self, context: Any, index: int = 0) -> None:
3939
self.native_instance = self.native_class(context)
4040
self.set_selected(index)
4141

42-
def set_selected(self, index: int) -> None:
42+
def set_selected(self, index: int) -> "PickerView":
4343
self.native_instance.setSelection(index)
44+
return self
4445

4546
def get_selected(self) -> int:
4647
return self.native_instance.getSelectedItemPosition()
@@ -60,8 +61,9 @@ def __init__(self, index: int = 0) -> None:
6061
self.native_instance = self.native_class.alloc().init()
6162
self.set_selected(index)
6263

63-
def set_selected(self, index: int) -> None:
64+
def set_selected(self, index: int) -> "PickerView":
6465
self.native_instance.selectRow_inComponent_animated_(index, 0, False)
66+
return self
6567

6668
def get_selected(self) -> int:
6769
return self.native_instance.selectedRowInComponent_(0)

src/pythonnative/progress_view.py

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ def __init__(self) -> None:
1414
super().__init__()
1515

1616
@abstractmethod
17-
def set_progress(self, progress: float) -> None:
17+
def set_progress(self, progress: float) -> "ProgressViewBase":
1818
pass
1919

2020
@abstractmethod
@@ -39,8 +39,9 @@ def __init__(self) -> None:
3939
self.native_instance = self.native_class(context, None, jclass("android.R$attr").progressBarStyleHorizontal)
4040
self.native_instance.setIndeterminate(False)
4141

42-
def set_progress(self, progress: float) -> None:
42+
def set_progress(self, progress: float) -> "ProgressView":
4343
self.native_instance.setProgress(int(progress * 100))
44+
return self
4445

4546
def get_progress(self) -> float:
4647
return self.native_instance.getProgress() / 100.0
@@ -61,8 +62,9 @@ def __init__(self) -> None:
6162
0
6263
) # 0: UIProgressViewStyleDefault
6364

64-
def set_progress(self, progress: float) -> None:
65+
def set_progress(self, progress: float) -> "ProgressView":
6566
self.native_instance.setProgress_animated_(progress, False)
67+
return self
6668

6769
def get_progress(self) -> float:
6870
return self.native_instance.progress()

0 commit comments

Comments
 (0)