From bdab12e31bcf2ab03a4a5466890439e9f6a3af77 Mon Sep 17 00:00:00 2001 From: joajfreitas Date: Sun, 17 Nov 2019 01:14:52 +0000 Subject: [PATCH 1/2] feature: added stdin argument to rofi entries --- rofi.py | 36 ++++++++++++++++++++---------------- 1 file changed, 20 insertions(+), 16 deletions(-) diff --git a/rofi.py b/rofi.py index 0ced3dd..1b19ab2 100644 --- a/rofi.py +++ b/rofi.py @@ -462,7 +462,7 @@ def select(self, prompt, options, rofi_args=None, message="", select=None, **kwa return index, key - def generic_entry(self, prompt, validator=None, message=None, rofi_args=None, **kwargs): + def generic_entry(self, prompt, validator=None, message=None, rofi_args=None, stdin_str="", **kwargs): """A generic entry box. Parameters @@ -481,6 +481,8 @@ def generic_entry(self, prompt, validator=None, message=None, rofi_args=None, ** user entered is returned as-is. message: string Optional message to display under the entry. + stdin_str: string + Optional string to pass to rofi stdin. Returns ------- @@ -517,7 +519,7 @@ def generic_entry(self, prompt, validator=None, message=None, rofi_args=None, ** args.extend(rofi_args) # Run it. - returncode, stdout = self._run_blocking(args, input="") + returncode, stdout = self._run_blocking(args, input=stdin_str) # Was the dialog cancelled? if returncode == 1: @@ -534,7 +536,7 @@ def generic_entry(self, prompt, validator=None, message=None, rofi_args=None, ** def text_entry(self, prompt, message=None, allow_blank=False, strip=True, - rofi_args=None, **kwargs): + rofi_args=None, stdin_str="", **kwargs): """Prompt the user to enter a piece of text. Parameters @@ -548,6 +550,8 @@ def text_entry(self, prompt, message=None, allow_blank=False, strip=True, strip: Boolean Whether to strip leading and trailing whitespace from the entered value. + stdin_str: String + String to pass to rofi stdin. Returns ------- @@ -563,10 +567,10 @@ def text_validator(text): return text, None - return self.generic_entry(prompt, text_validator, message, rofi_args, **kwargs) + return self.generic_entry(prompt, text_validator, message, rofi_args, stdin_str, **kwargs) - def integer_entry(self, prompt, message=None, min=None, max=None, rofi_args=None, **kwargs): + def integer_entry(self, prompt, message=None, min=None, max=None, rofi_args=None, stdin_str="", **kwargs): """Prompt the user to enter an integer. Parameters @@ -604,10 +608,10 @@ def integer_validator(text): return value, None - return self.generic_entry(prompt, integer_validator, message, rofi_args, **kwargs) + return self.generic_entry(prompt, integer_validator, message, rofi_args, stdin_str, **kwargs) - def float_entry(self, prompt, message=None, min=None, max=None, rofi_args=None, **kwargs): + def float_entry(self, prompt, message=None, min=None, max=None, rofi_args=None, stdin_str="", **kwargs): """Prompt the user to enter a floating point number. Parameters @@ -645,10 +649,10 @@ def float_validator(text): return value, None - return self.generic_entry(prompt, float_validator, message, rofi_args, **kwargs) + return self.generic_entry(prompt, float_validator, message, rofi_args, stdin_str,stdin_str, **kwargs) - def decimal_entry(self, prompt, message=None, min=None, max=None, rofi_args=None, **kwargs): + def decimal_entry(self, prompt, message=None, min=None, max=None, rofi_args=None, stdin_str="", **kwargs): """Prompt the user to enter a decimal number. Parameters @@ -686,11 +690,11 @@ def decimal_validator(text): return value, None - return self.generic_entry(prompt, decimal_validator, message, rofi_args, **kwargs) + return self.generic_entry(prompt, decimal_validator, message, rofi_args, stdin_str, **kwargs) def date_entry(self, prompt, message=None, formats=['%x', '%d/%m/%Y'], - show_example=False, rofi_args=None, **kwargs): + show_example=False, rofi_args=None, stdin_str="", **kwargs): """Prompt the user to enter a date. Parameters @@ -734,11 +738,11 @@ def date_validator(text): message = message or "" message += "Today's date in the correct format: " + datetime.now().strftime(formats[0]) - return self.generic_entry(prompt, date_validator, message, rofi_args, **kwargs) + return self.generic_entry(prompt, date_validator, message, rofi_args, stdin_str, **kwargs) def time_entry(self, prompt, message=None, formats=['%X', '%H:%M', '%I:%M', '%H.%M', - '%I.%M'], show_example=False, rofi_args=None, **kwargs): + '%I.%M'], show_example=False, rofi_args=None, stdin_str="", **kwargs): """Prompt the user to enter a time. Parameters @@ -782,11 +786,11 @@ def time_validator(text): message = message or "" message += "Current time in the correct format: " + datetime.now().strftime(formats[0]) - return self.generic_entry(prompt, time_validator, message, rofi_args=None, **kwargs) + return self.generic_entry(prompt, time_validator, message, rofi_args=None, stdin_str, **kwargs) def datetime_entry(self, prompt, message=None, formats=['%x %X'], show_example=False, - rofi_args=None, **kwargs): + rofi_args=None, stdin_str="", **kwargs): """Prompt the user to enter a date and time. Parameters @@ -830,7 +834,7 @@ def datetime_validator(text): message = message or "" message += "Current date and time in the correct format: " + datetime.now().strftime(formats[0]) - return self.generic_entry(prompt, datetime_validator, message, rofi_args, **kwargs) + return self.generic_entry(prompt, datetime_validator, message, rofi_args, stdin_str, **kwargs) def exit_with_error(self, error, **kwargs): From afe8d1ff9b6f79c9db1d7f063d62a81d5f8f4a71 Mon Sep 17 00:00:00 2001 From: joajfreitas Date: Sun, 17 Nov 2019 01:33:15 +0000 Subject: [PATCH 2/2] bug in generic_entry involving stdin_str and keyword arguments --- rofi.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rofi.py b/rofi.py index 1b19ab2..1480b41 100644 --- a/rofi.py +++ b/rofi.py @@ -786,7 +786,7 @@ def time_validator(text): message = message or "" message += "Current time in the correct format: " + datetime.now().strftime(formats[0]) - return self.generic_entry(prompt, time_validator, message, rofi_args=None, stdin_str, **kwargs) + return self.generic_entry(prompt, time_validator, message, rofi_args=None, stdin_str = stdin_str, **kwargs) def datetime_entry(self, prompt, message=None, formats=['%x %X'], show_example=False,