mirror of
https://github.com/fspc/gbootroot.git
synced 2025-04-04 07:43:22 -04:00
The search box is built. There are unitialized values oocurring in the main
Gtk loop when looking at signal types, but the start if the basic infrastructure is there.
This commit is contained in:
parent
f1253fb29e
commit
92d86afc80
@ -41,6 +41,7 @@ my($filename,$filesystem_size,$kernel,$template_dir,$template,$tmp,$mnt);
|
||||
my ($text, $changed_text, $changed_text_from_template);
|
||||
my $save_as;
|
||||
my ($replacements_window, $filesystem_window, $path_window, $shortcut);
|
||||
my $search_window;
|
||||
my $Shortcuts;
|
||||
my @entry;
|
||||
my $file_dialog;
|
||||
@ -145,6 +146,12 @@ my @menu_items = ( { path => '/File',
|
||||
callback => \&file_system },
|
||||
{ path => '/Edit/Replacements',
|
||||
callback => \&Replacements },
|
||||
{ path => '/Edit/edit_separator',
|
||||
type => '<Separator>' },
|
||||
{ path => '/Edit/_Search in Page',
|
||||
accelerator => '<alt>S',
|
||||
callback => \&search },
|
||||
|
||||
|
||||
{ path => '/_Create',
|
||||
type => '<Branch>' },
|
||||
@ -1097,14 +1104,129 @@ sub saved {
|
||||
|
||||
} # end sub saved
|
||||
|
||||
sub print_hello {
|
||||
my ($menu_item, $action, $date) = @_;
|
||||
|
||||
$menu_item->set_active($true);
|
||||
print $menu_item;
|
||||
# rindex and index makes things easy
|
||||
sub search {
|
||||
|
||||
if (not defined $search_window) {
|
||||
|
||||
$search_window = Gtk::Window->new("toplevel");
|
||||
$search_window->signal_connect("destroy", \&destroy_window,
|
||||
\$search_window);
|
||||
$search_window->signal_connect("delete_event", \&destroy_window,
|
||||
\$search_window);
|
||||
$search_window->signal_connect("key_press_event", sub {
|
||||
my $event = pop @_;
|
||||
if ($event->{'keyval'}) {
|
||||
$search_window->destroy if $event->{'keyval'} == 65307;
|
||||
}
|
||||
},
|
||||
);
|
||||
$search_window->set_policy( $true, $true, $false );
|
||||
$search_window->set_title( "gBootRoot: Search" );
|
||||
$search_window->border_width(1);
|
||||
$search_window->set_position('mouse');
|
||||
|
||||
my $main_vbox = Gtk::VBox->new( $false, 0 );
|
||||
$search_window->add( $main_vbox );
|
||||
$main_vbox->show();
|
||||
|
||||
my $table_search = Gtk::Table->new( 4, 3, $true );
|
||||
$main_vbox->pack_start( $table_search, $true, $true, 0 );
|
||||
$table_search->show();
|
||||
|
||||
#_______________________________________
|
||||
# Search keywords
|
||||
label("Search:",0,1,0,1,$table_search);
|
||||
my $search1 = entry(1,3,0,1,0,$table_search);
|
||||
$search1->set_text(""); # if defined $search;
|
||||
|
||||
|
||||
}
|
||||
#_______________________________________
|
||||
# Case Sensitive
|
||||
|
||||
my $case_sensitive = new Gtk::CheckButton("Case Sensitive");
|
||||
$table_search->attach($case_sensitive,1,2,1,2,
|
||||
['shrink','fill','expand'],['fill','shrink'],0,0);
|
||||
$case_sensitive->show();
|
||||
|
||||
#$case_sensitive->signal_connect("clicked", \&which_stage, "check");
|
||||
|
||||
|
||||
#_______________________________________
|
||||
# Search Backwards
|
||||
|
||||
my $search_backwards = new Gtk::CheckButton("Search Backwards");
|
||||
$table_search->attach($search_backwards,2,3,1,2,
|
||||
['shrink','fill','expand'],['fill','shrink'],0,0);
|
||||
$search_backwards->show();
|
||||
|
||||
#_______________________________________
|
||||
# Separator
|
||||
my $separator = new Gtk::HSeparator();
|
||||
$table_search->attach($separator,0,3,2,3,
|
||||
['shrink','fill','expand'],['fill','shrink'],0,0);
|
||||
$separator->show();
|
||||
|
||||
#_______________________________________
|
||||
# Search button
|
||||
my ($keywords, $old_keywords, $offset);
|
||||
my $submit_b = button(0,1,3,4,"Search",$table_search);
|
||||
$search1->signal_connect("key_press_event", sub {
|
||||
my $event = pop @_;
|
||||
if ($event->{'keyval'} == 65293) {
|
||||
$submit_b->clicked();
|
||||
}
|
||||
});
|
||||
$submit_b->can_default(1);
|
||||
$search_window->set_default($submit_b);
|
||||
$submit_b->grab_default;
|
||||
$submit_b->signal_connect( "clicked", sub {
|
||||
my $keywords = $search1->get_text();
|
||||
|
||||
# There may be numbers, ofcourse.
|
||||
if ($keywords && $keywords ne $old_keywords) {
|
||||
undef $offset;
|
||||
}
|
||||
|
||||
# rindex
|
||||
if ($search_backwards->active) {
|
||||
|
||||
}
|
||||
else {
|
||||
if (!$offset) {
|
||||
$offset = index($changed_text_from_template, $keywords);
|
||||
}
|
||||
else {
|
||||
$offset = $offset + 1;
|
||||
$offset = index($changed_text_from_template, $keywords,
|
||||
$offset);
|
||||
}
|
||||
print "$offset\n" if $offset;
|
||||
|
||||
}
|
||||
$old_keywords = $keywords;
|
||||
|
||||
} );
|
||||
|
||||
#_______________________________________
|
||||
# Cancel button
|
||||
my $close_b = button(2,3,3,4,"Cancel",$table_search);
|
||||
$close_b->signal_connect("clicked",
|
||||
sub {
|
||||
$search_window->destroy()
|
||||
if $search_window;
|
||||
} );
|
||||
|
||||
}
|
||||
if (!visible $search_window) {
|
||||
$search_window->show();
|
||||
} else {
|
||||
$search_window->destroy;
|
||||
}
|
||||
|
||||
|
||||
} # end sub search
|
||||
|
||||
sub yard_menu {
|
||||
|
||||
@ -1332,6 +1454,8 @@ Motion Shortcuts
|
||||
Ctrl-F Forward one character
|
||||
Alt-B Backward one word
|
||||
Alt-F Forward one word
|
||||
Ctrl-Home Beginning of buffer
|
||||
Ctrl-End End of buffer
|
||||
|
||||
Editing Shortcuts
|
||||
|
||||
@ -1347,6 +1471,10 @@ Selection Shortcuts
|
||||
Ctrl-X Cut to clipboard
|
||||
Ctrl-C Copy to clipboard
|
||||
Ctrl-V Paste from clipboard
|
||||
|
||||
Searching Shortcuts
|
||||
|
||||
Alt-S
|
||||
SHORTCUTS
|
||||
|
||||
sub path {
|
||||
|
Loading…
x
Reference in New Issue
Block a user