That makes sense. But thank you for the support, anyway. I already found 
another problem to solve!

Em domingo, 14 de março de 2021 às 16:58:20 UTC-3, elParaguayo escreveu:

> It may be to do with the "super" syntax. Not sure you need to pass the 
> first "self" in that line.
>
> On Sunday, 14 March 2021 at 19:53:12 UTC elParaguayo wrote:
>
>> Not immediately sure why it's conflicting but it's definitely not needed 
>> in your code as it's not adding anything to the button_press method.
>>
>>
>>
>> On Sunday, 14 March 2021 at 19:48:33 UTC [email protected] wrote:
>>
>>> I commented out the button_press function and it worked! Any ideas why 
>>> it conflicted with self.add_callbacks?
>>>
>>> Em domingo, 14 de março de 2021 às 16:16:17 UTC-3, elParaguayo escreveu:
>>>
>>>> There's no space in "Button1" etc.
>>>>
>>>> On Sunday, 14 March 2021 at 19:13:54 UTC [email protected] wrote:
>>>>
>>>>> from dynmen.rofi import Rofi
>>>>> from dynmen.dmenu import DMenu
>>>>>
>>>>> from libqtile.widget import base
>>>>> from taskw import TaskWarrior
>>>>>
>>>>> class TaskWarriorWidget(base.ThreadPoolText):
>>>>>     """ TaskWarrior Widget
>>>>>
>>>>>     Widget requirements: taskw, taskwarrior, dynmen.
>>>>>
>>>>>     This widget displays your task to do in the qtile status bar and 
>>>>> shows if it is active.
>>>>>
>>>>>     Mouse callbacks:
>>>>>         Left click start/stop the task.
>>>>>         Right click displays a menu in rofi or dmenu with all 
>>>>> available tasks to start/stop at selection.
>>>>>         Rolling mousewheel on widget changes the showing task.
>>>>>
>>>>>     """
>>>>>
>>>>>     orientations = base.ORIENTATION_HORIZONTAL
>>>>>     defaults = [
>>>>>         ('config_file', '~/.taskrc', 'Default config place of 
>>>>> taskwarrior'),
>>>>>         ('selected_menu', 'rofi', 'Default menu selection of task is 
>>>>> rofi'),
>>>>>         ('update_interval', 0.5, 'Delay in seconds between updates'),
>>>>>     ]
>>>>>
>>>>>     def __init__(self, **config):
>>>>>         super().__init__('', **config)
>>>>>         self.add_defaults(TaskWarriorWidget.defaults)
>>>>>         self.text = 'No tasks scheduled'
>>>>>         self.tw = TaskWarrior(config_filename=self.config_file)
>>>>>         self.pending_tasks = 
>>>>> self.tw.filter_tasks(dict(status='pending'))
>>>>>         self.started = ' inactive'
>>>>>         self.num_id = 1
>>>>>         self.menus = dict(rofi = Rofi, dmenu = DMenu)
>>>>>         self.menu = self.menus[self.selected_menu]()
>>>>>
>>>>>         self.add_callbacks({
>>>>>             'Button 1': self.toggle_task,
>>>>>             'Button 2': self.menu_task,
>>>>>             'Button 4': self.next_task,
>>>>>             'Button 5': self.previous_task
>>>>>         })
>>>>>
>>>>>     def poll(self):
>>>>>         self.text = self.tw.get_task(id = 
>>>>> self.num_id)[-1]['description']
>>>>>         return self.text + self.started
>>>>>
>>>>>     def button_press(self, x, y, button):
>>>>>         super().button_press(self, x, y, button)
>>>>>
>>>>>     def toggle_task(self):
>>>>>         # Left click toggles(active, inactive) the task showed on the 
>>>>> qtile bar
>>>>>         try:
>>>>>             self.tw.get_task(id = self.num_id)[-1]['start']
>>>>>         except KeyError:
>>>>>             self.tw.task_start(id = self.num_id)
>>>>>             self.started = ' active'
>>>>>         else:
>>>>>             self.tw.task_stop(id = self.num_id)
>>>>>             self.started = ' inactive'
>>>>>
>>>>>     def menu_task(self):
>>>>>         opts = {t['description']:t['id'] for t in self.pending_tasks}
>>>>>         self.menu.prompt = 'Select the task to start/stop: '
>>>>>         index = self.menu(opts).value
>>>>>         self.num_id = self.pending_tasks[index]['id']
>>>>>         self.toggle_task()
>>>>>
>>>>>     def next_task(self):
>>>>>         # Shows on the bar the next task in order of urgency
>>>>>         self.num_id += 1 if self.num_id < len(self.pending_tasks) else 
>>>>> 0
>>>>>
>>>>>     def previous_task(self):
>>>>>         # Shows on the bar the previous task in order of urgency
>>>>>         self.num_id -= 1 if self.num_id > 1 else 
>>>>> -(len(self.pending_tasks)-2)
>>>>>
>>>>>
>>>>> Em domingo, 14 de março de 2021 às 15:45:31 UTC-3, elParaguayo 
>>>>> escreveu:
>>>>>
>>>>>> I'd use the self.add_callbacks method as this is what most widgets 
>>>>>> use.
>>>>>>
>>>>>> Do you have some code you can share? Much easier to help if we can 
>>>>>> see your actual code, otherwise we're just guessing.
>>>>>> On Sunday, 14 March 2021 at 18:30:22 UTC [email protected] wrote:
>>>>>>
>>>>>>> Hi everyone! So I'm working on a widget from scratch that shows 
>>>>>>> taskwarrior tasks. I've already tweaked some other widgets to get a 
>>>>>>> better 
>>>>>>> notion of how it works and I'm much more confident now to create my own.
>>>>>>> The widget is already displaying the first task on the bar, but for 
>>>>>>> some reason I can't get the button callbacks to work. Is there a good 
>>>>>>> way 
>>>>>>> to debug those? Because I tested the functions and they were working as 
>>>>>>> supposed to, but I couldn't test the callbacks itself properly.
>>>>>>> I also saw that there are two main ways to make those callbacks. One 
>>>>>>> is to add the self.add_callbacks(dict_of_callbacks), with the buttons 
>>>>>>> as 
>>>>>>> keys and functions as values respectively, and the other is identifying 
>>>>>>> the 
>>>>>>> buttons directly from the button_press function. Are there too many 
>>>>>>> differences besides the first one seems more cleaner to me? I did 
>>>>>>> inherited 
>>>>>>> the button_press function from the upper class.
>>>>>>> Oh my widget inherits from ThreadPool, by the way, and I set up the 
>>>>>>> update_interval to something like 0.5.
>>>>>>>
>>>>>>

-- 
You received this message because you are subscribed to the Google Groups 
"qtile-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/qtile-dev/7a4f187b-6407-4c0c-8834-8444f15853efn%40googlegroups.com.

Reply via email to