chiark / gitweb /
fconfigure stdin -blocking yes right at the start of required
[ypp-sc-tools.db-test.git] / pctb / pages.c
index 17ec836c0729d2e6c71a29322507b6c7f393413e..dfa9108537bbf7b5a9c19d507a443f6caa13851c 100644 (file)
@@ -152,6 +152,19 @@ static void send_key(KeySym sym) {
   XTestFakeKeyEvent(disp, keycode(sym),1, 10);
   XTestFakeKeyEvent(disp, keycode(sym),0, 10);
 }
+static void mouse_1_updown_here(void) {
+  check_not_disturbed();
+  XTestFakeButtonEvent(disp,1,1, 50);
+  XTestFakeButtonEvent(disp,1,0, 50);
+}
+static void mouse_1_updown(int x, int y) {
+  check_not_disturbed();
+  int screen= XScreenNumberOfScreen(attr.screen);
+  int xpos, ypos;
+  translate_coords_toroot(x,y, &xpos,&ypos);
+  XTestFakeMotionEvent(disp, screen, xpos,ypos, 0);
+  mouse_1_updown_here();
+}
 
 static int pgupdown;
 
@@ -310,20 +323,14 @@ static void raise_and_get_details(void) {
   check_client_window_all_on_screen();
 }
 
-static void set_focus(void) {
+static void set_focus_commodity(void) {
   int screen= XScreenNumberOfScreen(attr.screen);
 
   progress("taking control of YPP client window...");
 
   debugf("PAGING set_focus\n");
 
-  int xpos, ypos;
-  translate_coords_toroot(160,160, &xpos,&ypos);
-  XTestFakeMotionEvent(disp,screen, xpos,ypos, 0);
-
-  XTestFakeButtonEvent(disp,1,1, 50);
-  XTestFakeButtonEvent(disp,1,0, 50);
-
+  mouse_1_updown(160,160);
   sync_after_input();
 
   delay(0.5);
@@ -333,6 +340,7 @@ static void set_focus(void) {
                        FocusChangeMask
                        ) );
 
+  int xpos,ypos;
   translate_coords_toroot(10,10, &xpos,&ypos);
   XTestFakeMotionEvent(disp,screen, xpos,ypos, 0);
 
@@ -402,20 +410,38 @@ static CanonImage *convert_page(Snapshot *sn, RgbImage *ri) {
   return im;
 }
 
-void take_screenshots(void) {
-  Snapshot *current=0, *last=0;
+static void prepare_ypp_client(void) {
   CanonImage *test;
-
+  Snapshot *current=0;
+  
   /* find the window and check it's on the right kind of screen */
   raise_and_get_details();
   wait_for_stability(&current,0,0, "checking current YPP client screen...");
   test= convert_page(current, 0);
-  find_structure_commod(test, &max_relevant_y);
+  find_structure(test, &max_relevant_y);
   check_correct_commodities();
   free(test);
+  free_snapshot(&current);
+
+  progress("requesting status information...");
+  mouse_1_updown(250, wheight-10);
+  mouse_1_updown_here();
+  mouse_1_updown_here();
+  XSync(disp,False);
+  check_not_disturbed();
+  send_key(XK_slash);
+  send_key(XK_w);
+  send_key(XK_Return);
+  sync_after_input();
+}
 
+void take_screenshots(void) {
+  Snapshot *current=0, *last=0;
+
+  prepare_ypp_client();
+  
   /* page to the top - keep pressing page up until the image stops changing */
-  set_focus();
+  set_focus_commodity();
   wait_for_stability(&current,0, send_pgup_many,
                     "paging up to top of commodity list...");
 
@@ -454,11 +480,10 @@ void take_screenshots(void) {
 
 void take_one_screenshot(void) {
   Snapshot *current=0;
-  
-  raise_and_get_details();
-  sync_after_input();
+
+  prepare_ypp_client();
   wait_for_stability(&current,0,0, "taking screenshot...");
-  //page0_rgbimage= alloc_rgb_image(sn->width, sn->height);
+  page0_rgbimage= alloc_rgb_image(current->width, current->height);
   page_images[0]= convert_page(current, 0);
   npages= 1;
   progress_log("collected single screenshot.");