Improved alert message setup
This commit is contained in:
parent
96f3ba0735
commit
f78cd5fdf1
@ -604,6 +604,12 @@ PyFM is developed on Atom, git, and using Python 3+ with Gtk GObject introspecti
|
|||||||
</object>
|
</object>
|
||||||
</child>
|
</child>
|
||||||
</object>
|
</object>
|
||||||
|
<object class="GtkImage" id="image1">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can-focus">False</property>
|
||||||
|
<property name="stock">gtk-justify-center</property>
|
||||||
|
</object>
|
||||||
|
<object class="GtkTextBuffer" id="message_buffer"/>
|
||||||
<object class="GtkImage" id="open_with_img">
|
<object class="GtkImage" id="open_with_img">
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
<property name="can-focus">False</property>
|
<property name="can-focus">False</property>
|
||||||
@ -940,6 +946,29 @@ PyFM is developed on Atom, git, and using Python 3+ with Gtk GObject introspecti
|
|||||||
</child>
|
</child>
|
||||||
</object>
|
</object>
|
||||||
</child>
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkMenuItem">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can-focus">False</property>
|
||||||
|
<property name="label" translatable="yes">Debug</property>
|
||||||
|
<child type="submenu">
|
||||||
|
<object class="GtkMenu">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can-focus">False</property>
|
||||||
|
<child>
|
||||||
|
<object class="GtkImageMenuItem">
|
||||||
|
<property name="label">Show Errors</property>
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can-focus">False</property>
|
||||||
|
<property name="image">image1</property>
|
||||||
|
<property name="use-stock">False</property>
|
||||||
|
<signal name="button-release-event" handler="show_messages_popup" swapped="no"/>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
</object>
|
</object>
|
||||||
<packing>
|
<packing>
|
||||||
<property name="expand">True</property>
|
<property name="expand">True</property>
|
||||||
@ -1390,16 +1419,28 @@ PyFM is developed on Atom, git, and using Python 3+ with Gtk GObject introspecti
|
|||||||
<object class="GtkPopover" id="message_widget">
|
<object class="GtkPopover" id="message_widget">
|
||||||
<property name="width-request">320</property>
|
<property name="width-request">320</property>
|
||||||
<property name="can-focus">False</property>
|
<property name="can-focus">False</property>
|
||||||
|
<property name="hexpand">True</property>
|
||||||
<property name="relative-to">controll_box</property>
|
<property name="relative-to">controll_box</property>
|
||||||
<property name="position">bottom</property>
|
<property name="position">bottom</property>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkLabel" id="message_label">
|
<object class="GtkScrolledWindow">
|
||||||
|
<property name="height-request">600</property>
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
<property name="can-focus">False</property>
|
<property name="can-focus">True</property>
|
||||||
<property name="justify">center</property>
|
<property name="hexpand">True</property>
|
||||||
<attributes>
|
<property name="shadow-type">in</property>
|
||||||
<attribute name="scale" value="2"/>
|
<property name="overlay-scrolling">False</property>
|
||||||
</attributes>
|
<child>
|
||||||
|
<object class="GtkTextView" id="message_view">
|
||||||
|
<property name="name">message_view</property>
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can-focus">True</property>
|
||||||
|
<property name="hexpand">True</property>
|
||||||
|
<property name="editable">False</property>
|
||||||
|
<property name="cursor-visible">False</property>
|
||||||
|
<property name="buffer">message_buffer</property>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
</object>
|
</object>
|
||||||
</child>
|
</child>
|
||||||
</object>
|
</object>
|
||||||
|
@ -31,6 +31,9 @@ treeview.view,
|
|||||||
color: rgba(255, 255, 255, 0.5);;
|
color: rgba(255, 255, 255, 0.5);;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#message_view {
|
||||||
|
font: 16px "Monospace";
|
||||||
|
}
|
||||||
|
|
||||||
/* Rubberband coloring */
|
/* Rubberband coloring */
|
||||||
/* .rubberband,
|
/* .rubberband,
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
# Python imports
|
# Python imports
|
||||||
import threading, subprocess, signal, inspect, os, time
|
import sys, traceback, threading, subprocess, signal, inspect, os, time
|
||||||
|
|
||||||
# Gtk imports
|
# Gtk imports
|
||||||
import gi
|
import gi
|
||||||
@ -21,6 +21,7 @@ def threaded(fn):
|
|||||||
class Controller(Controller_Data, ShowHideMixin, KeyboardSignalsMixin, WidgetFileActionMixin, \
|
class Controller(Controller_Data, ShowHideMixin, KeyboardSignalsMixin, WidgetFileActionMixin, \
|
||||||
PaneMixin, WindowMixin):
|
PaneMixin, WindowMixin):
|
||||||
def __init__(self, args, unknownargs, _settings):
|
def __init__(self, args, unknownargs, _settings):
|
||||||
|
sys.excepthook = self.my_except_hook
|
||||||
self.settings = _settings
|
self.settings = _settings
|
||||||
self.setup_controller_data()
|
self.setup_controller_data()
|
||||||
|
|
||||||
@ -63,12 +64,22 @@ class Controller(Controller_Data, ShowHideMixin, KeyboardSignalsMixin, WidgetFil
|
|||||||
print(repr(e))
|
print(repr(e))
|
||||||
|
|
||||||
|
|
||||||
|
def my_except_hook(self, exctype, value, _traceback):
|
||||||
|
trace = ''.join(traceback.format_tb(_traceback))
|
||||||
|
data = f"Exectype: {exctype} <--> Value: {value}\n\n{trace}\n\n\n\n"
|
||||||
|
start_itr = self.message_buffer.get_start_iter()
|
||||||
|
self.message_buffer.place_cursor(start_itr)
|
||||||
|
self.display_message(self.error, data)
|
||||||
|
# print "Handler code goes here"
|
||||||
|
# else:
|
||||||
|
# sys.__excepthook__(exctype, value, traceback)
|
||||||
|
|
||||||
|
def display_message(self, type, text, seconds=None):
|
||||||
def display_message(self, type, text, seconds=3):
|
# markup = "<span foreground='" + type + "'>" + text + "</span>"
|
||||||
markup = "<span foreground='" + type + "'>" + text + "</span>"
|
# self.message_label.set_markup(markup)
|
||||||
self.message_label.set_markup(markup)
|
self.message_buffer.insert_at_cursor(text)
|
||||||
self.message_widget.popup()
|
self.message_widget.popup()
|
||||||
|
if seconds:
|
||||||
self.hide_message_timeout(seconds)
|
self.hide_message_timeout(seconds)
|
||||||
|
|
||||||
@threaded
|
@threaded
|
||||||
|
@ -23,7 +23,8 @@ class Controller_Data:
|
|||||||
self.window3 = self.builder.get_object("window_3")
|
self.window3 = self.builder.get_object("window_3")
|
||||||
self.window4 = self.builder.get_object("window_4")
|
self.window4 = self.builder.get_object("window_4")
|
||||||
self.message_widget = self.builder.get_object("message_widget")
|
self.message_widget = self.builder.get_object("message_widget")
|
||||||
self.message_label = self.builder.get_object("message_label")
|
self.message_view = self.builder.get_object("message_view")
|
||||||
|
self.message_buffer = self.builder.get_object("message_buffer")
|
||||||
|
|
||||||
self.bottom_size_label = self.builder.get_object("bottom_size_label")
|
self.bottom_size_label = self.builder.get_object("bottom_size_label")
|
||||||
self.bottom_file_count_label = self.builder.get_object("bottom_file_count_label")
|
self.bottom_file_count_label = self.builder.get_object("bottom_file_count_label")
|
||||||
|
@ -9,7 +9,10 @@ from gi.repository import Gtk
|
|||||||
|
|
||||||
|
|
||||||
class ShowHideMixin:
|
class ShowHideMixin:
|
||||||
def show_about_page(self, widget, eve):
|
def show_messages_popup(self, type, text, seconds=None):
|
||||||
|
self.message_widget.popup()
|
||||||
|
|
||||||
|
def show_about_page(self, widget=None, eve=None):
|
||||||
about_page = self.builder.get_object("about_page")
|
about_page = self.builder.get_object("about_page")
|
||||||
response = about_page.run()
|
response = about_page.run()
|
||||||
if response == -4:
|
if response == -4:
|
||||||
|
@ -248,9 +248,7 @@ class WidgetFileActionMixin:
|
|||||||
if not state:
|
if not state:
|
||||||
raise GObject.GError("Failed to perform requested dir/file action!")
|
raise GObject.GError("Failed to perform requested dir/file action!")
|
||||||
except GObject.GError as e:
|
except GObject.GError as e:
|
||||||
if debug:
|
raise OSError(e)
|
||||||
print(repr(e))
|
|
||||||
self.display_message(self.error, f"{e.message}")
|
|
||||||
|
|
||||||
def preprocess_paths(self, paths):
|
def preprocess_paths(self, paths):
|
||||||
if not isinstance(paths, list):
|
if not isinstance(paths, list):
|
||||||
|
Loading…
Reference in New Issue
Block a user