improved timer start time setting (#110)

This commit is contained in:
DYefremov
2022-07-08 01:05:14 +03:00
parent 736655542c
commit c6bea94ff5
2 changed files with 77 additions and 6 deletions

View File

@@ -855,6 +855,62 @@ Author: Dmitriy Yefremov
<placeholder/>
</child>
</object>
<object class="GtkImage" id="popup_menu_add_image">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="stock">gtk-add</property>
</object>
<object class="GtkMenu" id="popup_menu">
<property name="visible">True</property>
<property name="can_focus">False</property>
<child>
<object class="GtkImageMenuItem" id="add_menu_item">
<property name="label" translatable="yes">Add</property>
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="image">popup_menu_add_image</property>
<property name="use_stock">False</property>
<signal name="activate" handler="on_timer_add" swapped="no"/>
<accelerator key="Insert" signal="activate"/>
</object>
</child>
<child>
<object class="GtkSeparatorMenuItem" id="popup_separator">
<property name="visible">True</property>
<property name="can_focus">False</property>
</object>
</child>
<child>
<object class="GtkImageMenuItem" id="edit_menu_item">
<property name="label">gtk-edit</property>
<property name="visible">True</property>
<property name="sensitive">False</property>
<property name="can_focus">False</property>
<property name="use_underline">True</property>
<property name="use_stock">True</property>
<signal name="activate" handler="on_timer_edit" swapped="no"/>
<accelerator key="e" signal="activate" modifiers="Primary"/>
</object>
</child>
<child>
<object class="GtkSeparatorMenuItem" id="popup_separator_2">
<property name="visible">True</property>
<property name="can_focus">False</property>
</object>
</child>
<child>
<object class="GtkImageMenuItem" id="remove_menu_item">
<property name="label">gtk-remove</property>
<property name="visible">True</property>
<property name="sensitive">False</property>
<property name="can_focus">False</property>
<property name="use_underline">True</property>
<property name="use_stock">True</property>
<signal name="activate" handler="on_timer_remove" swapped="no"/>
<accelerator key="Delete" signal="activate"/>
</object>
</child>
</object>
<object class="GtkListStore" id="timer_model">
<columns>
<!-- column-name icon -->
@@ -1095,7 +1151,7 @@ Author: Dmitriy Yefremov
<property name="rubber_banding">True</property>
<property name="enable_grid_lines">both</property>
<property name="tooltip_column">3</property>
<signal name="button-press-event" handler="on_timers_press" swapped="no"/>
<signal name="button-press-event" handler="on_timers_press" object="popup_menu" swapped="no"/>
<signal name="cursor-changed" handler="on_timer_cursor_changed" swapped="no"/>
<signal name="drag-data-received" handler="on_timers_drag_data_received" swapped="no"/>
<signal name="key-press-event" handler="on_timers_key_press" swapped="no"/>

View File

@@ -31,8 +31,9 @@ from datetime import datetime, timedelta
from enum import Enum
from urllib.parse import quote
from app.ui.main_helper import on_popup_menu
from .dialogs import get_builder, get_message, show_dialog, DialogType
from .uicommons import Gtk, Gdk, GLib, UI_RESOURCES_PATH, Page, Column, KeyboardKey, IS_GNOME_SESSION
from .uicommons import Gtk, Gdk, GLib, UI_RESOURCES_PATH, Page, Column, KeyboardKey, IS_GNOME_SESSION, MOD_MASK
from ..commons import run_idle, log
from ..connections import HttpAPI
from ..eparser.ecommons import BqServiceType
@@ -170,7 +171,10 @@ class TimerTool(Gtk.Box):
return "&".join(args)
def on_timer_begins_set(self, action, value=None):
self.set_begins_date(self.get_begins_date())
b_date = self.get_begins_date()
if b_date > self.get_ends_date():
self.set_ends_date(b_date + timedelta(hours=1))
self.set_begins_date(b_date)
def on_timer_ends_set(self, action, value=None):
self.set_ends_date(self.get_ends_date())
@@ -290,11 +294,14 @@ class TimerTool(Gtk.Box):
"on_timer_cursor_changed": self.on_timer_cursor_changed,
"on_timers_drag_data_received": self.on_timers_drag_data_received}
builder = get_builder(f"{UI_RESOURCES_PATH}timers.glade", handlers, objects=("timers_frame", "timer_model"))
builder = get_builder(f"{UI_RESOURCES_PATH}timers.glade", handlers,
objects=("timers_frame", "timer_model", "popup_menu", "popup_menu_add_image"))
self._view = builder.get_object("timer_view")
self._remove_button = builder.get_object("timer_remove_button")
self._remove_button.bind_property("sensitive", builder.get_object("timer_edit_button"), "sensitive")
self._remove_button.bind_property("sensitive", builder.get_object("edit_menu_item"), "sensitive")
self._remove_button.bind_property("sensitive", builder.get_object("remove_menu_item"), "sensitive")
self._info_button = builder.get_object("timer_info_check_button")
self._info_button.bind_property("active", builder.get_object("timer_info_frame"), "visible")
self._info_enabled_switch = builder.get_object("timer_info_enabled_switch")
@@ -446,9 +453,11 @@ class TimerTool(Gtk.Box):
self._app.send_http_request(HttpAPI.Request.TIMER, ref, callback)
yield True
def on_timers_press(self, view, event):
if event.get_event_type() == Gdk.EventType.DOUBLE_BUTTON_PRESS and len(view.get_model()) > 0:
def on_timers_press(self, menu, event):
if event.get_event_type() == Gdk.EventType.DOUBLE_BUTTON_PRESS and len(self._view.get_model()) > 0:
self.on_timer_edit()
else:
on_popup_menu(menu, event)
def on_timers_key_press(self, view, event):
key_code = event.hardware_keycode
@@ -456,8 +465,14 @@ class TimerTool(Gtk.Box):
return
key = KeyboardKey(key_code)
ctrl = event.state & MOD_MASK
if key is KeyboardKey.DELETE:
self.on_timer_remove()
elif key is KeyboardKey.INSERT:
self.on_timer_add()
elif ctrl and key is KeyboardKey.E:
self.on_timer_edit()
def on_timer_cursor_changed(self, view):
path, column = view.get_cursor()