Skip to content

Commit

Permalink
embed popwindow code in activitychooser
Browse files Browse the repository at this point in the history
  • Loading branch information
rhl-bthr authored and quozl committed Jan 19, 2019
1 parent 88b0a08 commit 61d851e
Show file tree
Hide file tree
Showing 2 changed files with 87 additions and 13 deletions.
87 changes: 75 additions & 12 deletions src/jarabe/desktop/activitychooser.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,23 +16,50 @@

import logging

from gi.repository import GObject
from gi.repository import GLib
from gettext import gettext as _
from gi.repository import Gtk
from gi.repository import Gdk
from gi.repository import GObject

from sugar3.graphics import style
from sugar3.graphics.popwindow import PopWindow
from sugar3.activity import activityfactory
from sugar3.graphics import iconentry
from sugar3.graphics import style
from sugar3.graphics.toolbutton import ToolButton

from jarabe.model import shell
from jarabe.desktop.activitieslist import ActivitiesList
from jarabe.util.normalize import normalize_string


class TitleBox(Gtk.Toolbar):
def __init__(self):
Gtk.Toolbar.__init__(self)

self.close_button = ToolButton(icon_name='dialog-cancel')
self.close_button.set_tooltip(_('Close'))
self.insert(self.close_button, -1)
self.close_button.show()

self._label = Gtk.Label()
self._label.set_alignment(0, 0.5)

tool_item = Gtk.ToolItem()
tool_item.set_expand(True)
tool_item.add(self._label)
self._label.show()
self.insert(tool_item, 0)
tool_item.show()

def set_title(self, title):
self._label.set_markup('<b>%s</b>' % title)
self._label.show()


_AUTOSEARCH_TIMEOUT = 1000


class ActivityChooser(PopWindow):
class ActivityChooser(Gtk.Window):

__gtype_name__ = 'ActivityChooser'

Expand All @@ -43,16 +70,37 @@ class ActivityChooser(PopWindow):
}

def __init__(self):
logging.debug('In the Object Chooser class init hehehe')
PopWindow.__init__(self)
width, height = self.HALF_WIDTH

self.set_size((width*3/2, height*2/3))
Gtk.Window.__init__(self)

self.set_decorated(False)
self.set_position(Gtk.WindowPosition.CENTER_ALWAYS)
self.set_border_width(style.LINE_WIDTH)
self.set_resizable(False)
self.set_modal(True)
self.set_can_focus(True)

self._vbox = Gtk.Box(orientation=Gtk.Orientation.VERTICAL)
self.add(self._vbox)
self._vbox.show()

self._title_box = TitleBox()
self._title_box.close_button.connect(
'clicked',
self.__close_button_clicked_cb)
self._title_box.set_size_request(-1, style.GRID_CELL_SIZE)

self._vbox.pack_start(self._title_box, False, True, 0)
self._title_box.show()

self.set_size_request((Gdk.Screen.height() - style.GRID_CELL_SIZE * 3)*3/4,
(Gdk.Screen.height() - style.GRID_CELL_SIZE * 2)*2/3)
self.connect('key-press-event', self.__key_press_event_cb)
self.connect('realize', self.__realize_cb)

self._list_view = ActivitiesList()

self.search_bar = SearchBar()
self.get_vbox().pack_start(self.search_bar, False, False, 0)
self._vbox.pack_start(self.search_bar, False, False, 0)
self.search_bar.connect('query-changed',
self.__toolbar_query_changed_cb)
self.search_bar.search_entry.connect('key-press-event',
Expand All @@ -64,7 +112,7 @@ def __init__(self):

self._scrolled_window.add(self._list_view)

self.get_vbox().pack_start(self._scrolled_window, True, True, 0)
self._vbox.pack_start(self._scrolled_window, True, True, 0)

self._list_view.show()
self._list_view.connect('clear-clicked',
Expand Down Expand Up @@ -101,6 +149,17 @@ def __init__(self):

self.show()

def __close_button_clicked_cb(self, button):
self.destroy()

def __realize_cb(self, widget):
shell.get_model().push_modal()
self.set_type_hint(Gdk.WindowTypeHint.DIALOG)
window = self.get_window()
window.set_accept_focus(True)
shell.get_model().push_modal()


def __toolbar_query_changed_cb(self, toolbar, query):
self._query = normalize_string(query.decode('utf-8'))
self._list_view.set_filter(self._query)
Expand All @@ -125,6 +184,10 @@ def __toolbar_query_changed_cb(self, toolbar, query):
toolbar.search_entry.select_region(pos, -1)

def __key_press_event_cb(self, widget, event):
keyname = Gdk.keyval_name(event.keyval)
if keyname == 'Escape':
self.destroy()

if not self.search_bar.search_entry.has_focus():
self.search_bar.search_entry.grab_focus()

Expand All @@ -146,7 +209,7 @@ def __activitylist_clear_clicked_cb(self, list_view, toolbar):
toolbar.clear_query()

def set_title(self, text):
self.get_title_box().set_title(text)
self._title_box.set_title(text)

def _got_row_tree_view(self, row):
bundle_id = row[self.tree_view._model.column_bundle_id]
Expand Down
13 changes: 12 additions & 1 deletion src/jarabe/journal/journalactivity.py
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@
from jarabe.journal.journalwindow import JournalWindow
from jarabe.journal.bundlelauncher import launch_bundle, get_bundle

from jarabe.model import session
from jarabe.model import session, shell

from sugar3.graphics import style

Expand Down Expand Up @@ -360,7 +360,18 @@ def __add_project_activate_cb(self, bar, title):
activity_id=None, project_metadata=None)

def __add_new_activate_cb(self, bar, title):
shell_model = shell.get_model()
activity = shell_model.get_active_activity()
if activity.has_shell_window():
return

if shell.get_model().has_modal():
return

chooser = ActivityChooser()
activity.push_shell_window(chooser)
chooser.connect('hide', activity.pop_shell_window)

text = _("Choose an activity to start '%s' with") % title
chooser.set_title(text)
chooser.connect('activity-selected',
Expand Down

0 comments on commit 61d851e

Please sign in to comment.