/// <summary> /// Make this our new current item... /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void m_comboboxCloudApiRoot_SelectedIndexChanged(object sender, EventArgs e) { ComboBox combobox = (ComboBox)sender; CloudManager.SetCloudApiRoot(combobox.Text); LoadRegisteredCloudDevices(); CloudManager.CloudInfo cloudinfo = CloudManager.GetCurrentCloudInfo(); m_checkboxStartNpm.Enabled = ((cloudinfo != null) && !string.IsNullOrEmpty(cloudinfo.szTwainCloudExpressFolder) && Directory.Exists(cloudinfo.szTwainCloudExpressFolder)); }
/// <summary> /// If we need an 'npm start' process, start it up... /// </summary> /// <param name="a_blForceRestart">close the outstanding npm</param> /// <returns>true if things went well</returns> private bool StartNpmIfNeeded(bool a_blForceRestart) { // Remove anything from the past... if (a_blForceRestart) { Cleanup(); } // We already have one, stick with it... else if (m_processNpm != null) { return(true); } // Get our local cloud info... CloudManager.CloudInfo cloudinfo = CloudManager.GetCurrentCloudInfo(); if (cloudinfo == null) { return(true); } // If we don't have a working directory, we're done... if (string.IsNullOrEmpty(cloudinfo.szTwainCloudExpressFolder) || !Directory.Exists(cloudinfo.szTwainCloudExpressFolder)) { return(true); } // Okay, fortune favors the bold (or the complete nutters)... try { if (m_displaycallback != null) { m_displaycallback(Config.GetResource(m_resourcemanager, "strTextStartNpm")); } ProcessStartInfo processstartinfo = new ProcessStartInfo(); processstartinfo.UseShellExecute = true; processstartinfo.FileName = "npm"; processstartinfo.Arguments = "start"; processstartinfo.WorkingDirectory = cloudinfo.szTwainCloudExpressFolder; processstartinfo.WindowStyle = ProcessWindowStyle.Minimized; m_processNpm = Process.Start(processstartinfo); Thread.Sleep((int)Config.Get("npmWaitForStart", 15000)); } catch (Exception exception) { if (m_displaycallback != null) { m_displaycallback(Config.GetResource(m_resourcemanager, "strTextNpmFailed") + " - " + exception.Message); } Log.Error("npi start launch failed - " + exception.Message); Cleanup(); } // All done... return(true); }
/// <summary> /// Bring up the cloud console... /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void m_buttonManageCloud_Click(object sender, EventArgs e) { StartNpmIfNeeded(false); CloudManager.CloudInfo cloudinfo = CloudManager.GetCurrentCloudInfo(); if ((cloudinfo != null) && !string.IsNullOrEmpty(cloudinfo.szManager)) { Process.Start(cloudinfo.szManager); } else { MessageBox.Show(Config.GetResource(m_resourcemanager, "errNoCloudManager"), Config.GetResource(m_resourcemanager, "strFormScanTitle")); } }
/// <summary> /// Which device have we selected? /// </summary> /// <returns>the one we've selected</returns> public Dnssd.DnssdDeviceInfo GetSelectedDevice() { int ii; // Handle TWAIN Cloud... if (m_listviewSelect.SelectedIndices.Count > 0) { var item = m_listviewSelect.SelectedItems[0]; var scanner = (ScannerInformation)item.Tag; if (scanner != null) { string szUrl = CloudManager.GetScannerCloudUrl(scanner); CloudManager.CloudInfo cloudinfo = CloudManager.GetCurrentCloudInfo(); Dnssd.DnssdDeviceInfo dnssddeviceinfo = new Dnssd.DnssdDeviceInfo(); dnssddeviceinfo.SetTxtHttps(cloudinfo.szUseHttps == "yes"); dnssddeviceinfo.SetLinkLocal(szUrl); dnssddeviceinfo.SetCloud(true); return(dnssddeviceinfo); } } // Handle TWAIN Local... // Make a note of our current selection, if we have one, we expect our // snapshot to exactly match what we have in the list, including the // order of the data... m_dnssddeviceinfoSelected = null; if (m_ldnssddeviceinfoCompare != null) { for (ii = 0; ii < m_listviewSelect.Items.Count; ii++) { if (m_listviewSelect.Items[ii].Selected) { m_dnssddeviceinfoSelected = m_ldnssddeviceinfoCompare[ii]; break; } } } // Return what we found... return(m_dnssddeviceinfoSelected); }